声明:文章中使用的关于直方图函数图里部分来自于电子科技大学 黄捷老师的课件。
在数字图像处理中 对于灰度图像使用直方图均衡化的目的:
如果一幅图像的像素占据的像素区间高低起伏比较大,并且这副图像的像素有占据整个灰度级并且均匀分布,那么图像可以有高的对比度。实现高对比度说白了就是使图像的像素能够尽可能的分布在尽量多的灰度区间内。
根据概率密度等方面的知识,
由上面我们已经知道了直方图均衡化的公式,那么我们可以用Matlab进行实验
function grayaverage()
I=imread('two.jpg');
J=I;
[w,l]=size(I);
area=w*l;
a=zeros(1,256);
b=zeros(1,256);
for i=1:w
for j=1:l
m=I(i,j)+1;
a(1,m)=a(1,m)+1;
end
end
area=255/area;
for i=1:256
sum=0;
for j=1:i
sum=sum+a(1,j);
end
b(1,i)=sum*area;
end
for i=1:w
for j=1:l
m=J(i,j)+1;
J(i,j)=b(1,m);
end
end
subplot(321);imshow(I);
subplot(322);imhist(I);
subplot(323);imshow(J);
subplot(324);imhist(J);
K=histeq(I,256);
subplot(325);imshow(K);
subplot(326);imhist(K);
三幅图像分别是原图以及直方图显示
自己实现直方图均衡化
histeq函数实现直方图均衡化
对比度有点不强呀。不过可以从直方图看出效果。