数字图像处理期中作业报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字图像处理实验报告
直
方
图
均
衡
化
题目:直方图均衡化
一、实验目的
1.通过实验理解直方图均衡化的原理及步骤;
2.编程实现图像(灰度或彩色)的直方图均衡化;
3.通过实验更深刻的理解课本知识和加强动手实践能力。
二、实验要求
(1)读入一幅图像;
(2)编程绘制给定图象的灰度直方图;
(3)编程实现给定图象的直方图均衡,得到均衡后的新图象;(4)比较均衡前后的两幅图象以及各自的灰度直方图,分析讨论直方图均衡提高图象对比度的效果;
三、实验原理
1.直方图均衡化概述
图像的对比度增强的方法可以分成两类:一类是直接对比度增强方法;另一类是间接对比度增强方法。
直方图拉伸和直方图均衡化是两种最常见的间接对比度增强方法。
直方图拉伸是通过对比度拉伸对直方图像素分布进行调整,从而“扩大”前景和背景灰度的差别,以达到增强对比度的目的,这种方法可以利用线性或非线性的方法来实现;直方图均衡化则通过使用累积函数对灰度值进行“调整”以实现对比度的增强。
直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法。
这种方法通常用来增加许多图像的局部对比度,尤其是当图像的有用数据的对比度相当接近的时候。
通过这种方法,亮度可以
更好地在直方图上分布。
这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。
2.基本思想
直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。
直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。
直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布。
直方图均衡化的基本思想是把原始图的直方图变换为均匀分布的形式,这样就增加了象素灰度值的动态范围从而可达到增强图像整体对比度的效果。
设原始图像在(x,y)处的灰度为f,而改变后的图像为s,则对图像增强的方法可表述为将在(x,y)处的灰度f映射为g。
在灰度直方图均衡化处理中对图像的映射函数可定义为:s = EQ (f),这个映射函数EQ(f)必须满足两个条件(其中L为图像的灰度级数):
(1)EQ(f)在0≤f≤L-1范围内是一个单值单增函数。
这是为了保证增强处理没有打乱原始图像的灰度排列次序,原图各灰度级在变换后仍保持从黑到白(或从白到黑)的排列。
(2)对于0≤f≤L-1有0≤s≤L-1,这个条件保证了变换前后灰度值动态范围的一致性。
累积分布函数(cumulative distribution function,CDF)即可以满足上述两个条件,并且通过该函数可以完成将原图像f的分布转换
成s 的均匀分布。
此时的直方图均衡化映射函数为:sk = EQ(fk) = (ni/n) = Pf(fi) , (k=0,1,2,……,L-1)
上述求和区间为0到k ,根据该方程可以由源图像的各像素灰度值直接得到直方图均衡化后各像素的灰度值。
在实际处理变换时,一般先对原始图像的灰度情况进行统计分析,并计算出原始直方图分布,然后根据计算出的累计直方图分布求出fk 到sk 的灰度映射关系。
在重复上述步骤得到源图像所有灰度级到目标图像灰度级的映射关系后,按照这个映射关系对源图像各点像素进行灰度转换,即可完成对源图的直方图均衡化。
离散情况下的直方图均衡化的算法:
列出原始图像的灰度级1,,1,0,-=L j j f
统计各灰度级的像素数目1,,1,0,-=L j j n
计算原始图像直方图各灰度级的频数1,,1,0,/)(-==L j n j n j f f P
计算累积分布函数:1100
-=∑==L ,k,,,,j k j )j (f f P C(f) 应用以下公式计算映射后的输出图像的灰度级,P 为输出图像灰度级的个数,其中INT 为取整符号:
]5.0min
)()min max [(++-=g f C g g INT i g 用的映射关系修改原始图像的灰度级,从而获得直方图近似为均匀分布的输出图像。
四、程序代码
(调库函数)
clc;
clear all;
I=imread('F:\数字图像处理\常用图片\lena1.jpg');
figure(1);
subplot(2,2,1); imshow(I); title('原始图像');
subplot(2,2,2); imhist(I); title('原始图像灰度直方图');
I1=im2double(I);
I2=log(I1+1); %对数变换
I3=mat2gray(I2);%把图像的灰度范围变换为【0,1】
subplot(2,2,3);imshow(I3);title('对数变换增强后的图像')
subplot(2,2,4);imhist(I3);title('对数变换后灰度直方图')
figure(2);
B=imadjust(I,[0.05 0.7],[0.1 1.0]);
subplot(2,2,1); imshow(B);title('灰度级线性调整');
subplot(2,2,2); imhist(B);title('灰度级线性调整后直方图');
J=histeq(I);
subplot(2,2,3); imshow(J);title('直方图规定化');
subplot(2,2,4); imhist(J);title('直方图规定化后直方图');
截图:
原始图
像
100200
原始图像灰度直方图对数变换增强后的图像00.51
对数变换后的图像灰度直方图
(编写算法)
clc; clear all
%一,图像的预处理,读入彩色图像将其灰度化
I=imread('F:\数字图像处理\常用图片\pepper.tif'); %读入JPG 彩色图像文件 figure(1);subplot(1,2,1);
imshow(I); %显示出来
title('输入的彩色JPG 图像')
imwrite(rgb2gray(I),'PicSampleGray.bmp'); %将彩色图片灰度化并保存 I_1=rgb2gray(I); %灰度化后的数据存入数组 %二,绘制直方图
[height,width]=size(I_1); %测量图像尺寸参数
GP=zeros(1,256); %预创建存放灰度出现概率的向量 for k=0:255
GP(k+1)=length(find(I_1==k))/(height*width); %计算每级灰度出现的概率,将其存入GP 中相应位置
end
figure(2);subplot(1,2,1); bar(0:255,GP,'r') %绘制直方图
title('原图像直方图');xlabel('灰度值');ylabel('出现概率')
axis([-5 250 0 0.012])
%三,直方图均衡化
S1=zeros(1,256);
for i=1:256
灰度级线性调
整
100200
灰度级线性调整后直方图直方图规定化
0100
2000
直方图规定化后直方图
for j=1:i
S1(i)=GP(j)+S1(i); %计算Sk
end
end
S2=round((S1*256)+0.5); %将Sk 归到相近级的灰度 for i=1:256
GPeq(i)=sum(GP(find(S2==i))); %计算现有每个灰度级出现的概率 end
figure(2);subplot(1,2,2); bar(0:255,GPeq,'y')%显示均衡化后的直方图
title('均衡化后的直方图'); xlabel('灰度值'); ylabel('
出现概率') axis([-5 270 0 0.012])
%四,图像均衡化
PA=I;
for i=0:255
PA(find(I==i))=S2(i+1); %
将各个像素归一化后的灰度值赋给这个像素
end
figure(1);subplot(1,2,2); imshow(PA) %
显示均衡化后的图像 title('均衡化后图像')
imwrite(PA,'PicEqual.bmp');
截图:
输入的彩色JPG 图
像
均衡化后图像
五、实验结果
分析:从上述实验结果可以看出,经过直方图均衡化后的图片的对比度更高,且边缘效果更高。
这些图片非常有利于人眼的观看识别。
直方图均衡化可以达到增强图像的显示效果的作用。
通过原图像的直方图可以观察出,图像中各种亮度所占的比例大都分布不均匀,直方图增强的方法就是压缩直方图中比例少的像素所占用的灰度范围,多出来的灰度空间按照统计比例分配给直方图中比例高的像素使用。
这种方法主要是针对人眼对灰度差别越大的图像更容易分辨的特点而做的增强。
直方图均衡化由于可能会丢失一些灰度级,所以造成图片信息在一定程度上的损失。
变换后图像的灰度级减少也会使某些细节消失。
并且某些图像经均衡化处理后的对比度不自然的过分增强。
六、成员分工
七、心得体会
通过近几周的设计,我们学到了很多东西,对如何获得知识也有
原图像直方图
灰度值出现概率均衡化后的直方图
灰度值出现概率
了一定的感知。
首先,对这个设计题目,要做好充分的准备工作,经过在图书馆查找一些相关的资料,上网搜索一些相关的知识后,我们终于对需要的流程有了一定的规划。
其次,在实际设计过程中,我们充分地利用课本上和老师提过的一些知识、思路。
同时与组内同学认真交谈,相互领会对方的思路和方法,提高自己的交际能力和团队精神。
再次,通过对此设计,我们对图像处理的知识有了更加深入的了解,知道了什么是图像增强,知道了怎样均衡化,知道了怎样利用图像增强的知识处理学习、生活中遇到的一些问题。
在此次程序课程设计中,收获知识的同时也收获了成熟。
我们不仅培养了思考问题的能力,也提高了获取知识的能力,并且相互合作的过程中感受到一个人的力量远没有团队的力量大,遇到问题时,集体的智慧才会更有效解决,因此只有相互团结,互相学习交流,这样大家都会懂得更多,进步更快。
平时也要学会谦虚向其他人学习,我们以后会更加珍惜和重视这样的机会。