灰度直方图均衡化
灰度直方图均衡化
在计算机视觉和图像处理领域中,图像预处理起着重要的作用,其预处理效果直接影响整个 系统性能。图像预处理主要包括图像增强、滤波处理、边缘检测、旋转、变换等。
灰度直方图均衡化,在图像识别的过程中,增加灰度对比度可以突出图像重要的特征,直方图均衡化是通过改变每个灰度级上像素点分布,使其都具有相同的象素点数,目的是使图像在整个灰度值动态变化范围内分布均匀化,改善图像的亮度分布状态,增强图像的视觉效果。均衡化的原理是根据熵理论,可知当 H(0),H(1), …,H(n-1)相等时,图像信息量最大。
灰度直方图均衡化matlab算法实现:
在计算机视觉和图像处理领域中,图像预处理起着重要的作用,其预处理效果直接影响整个 系统性能。图像预处理主要包括图像增强、滤波处理、边缘检测、旋转、变换等。
灰度直方图均衡化,在图像识别的过程中,增加灰度对比度可以突出图像重要的特征,直方图均衡化是通过改变每个灰度级上像素点分布,使其都具有相同的象素点数,目的是使图像在整个灰度值动态变化范围内分布均匀化,改善图像的亮度分布状态,增强图像的视觉效果。均衡化的原理是根据熵理论,可知当 H(0),H(1), …,H(n-1)相等时,图像信息量最大。
灰度直方图均衡化matlab算法实现:
clear all
I=imread('2.jpg'); %读入JPG彩色图像文件
imshow(I) %显示出来
title('输入的彩色JPG图像')
I_gray = rgb2gray(I); %灰度化后的数据存入数组
imwrite(I_gray,'1_gray.bmp'); %保存灰度图像
figure,imshow(I_gray);
title('灰度图')
[height,width]=size(I_gray); %测量图像尺寸参数
p1=zeros(1,256); %预创建存放灰度出现频率的向量
for i=1:height
for j=1:width
p1(I_gray(i,j) + 1) = p1(I_gray(i,j) + 1) + 1;%因为MATLAB下标是从1开始,所以0灰度对应在下标为1处
end
end
s=zeros(1,256);
s(1)=p1(1);
for i=2:256
s(i)=p1(i) + s(i-1); %累计直方图
end
for i=1:256
s(i) = s(i)*256/(width*height); %求灰度映射函数
if s(i) > 256
s(i) = 256;
end
end
%图像均衡化
I_equal = I;
for i=1:height
for j=1:width
I_equal(i,j) = s( I(i,j) + 1);
end
end
p2=zeros(1,256); %预创建存放灰度出现频率的向量
for i=1:height
for j=1:width
p2(I_equal(i,j) + 1) = p2(I_equal(i,j) + 1) + 1;%因为MATLAB下标是从1开始,所以0灰度对应在下标为1处,改变后的直方图
end
end
figure,imshow(I_equal) %显示均衡化后的图像
title('均衡化后图像')
imwrite(I_equal,'1_equal.bmp');
figure(5)
bar(p1')%改变前的直方图
figure(6)
bar(p2')%改变后的直方图