西交大数字图像处理第三次作业.docx
- 文档编号:9238578
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:13
- 大小:19.33KB
西交大数字图像处理第三次作业.docx
《西交大数字图像处理第三次作业.docx》由会员分享,可在线阅读,更多相关《西交大数字图像处理第三次作业.docx(13页珍藏版)》请在冰豆网上搜索。
西交大数字图像处理第三次作业
数字图像处理第三次作业
姓名:
班级:
学号:
提交日期:
2015年3月31日
1、把附件图像的直方图画出;
(1)问题分析:
强度直方图图形化显示不同的像素值在不同的强度值上的出现频率,对于灰度图像来说强度范围为[0~255]之间,对于RGB的彩色图像可以独立显示三种颜色的强度直方图。
强度直方图是用来寻找灰度图像二值化阈值常用而且是有效的手段之一,如果一幅灰度图像的直方图显示为两个波峰,则二值化阈值应该是这两个波峰之间的某个灰度值。
同时强度直方图是调整图像对比度的重要依据。
直方图实现方法:
对一幅灰度图像从上到下,从左到右扫描每个像素值,在每个灰度值上计算像素数目,以这些数据为基础完成图像直方图的绘制。
(2)处理结果:
(3)结果分析及总结:
本文分别采用imhist函数和自己编写的程序求取图像的直方图。
由每组中两幅图像对比可知,用两个程序的得到的图像直方图对于原始图像是基本一致,验证了自己编写的程序的正确性。
但对于处理后的图像(如等)得到的直方图却不相同,分析原因是因为MATLAB中imhist会自动把colormap进行线性扩展,导致结果的不同。
同时,也注意到imhist函数并没有将统计的灰度值出现的次数除以像素点的总数,造成两幅直方图的坐标略有不同。
将直方图与原始图像对比可以清楚的看到图像的灰度分布与图像直方图之间的关系:
在暗图像中,直方图的分量集中在灰度级的低端;亮图像的直方图分量则倾向于灰度级的高端。
低对比度图像具有较窄的直方图,且集中于灰度级的中部;高对比度图像中直方图的分量覆盖了很宽的灰度级范围,而且像素的分布没有太不均匀。
2、把所有图像进行直方图均衡;输出均衡后的图像和源图像进行比对;分析改善内容;
(1)问题分析:
直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。
直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。
直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布。
直方图均衡化的过程:
1)列出原始图像和变换后图像的灰度级(L是灰度级的个数);
2)统计员图像中各灰度级的像素个数;
3)计算原始图像直方图P(i)=Ni/N;
4)计算累计直方图P(j)=P
(1)+P
(2)+P(3)+…+P(i);
5)利用灰度值变换函数计算变换后的灰度值,并四舍五入取整;j=INT[(L-1)Pj+]
6)确定灰度变换关系i→j,据此将原图像的灰度值f(m,n)=i修正为g(m,n)=j;
7)统计变换后个灰度级的像素个数Nj;
8)计算变换后图像的直方图Pj=Nj/N;
(2)MATLAB函数:
功能:
直方图均衡化。
用法:
J=histeq(I,hgram)
将原始图像I的直方图变成用户指定的向量hgram。
hgram中的各元素的值域为[0,1]。
J=histeq(I,n)
指定直方图均衡后的灰度级数n,默认值为64。
[J,T]=histeq(I,...)
返回从能将图像I的灰度直方图变换成图像J的直方图变换T。
(3)处理结果:
原始图像直方图均衡后的结果
原始图像直方图均衡后的结果
原始图像直方图均衡后的结果
原始图像直方图均衡后的结果
(4)结果分析及总结:
经过处理得到若干组每组四幅图像,每组中四幅图像分别为原始图像、直方图均衡化后的图像、原始图像的直方图以及均衡化后图像的直方图。
从直方图上可以观察到灰度分布确实更加均匀并且占据整个灰度级范围;从图像上可以观察到,图像对比的变大,灰度色调变化范围加大。
同时,也注意到有些图像的均衡效果不是很好。
直方图均衡并不是适用于所有的图像,需要分情况处理。
直观上,可以得出这样的结论:
若一幅图像的像素倾向于占据整个可能的灰度级并且分布均匀,则该图像会有高对比度的外观并展示灰色调的较大变化。
最终效果将是一幅灰度细节丰富且动态范围较大的图像。
3、进一步把图像按照对源图像直方图的观察,各自指定不同源图像的直方图,进行直方图匹配,进行图像增强;
(1)问题分析:
直方图匹配(histogrammatching):
将图像直方图以标准图像的直方图为标准作变换,使两图像的直方图相同和近似,从而使两幅图像具有类似的色调和反差。
直方图匹配的原理:
对两个直方图都做均衡化,变成相同的归一化的均匀直方图,以此均匀直方图为媒介,再对参考图像做均衡化的逆运算。
总共有以下几步:
1.求给定的函数的累积直方图s。
2.求原图像的累积直方图G。
3.求s中每一个值在G中距离最小的位置index。
4.求原图像每个像素通过index映射到的新像素的值。
(2)MATLAB函数:
功能:
直方图匹配。
用法:
J=histeq(I,hgram)
将原始图像I的直方图变成用户指定的向量hgram。
hgram中的各元素的值域为[0,1]。
J=histeq(I,n)
指定直方图均衡后的灰度级数n,默认值为64。
[J,T]=histeq(I,...)
返回从能将图像I的灰度直方图变换成图像J的直方图变换T。
(3)处理结果:
原图直方图匹配增强后的图像
原图直方图匹配增强后的图像
原图直方图匹配增强后的图像
原图直方图匹配增强后的图像
原图直方图匹配增强后的图像
原图直方图匹配增强后的图像
原图直方图匹配增强后的图像
原图直方图匹配增强后的图像
原图直方图匹配增强后的图像
原图直方图匹配增强后的图像
(4)结果分析及总结:
对比原始图像的直方图、匹配图的直方图以及增强后图像的直方图可知,程序基本达到了直方图匹配的要求。
但也注意到:
原始图像直方图和匹配后图像的直方图并没有完全一致。
分析原因:
原因一离散量的舍入误差;原因二原始图像中多个灰度值映射到增强后图像的同一个灰度值,即多对一的映射导致。
对比原始图像以及增强后的图像可知,经过直方图后,大部分图像的效果得到了一定的改善。
但也注意到有些图像的效果非但没有改善反而变差了,可能是因为要求匹配的直方图选择不合适导致的或者是要求进行直方图匹配的图像的直方图灰度值分布过于集中。
有些图像匹配后的直方图与被匹配的直方图比较会发现存在“截断”现象,此问题一直不知道是什么原因以及如何解决。
同时发现,MATLAB中函数imshow函数会自动的将colormap进行插值扩展,导致显示的图像与原始图像不同,解决的方法是将读入的colormap后补0直到补满255个三原色数据为止;或者直接利用imwrite将图像写成文件的形式,得到的结果也是正确的。
4、利用直方图对图像elain和woman进行分割。
(1)问题分析:
直方图分割的阈值方法的原理是,如果图像所包括的背景区域与所分的目标区域大小可比,而且两者在灰度上有着明显的去表,那么这样的图像的灰度上有着明显的去表,那么这样的图像的灰度直方图就会呈现很明显的双峰状;其中一个峰值对应的应该是背景区域的灰度;而另一个峰值对应的就是目标灰度了;理想中的图像的灰度直方图,其背景灰度和目标灰度应对应两个不同过的灰度峰值,所以选取位于两峰之间的谷值作为阈值,就很快地将一副图像的背景与目标分割开了。
经典的直方图算法实现简单,但是这只是针对少数不同类别的物体彼此灰度相差很大时,才能进行有效的分割。
当原始图像的双峰不明显时,分割得不到理想的图像。
先对图像进行锐化或者平滑处理,使之达到改善图像的质量的实际应用的要求,这个方法是当图像的边缘细节与图像商上梯度的整体强度有关,图像边缘越强,图像的细节效果越明显。
算法实现为
设图像在f(x,y)在(x,y)处的梯度定义为
由于梯度是一个矢量,所以其方向和再该方向上的大小为
对于一副图像中突出的,变化快的边缘区,其梯度值较大;而对于非边缘信号。
其梯度值较小。
这样由上面的梯度算子就可以增强图像的细节部分,会保留低频信号,与原图像的信息进行叠加,其中添加一个锐化系数,如下:
其中,g(x,y)为增强后的图像;f(x,y)为原始图像,用来保存图像的原始背景信息;grad(x,y)为原始图像梯度,为图像的锐化细节信息;K为锐化系数,用于调节锐化的强度。
这样调整K值的大小。
就使得原有图像在细节部分更具有突出性。
(2)MATLAB函数:
[levelEM]=graythresh(I)
函数功能:
使用最大类间方差法找到图片的一个合适的阈值(threshold)。
在使用im2bw函数将灰度图像转换为二值图像时,需要设定一个阈值,这个函数可以帮助我们获得一个合适的阈值。
利用这个阈值通常比人为设定的阈值能更好地把一张灰度图像转换为二值图像。
BW=im2bw(I,level)
其中level就是设置阈值的。
level取值范围[0,1]。
函数im2bw使用阈值(threshold)变换法把灰度图像(grayscaleimage)转换成二值图像。
(3)处理结果:
调用MATLAB中的函数的分割结果:
自己编写的程序的分割结果(阈值为130):
调用MATLAB中的函数的分割结果:
自己编写的程序的分割结果(阈值为80):
(4)结果分析及总结:
原始图像与分割后的图像对比看,无论是自己编写的程序还是调用MATLAB中的函数都达到了对图像进行分割的目的。
通过观察知,自己编写的程序分割后的图像与调用MATLAB中函数分割后的图像基本一致,但也存在一些细微的差别,例如的处理结果中图像左上角手的部分分割结果有明显的差异。
应该是因为阈值选取的不同的导致分割结果略有不同。
附录
【参考文献】
[1]冈萨雷斯.数字图像处理(第三版)北京:
电子工业出版社,2011
[2]周品.MATLAB数字图像处理北京:
清华大学出版社,2012
[3]杨杰.数字图像处理及MATLAB实现北京:
电子工业出版社,2010
【源代码】
(题目1求直方图)
%用MATLAB提供的函数imhist()求图像的直方图
[Im,MAP]=imread('');
MAP(end:
255,:
)=0;
figure
(1);
imshow(Im,MAP);
title('原始图像');
figure
(2)
imhist(Im,MAP);
axis([025505000]);
title('lena3直方图(调用imhist函数)');
%自己编写的求取图像直方图的程序
GP=zeros(1,256);%原图灰度概率密度函数
IM=ind2gray(Im,MAP);
[m,n]=size(IM);
fork=0:
255%计算原图各灰度级像素个数num
GP(k+1)=length(find(IM==k))/(m*n);
end%绘制原图直方图
figure(3);
bar(0:
255,GP);
axis([02560]);
title('lena3直方图(自己编写)');
xlabel('灰度值');
ylabel('像素的概率密度')
(题目2直方图均衡)
[Im,MAP]=imread('');
MAP(end:
255,:
)=0;
figure
(1);
imshow(Im,MAP);
title('woman原始图像');
imwrite(Im,MAP,'woman原始图像.bmp');
figure
(2)
%imhist(Im,MAP);
GP=zeros(1,256);%原图灰度概率密度函数
IM=ind2gray(Im,MAP);
[m,n]=size(IM);
fork=0:
255%计算原图各灰度级像素个数num
GP(k+1)=length(find(IM==k))/(m*n);
end%绘制原图直方图
bar(0:
255,GP);
axis([02560]);
title('woman原始图像直方图');
xlabel('灰度值');
ylabel('像素的概率密度');
figure(3);
J=histeq(Im);
imshow(J,MAP);
title('woman直方图均衡结果');
imwrite(J,MAP,'woman直方图均衡结果.bmp');
figure(4);
GP=zeros(1,256);%原图灰度概率密度函数
IM=ind2gray(J,MAP);
[m,n]=size(IM);
fork=0:
255%计算原图各灰度级像素个数num
GP(k+1)=length(find(IM==k))/(m*n);
end%绘制原图直方图
bar(0:
255,GP);
axis([02560]);
title('woman均衡化后的直方图');
xlabel('灰度值');
ylabel('像素的概率密度');
(题目3直方图匹配)
clear
[IM,MAP]=imread('');%选定要处理的图像名称
MAP(end:
255,:
)=0;
I=ind2gray(IM,MAP);
[IM2,MAP2]=imread('');%选定要匹配的直方图
I2=ind2gray(IM2,MAP2);
hsp=imhist(I2,256);
g=histeq(I,hsp);
figure;
subplot(1,2,1);
imshow(IM,MAP);
imwrite(IM,MAP,'woman2原图.bmp');
title('原图');
subplot(1,2,2);
imshow(g,MAP2);
imwrite(g,MAP2,'woman2直方图匹配增强后的图像.bmp');
title('直方图匹配增强后的图像');
figure;
subplot(3,1,1);
imhist(I,MAP);
axis([02560100000]);
title('原图的直方图');
subplot(3,1,2);
imhist(I2,MAP2);
axis([02560100000]);
title(strcat('匹配图的直方图'));
subplot(3,1,3);
imhist(g,MAP);
axis([02560100000]);
title('增强后图像直方图');
(题目4图像分割)
%自己编写的直方图阈值法分割图像
clear
I=imread('');
figure
(1);
imhist(I);
title('woman的直方图');
figure
(2);
subplot(1,2,1);
imshow(I);
title('woman原始图像');
t1=80;%从直方图的峰谷处得阈值;
[m,n]=size(I);
I1=zeros(m,n);
fori=1:
m
forj=1:
n
ifI(i,j)>t1
I1(i,j)=1;
else
I1(i,j)=0;
end
end
end
subplot(1,2,2);
imshow(I1);
title('分割后的');
%调用MATLAB中graythresh函数和im2bw函数
clc
clearall
I=imread('');
figure(3);
subplot(1,2,1);
imshow(I);
title('woman原始图像');
level=graythresh(I);%确定灰度阈值
BW=im2bw(I,level);
subplot(1,2,2);
imshow(BW);
title('Otsu法阈值分割图像');
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交大 数字图像 处理 第三次 作业
![提示](https://static.bdocx.com/images/bang_tan.gif)