直方图均衡化处理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字图像处理实验报告

姓名: 王程学号: 2012021199037 日期:2013.3.30 一、实验要求

(1)对一幅的对比度灰度图像进行直方图均衡化处理,画出处理前后的图像及直方图(2)用matlab读取和显示

二、实验代码

clc;

clear;

I=imread('E:\数字图像处理\exp2\伊伽贝拉.jpg'); %读入图像文件

if isrgb(I)

I=rgb2gray(I);

end

subplot(221),imshow(I);

title('原图像伊伽贝拉')

[m,n]=size(I); %测量图像尺寸参数

B=zeros(1,256); %预创建存放灰度出现概率的向量for i=1:m

for j=1:n

%k=I(i,j);

%k=k+1;

%B(k)=B(k)+1;

B(I(i,j)+1)=B(I(i,j)+1)+1; %计算每级灰度出现的概率end

end

subplot(222),

stem(0:255,B,'Marker','none'); %绘制直方图

title('未均衡化的直方图');

S=I;

[m,n]=size(S); %读出图像的大小

BP=zeros(1,256); %预创建存放灰度出现概率的向量for k=0:255

BP(k+1)=length(find(S==k))/(m*n); %计算每级灰度出现的概率

end

B1=zeros(1,256)

for i=1:256

for j=1:i

B1(i)=BP(j)+B1(i);

end

end

B2=round((B1*256)+0.5); for i=1:256

BPeq(i)=sum(BP(find(B2==i))); end I=S;

for i=0:255;

I(find(S==i))=B2(i+1); %将各个像素归一化后的灰度值赋

给这个像素 end

subplot(223),

imshow(I); %显示均衡化后的图像

title('均衡化后的图像'); subplot(224),

imhist(I); %利用系统函数进行直方图计算

title('均衡化后的直方图'); 三、 实验结果截图并做分析

原图像伊伽贝拉

0100200

300

1234x 104

未均衡化的直方图

均衡化后的图像

02000

4000

均衡化后的直方图

100

200

分析:

从上面各个图中可以看出在原图像中的一些看不到或看不清楚的细节在均衡化后可以

分辨出来,均衡化的图像变得更清晰。在原图像中,灰度主要集中在黑色部分,也就是灰度为0部分,但变化后的图像能看到图像的灰度还是比较均匀的分布,但还是不够理想,我想原因是因为选图不够准确,没能更清楚显示结果。

均衡化所需步骤:1)、对给定的待处理图像统计其直方图。2)根据统计出的直方图采用累计分布函数作变换,求出变换后的新灰度。3)用新灰度代替旧灰度,这一步是近似过程,应根据处理目的尽量做到合理,同时把灰度值相等或相近的合并到一起。

小结:

实验是使用自编函数,在进行均衡化步骤时,开始由于没有完全掌握这方面的知识,比较不了解函数该怎么编写。在看了多遍笔记和参考其它资料的情况下,终于把函数编写出来。当然在课堂上,老师还是给了许多提示,同时在编写时也可以参考MA TLAB自带函数histep,在以后使用这些自带函数的同时,定要掌握函数的原理。只知其表,不知其里对于学习来说是有百害无一益的。在显示直方图的时候用上了上次实验的直方图显示模块,当然在最后为了简洁还是用上了imhist函数。在以后的实验中要深入学习函数的逻辑原理,培养自己的编程能力。

本人承诺,此实验报告全部内容均为本人独立完成,若有欺瞒,猪狗不如!

签字:

相关文档
最新文档