累积分布函数(cumulativedistributionfunction,CDF即可以
满足上述两个条件,并且通过该函数可以完成将原图像f的分布转换
成s的均匀分布。
此时的直方图均衡化映射函数为:
sk=EQ(fk)=
(ni/n)=Pf(fi),(k=0,1,2,,,,L-1)
上述求和区间为0到k,根据该方程可以由源图像的各像素灰度值直接得到直方图均衡化后各像素的灰度值。
在实际处理变换时,一般先对原始图像的灰度情况进行统计分析,并计算出原始直方图分布,
然后根据计算出的累计直方图分布求出fk到sk的灰度映射关系。
在
重复上述步骤得到源图像所有灰度级到目标图像灰度级的映射关系后,按照这个映射关系对源图像各点像素进行灰度转换,即可完成对
源图的直方图均衡化。
离散情况下的直方图均衡化的算法:
列出原始图像的灰度级f.,j=0,1/,l-1
j
统计各灰度级的像素数目n,j=0,1,丄-1
j
计算原始图像直方图各灰度级的频数Pf(f.)=n./n,j=0,1,…,L-1
fjj
k
计算累积分布函数:
C⑴二kPf(f.),j=0,1,…,k,…L-1
j=0j
应用以下公式计算映射后的输出图像的灰度级,P为输出图像灰
度级的个数,其中INT为取整符号:
舊呵編*%gmin)C(f)gmin°5】
用的映射关系修改原始图像的灰度级,从而获得直方图近似为均匀分布的输出图像。
四、程序代码
(调库函数)
clc;
clearall;
数字图像处理常用图片\lena1.jpg');
figure
(1);
subplot(2,2,1);imshow(l);title('原始图像');
subplot(2,2,2);imhist(I);title('原始图像灰度直方图');
I仁im2double(l);
I2=log(I1+1);%对数变换
I3=mat2gray(l2);%把图像的灰度范围变换为【0,1】
subplot(2,2,3);imshow(l3);title('subplot(2,2,4);imhist(l3);title('
figure
(2);
B=imadjust(l,[0.050.7],[0.11.0]);subplot(2,2,1);imshow(B);title('subplot(2,2,2);imhist(B);title('J=histeq(l);
subplot(2,2,3);imshow(J);title('subplot(2,2,4);imhist(J);title('
对数变换增强后的图像')对数变换后灰度直方图')
灰度级线性调整');灰度级线性调整后直方图');
直方图规定化');
直方图规定化后直方图');
截图:
原始图像
原始图像灰度直方图
对数变换增强后的图像
灰度级线性调整
灰度级线性调整后直方图
直方图规定化
(编写算法)
clc;clearall
%厂,图像的预处理,读入彩色图像将其灰度化
数字图像处理常用图片\pepper.tif');%读入JPG彩色图像文件
figure
(1);subplot(1,2,1);
%显示出来
%将彩色图片灰度化并保存
%灰度化后的数据存入数组
测量图像尺寸参数
预创建存放灰度出现概率的向量
imshow(l);
title('输入的彩色JPG图像')
imwrite(rgb2gray(l),'PicSampleGray.bmp');I_1=rgb2gray(I);
汇,绘制直方图
[height,width]=size(l_1);%
GP=zeros(1,256);%
计算每级灰度出现的概率,
绘制直方图
出现概率')
fork=0:
255
GP(k+1)=length(find(l_1==k))/(height*width);%
将其存入GP中相应位置
end
figure
(2);subplot(1,2,1);bar(0:
255,GP,'r')%
title('原图像直方图');xlabel('灰度值');ylabel('axis([-525000.012])
汇,直方图均衡化
S1=zeros(1,256);
fori=1:
256
forj=1:
i
S1(i)=GP(j)+S1(i);%
end
end
S2=round((S1*256)+0.5);%
fori=1:
256
GPeq(i)=sum(GP(find(S2==i)));%
end
figure
(2);subplot(1,2,2);bar(0:
255,GPeq,'y')%title('均衡化后的直方图');xlabel('灰度值
axis([-527000.012])
%四,图像均衡化
PA=I;
fori=0:
255
PA(find(l==i))=S2(i+1);%
给这个像素
end
figure
(1);subplot(1,2,2);imshow(PA)%title('均衡化后图像')
计算Sk
将Sk归到相近级的灰度
计算现有每个灰度级出现的概率
显示均衡化后的直方图
');ylabel('出现概率')
将各个像素归一化后的灰度值赋
显示均衡化后的图像
imwrite(PA,'PicEqual.bmp');
截图:
输入的彩色JPG图像
均衡化后图像
0.012
原图像直方图
率概现出
0.01
0.008
0.006
0.004
0.002
0
灰度值
250
均衡化后的直方图
灰度值
五、实验结果
度更高,且边缘效果更高。
这些图片非常有利于人眼的观看识别。
直方图均衡化可以达到增强图像的显示效果的作用。
通过原图像的直方图可以观察出,图像中各种亮度所占的比例大都分布不均匀,直方图增强的方法就是压缩直方图中比例少的像素所占用的灰度范围,多出来的灰度空间按照统计比例分配给直方图中比例高的像素使用。
这种方法主要是针对人眼对灰度差别越大的图像更容易分辨的特点而做的增强。
直方图均衡化由于可能会丢失一些灰度级,所以造成图片信息在一定程度上的损失。
变换后图像的灰度级减少也会使某些细节消失。
并且某些图像经均衡化处理后的对比度不自然的过分增强。
六、成员分工
七、心得体会
通过近几周的设计,我们学到了很多东西,对如何获得知识也有了一定的感知。
首先,对这个设计题目,要做好充分的准备工作,经过在图书馆查找一些相关的资料,上网搜索一些相关的知识后,我们终于对需要的流程有了一定的规划。
其次,在实际设计过程中,我们充分地利用课本上和老师提过的一些知识、思路。
同时与组内同学认真交谈,相互领会对方的思路和方法,提高自己的交际能力和团队精神。
再次,通过对此设计,我们对图像处理的知识有了更加深入的了解,知道了什么是图像增强,知道了怎样均衡化,知道了怎样利用图像增强的知识处理学习、生活中遇到的一些问题。
在此次程序课程设计中,收获知识的同时也收获了成熟。
我们不仅培养了思考问题的能力,也提高了获取知识的能力,并且相互合作的过程中感受到一个人的力量远没有团队的力量大,遇到问题时,集
体的智慧才会更有效解决,因此只有相互团结,互相学习交流,这样大家都会懂得更多,进步更快。
平时也要学会谦虚向其他人学习,我们以后会更加珍惜和重视这样的机会。