您的位置:首页 > 其它

直方图均衡化

2015-05-27 10:55 134 查看
摘 要:本实验主要编写了计算图像直方图的程序以及直方图均衡化的实现程序,讨论了直方图均衡化技术的实现方法,给出了某些图像经过直方图均衡化技术处理之后的效果。直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法。这种方法通常用来增加许多图像的局部对比度,尤其是当图像的有用数据的对比度相当接近的时候。通过这种方法,亮度可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。

技术论述

直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布。这样就增加了象素灰度值的动态范围从而可达到增强图像整体对比度的效果。

计算过程如下:



实验结果讨论

如图1-1即为利用编写的直方图程序所得到的某图像的直方图。



图1-1

如图1-2为原始图像,图1-3为经过直方图均衡化增强后的图像。如图1-4为原始图像的直方图,图1-5为经过直方图均衡化处理后的图像的直方图。


图1-2


图1-3


图1-4


图1-5

根据实验得到的结果,可以看出经过直方图均衡化处理前后直方图的区别,直方图均衡化技术正是利用改变图像的直方图分布来增强局部的对比度。为了进一步看出直方图均衡化的处理效果,本实验还对另一副图像做了相应的处理,其原图像如图1-6所示,经过直方图均衡化处理之后的图像如图1-7所示,以及原图像直方图和处理后图像直方图如图1-8和图1-9所示。


图1-6


图1-7


图1-8


图1-9

function count_his
%计算图像直方图
ima=imread('Fig3.08(a).jpg');
[m,n]=size(ima);
r=zeros(1,256);
for i=1:m
for j=1:n
r(ima(i,j)+1)=r(ima(i,j)+1)+1;
end
end
bar(1:256,r);title('图像的直方图');


function histogram_e
%ima为输入图像
%imt为直方图均衡化后的输出图像
ima=imread('Fig3.08(a).jpg');
[m,n]=size(ima);
imt=zeros(size(ima));
I=m*n;
P=zeros(1,256);
r=zeros(1,256);
C=zeros(1,256);
new_graydis=zeros(1,256);
ima=double(ima);
%统计各灰度的像素数目
for i=1:m
for j=1:n
r(ima(i,j)+1)=r(ima(i,j)+1)+1;
end
end
%计算原始图像直方图各灰度级的频数
P=r./sum(r);
%计算累计分布函数
for k=1:256
for j=1:k
C(1,k)=C(1,k)+P(1,j);
end
end
%计算映射后的输出图像的灰度级
for k=1:256
C(1,k)=floor(255*C(1,k)+0.5);
end
%统计映射后各灰度级的像素数目
for i=1:256
new_graydis(1,C(1,i)+1)=new_graydis(1,C(1,i)+1)+r(1,i);
end
%计算直方图均衡后的新图
for i=1:m
for j=1:n
imt(i,j)=C(1,(ima(i,j)+1));
end
end
ima=uint8(ima);
imt=uint8(imt);
figure;imshow(ima);title('原图像');
figure;imshow(imt);title('经过均衡处理的图像');
figure;imhist(ima);title('原图像的直方图');
figure;imhist(imt);title('经过均衡处理后该图像的直方图');
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: