📜  如何在 MATLAB 中使用直方图均衡执行对比度增强?

📅  最后修改于: 2022-05-13 01:55:41.216000             🧑  作者: Mango

如何在 MATLAB 中使用直方图均衡执行对比度增强?

图像增强是一种方式 加强 照片/图像对人类观众图像处理设备性能的外观图像增强策略 或许 分为空间区域频率区域 _5个 空间域中图像增强算法  FPGA技术的使用

这些算法如下:

  • 中值滤波器
  • 对比拉伸_
  • 直方图均衡
  • 消极的 图像变换
  • 变换

几个 导致缺乏增强原因

  • 使用的成像设备质量差
  • 缺乏运算符信息
  • 不利 外部的 条件环境 条件 捕获时。

图像增强有两种方法:

  • 去噪
  • 对比度增强

在本文中,我们将看到使用直方图均衡化的对比度增强。直方图均衡是一种扩大直方图动态范围的数学技术。有时直方图跨越一个短范围。

图:直方图均衡化过程

脚步:

  • 找出在直方图的水平轴上表示的每个值的频率,即图像中的强度。
  • 计算每个强度值的概率密度函数。
  • 找到 PDF 后,计算每个强度频率的累积密度函数。
  • CDF 值在 0-1 范围内,因此我们将所有 CDF 值乘以强度的最大值,即 255。
  • 将最终值四舍五入为整数值。

使用的函数:

  • imread( ) 是用于读取图像的内置函数。
  • size( ) 是用于获取图像大小的内置函数。
  • rgb2gray( ) 是用于将 RGB 图像转换为灰度图像的内置函数。
  • zeros(row, col) 是用于创建 row*col 零矩阵的内置函数。
  • unit8( ) 是用于将双精度值转换为整数格式的内置函数。
  • imshow() 是用于显示图像的内置函数。
  • title( ) 是用于将标题附加到图像的内置函数。
  • pause( ) 是用于暂停系统执行下一条语句的内置函数。

例子:

Matlab
% MATLAB code for Histogram equalisation
% function to return resultant
% image: Apply on single channel only.
function new_img=myhisteq(img)
Freq=zeros(1,256);
[x,y,z]=size(img);
  
% Convert into grayscale if 
% image is coloured.
if(z==3)
    img=rgb2gray(img);
end
  
% Calculate frequency of each
% intensity value.
for i=1:x
    for j=1:y
        Freq(img(i,j)+1)=Freq(img(i,j)+1)+1;
    end
end
  
% Calculate PDF for each intensity value.
PDF=zeros(1,256);
Total=x*y;
for i=1:256
    PDF(i)=Freq(i)/Total;
end
  
% Calculate the CDF for each intensity value.
CDF=zeros(1,256);
CDF(1)=PDF(1);
for i=2:256
    CDF(i)=CDF(i-1)+PDF(i);
end
  
% Multiply by Maximum intensity value
% and round off the result.
Result=zeros(1,256);
for i=1:256
    Result(i)=uint8(CDF(i)*(255));
end
  
% Compute the new image.
mat=zeros(size(img));
for i=1:x
    for j=1:y
        mat(i,j)=Result(img(i,j)+1);
    end
end
    
new_img=mat;
imshow(img, []);
caption = sprintf("Original input Image");
title(caption, 'FontSize', 14);
drawnow;
pause(5);
imshow(new_img, []);
caption = sprintf("Original output Image");
title(caption, 'FontSize', 14);
drawnow;
end
  
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Utility Code
k=imread("poor_contrast_image.png");
myhisteq(k);


输出:

直方图均衡是一个伟大的 图像增强方法提供更好 图像质量_  没有 缺乏任何信息。此方法全局应用直方图均衡。我们也可以在图像的小块中应用这种方法以增强对比度。该技术称为自适应直方图均衡。 AHE 比简单的 HE 更有效。