当前位置:文档之家› 图像直方图的均衡化处理图的均衡化

图像直方图的均衡化处理图的均衡化

图像直方图的均衡化处理
一,技术要求
1.1,利用matlab提供的函数处理 (2)
1.2,利用matlab自行编辑代码处理 (3)
二,基本原理 (3)
2.1,直方图的均衡化 (3)
2.2,直方图的标准化 (3)
三,建立模型描述 ......................................................................... 3~4
3.1,利用matlab提供的函数处理 (4)
3.2,利用matlab自行编辑代码 (4)
四,源程序代码 ............................................................................. 5~6
4.1,绘制图像直方图的代码 (5)
4.2,绘制图像均衡化后直方图的代码 (5)
4.3,显示均衡化后图像的代码 (6)
五,调试过程及结论 ..................................................................... 6~8
5.1,在编辑窗口键入绘制直方图的源代码得到的输出结果为图2 (6)
5.2,利用matlab函数绘制的图像直方图标准化的输出结果如图3..7
5.3,直方图均衡化输出结果如图4所示。

(8)
六,心得体会 (9)
七,参考文献 (9)
图像直方图的均衡化处理
一,技术要求
1.1,利用matlab提供的函数处理
利用matlab提供的函数画出一幅图像的直方图,对其进行均衡化和标准化处理,并比较均衡化(标准化)后图像和原图像的区别。

1.2,利用matlab自行编辑代码处理
利用matlab自行编辑代码,实现一幅图像的直方图显示和均衡化的处理,同样比较处理前后两幅图像的区别,了解图像均衡化的效果和实际运用。

二,基本原理
直方图是多种空域处理技术的基础。

它能有效的用于图像增强。

2.1,直方图的均衡化
直方图的均衡化是把原始图像的灰度直方图从比较集中的某个区域变成全部灰度范围内的均匀分布,实际上是对图像进行非线性拉伸。

使一定灰度范围内的像素个数大致相同。

这样就能增强图像的局部对比度,亮度可以更好的在直方图上分布。

2.2,直方图的标准化
直方图的标准化实际上原理和直方图的均衡化原理大致相同,也是将原始图像的灰度值从比较集中地部分扩展到较大范围内的均匀分布,但是它和均衡化的不同在于均衡化是将灰度值范围变成全部灰度范围的均匀分布,而标准化是将灰度值范围扩展到一个相对以前要大一些的范围内,并不要求要变成全部灰度范围内的均匀分布。

三,建立模型描述
3.1,利用matlab提供的函数处理
由于这个过程很简单,这里不必要画出流程图,只简述其操作过程:利用函数imread()读取原始图像,之后利用函数imhist()即可得到读入图像的直方图,再利用函数J=histeq(I,256)就可把原始图像均衡化处理,再利用函数imhist()可得到均衡化后图像的直方图;而直方图的标准化操作过程大致和均衡化过程相同。

唯一的区别是对原始图像进行标准化处理时,规定了直方图的向量为counts,即标准化是利用函数J=histeq(I,counts)。

3.2,利用matlab自行编辑代码
利用函数imread()读取原始图像,利用自行编辑的代码显示原始图像的直方图,对原始图像进行均衡化处理,在利用编辑的代码显示出均衡化处理后图像的直方图,依次输出各个处理后的图像,比较学习。

其流程图如图1所示。

图 1 图像均衡化和标准化流程图
四,源程序代码
4.1,绘制图像直方图的代码
f=imread('pout.tif');
figure,imshow(f);
[m,n]=size(f); %测量图像尺寸参数
h=zeros(1,256); %预创建存放灰度出现概率的向量for k=0:255
h(k+1)=length(find(f==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置
end
figure,bar(0:255,h,'g') %绘制直方图
title('原图像直方图')
xlabel('灰度值')
ylabel('出现概率')
4.2,绘制图像均衡化后直方图的代码
S1=zeros(1,256);
for i=1:256
for j=1:i
S1(i)=h(j)+S1(i); %计算Sk
end
end
S2=round((S1*256)+0.5); %将Sk归到相近级的灰度
for i=1:256
heq(i)=sum(h(find(S2==i))); %计算现有每个灰度级出现的概率end
figure,bar(0:255,heq,'b') %显示均衡化后的直方图
title('均衡化后的直方图')
xlabel('灰度值')
ylabel('出现概率')
4.3,显示均衡化后图像的代码
F=f;
for i=0:255
F(find(f==i))=S2(i+1); %将各个像素归一化后的灰度值赋给这个像素end
figure,imshow(F) %显示均衡化后的图像
title('均衡化后图像')
五,调试过程及结论
5.1,在编辑窗口键入绘制直方图的源代码得到的输出结果为图2
图2 利用matlab代码及matlab函数绘制的直方图
由源程序可以看出绘制图像直方图的算法很简单,由图像可以看出原始图像直方图灰度范围集中在中间的一个区域(像素值为:100—200),图像的整体效果是:图像动态范围小,细节不够清楚。

5.2,利用matlab函数绘制的图像直方图标准化的输出结果如图3。

图 3 直方图的标准化
直方图标准化是由matlab提供的函数实现的,利用到直方图绘制函数imhist()及直方图标准化函数histeq()。

由图像可以看出,直方图标准化后的图像比之以前更加清晰,明亮,细节部分更加清晰,整体感官效果更好;图像的直方图也发生变化,由原始图像的直方图可以看出像素值基本上集中在100—200的范围内,直方图标准化后像素值在更大的一个范围内均匀分布。

5.3,直方图均衡化输出结果如图4所示。

图 4 直方图的均衡化
直方图均衡化可由matlab提供的函数实现,也可由源代码实现,利用matlab 函数J=histeq(i,256)和inhist(J)课得到上图中区域4的图像,源代码得到区域5所示图像,可以明显看出直方图均衡化能把原先集中在一定范围内的灰度值扩展到全部灰度值范围内,使之均匀分布。

原始图像进过处理后可以明显看出细节部分更加清晰,整体对比度提高,视觉效果更好。

六,心得体会
数字图像处理是一门很前沿的学科,在现代化信息社会中有着很重要的运用,学好这门课程对今后有着巨大的作用。

在学好课本知识的同时,我们还应该能将理论知识用于实际。

在学习时不仅要做好课后习题,而且在实验中还要能学会运用课本所授知识。

而且在本次实验中还遇到过很多问题,给实验造成一定的难度,但经过思考和查阅资料之后,这些问题都能解决,实验最终能得以完成。

从这次的实验中我深刻了解到理论知识的重要性,没有熟练地掌握好理论知识,在实验时会捉襟见肘,处处都感觉能懂但却又都不出来;另外,这次实验还锻炼的我的实际动手能力,虽然只是在计算机上操作,但这也能加深我对数字图像处理的理解和记忆。

不管是什么学科,只有将理论联系实际才能跟好的学习和利用知识,数字图像处理这门课程尤其明显,在今后的学习中一定要学习好理论知识,同时也要增强实际动手能力,这样才能学以致用。

七,参考文献
《数字信号处理》Rafael C.G onzalez & Richard E.Woods著
《matlab程序设计与应用》刘卫国主编。

相关主题