数字图像处理 综合作业2.docx
- 文档编号:17966450
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:37
- 大小:3.48MB
数字图像处理 综合作业2.docx
《数字图像处理 综合作业2.docx》由会员分享,可在线阅读,更多相关《数字图像处理 综合作业2.docx(37页珍藏版)》请在冰点文库上搜索。
数字图像处理综合作业2
综合作业二
(春季学期)
一.对X1照片图像增强9
1.1直方图增强9
1.1.1直方图拉伸增加对比度9
1.1.2直方图均衡10
1.2伪彩色增强11
1.2.1等密度分割法11
1.2.2多波段合成伪彩色显示13
二.对x2照片图像增强15
2.1滤波15
2.1.1各种滤波器15
2.1.2中值滤波17
2.1.3二阶butterworth滤波19
2.2直方图增强20
三.边缘提取及增强22
3.1对x1边缘提取及复合22
3.1.1对x1边缘提取22
3.1.2对x1边缘复合23
3.2对x2边缘提取及复合24
3.2.1直接对原图x2边缘提取24
3.2.2去噪后边缘提取25
3.2.3对x2边缘复合26
一.对X1照片图像增强
1.1直方图增强
1.1.1直方图拉伸增加对比度
为了增强图像,观察x1,我们考虑增加图像的对比度,看是否能使图像更清晰。
具体的编程思路是,读入x1图像,运用matlab自带的imadjust函数,对比所得结果,具体程序见附录1.1.1(a),实验结果见图1.1.1
(1)。
1.1.1(a)
结论:
由图1.1.1(a)对比发现,左右两边基本没有区别,基本没有图像增强效果。
我们考虑到运用imadjust函数可以得到原图的负片,即将原灰度图白色的地方变成黑色,黑色的地方变成白色,这种效果可能使X1图像自身对比更鲜明,起到图像增强的作用,具体程序见附录1.1.1
(2),实验结果见图1.1.1(b)。
1.1.1(b)
结论:
由图1.1.1(b)的对比发现,从人眼的视觉角度来看,右图比起左图,在感官上比较舒适,似乎有点图像增强的意思,但总体上,效果还不是很好。
1.1.2直方图均衡
在第三章的作业习题里,我们已经接触过直方图均衡,它是一种利用图像直方图对对比度进行调整的方法,也是图像增强常用的方法之一。
我们的编程思路是运用matlab中自带的一些函数对原图进行处理,具体程序见附录1.1.2,实验结果见图1.1.2。
1.1.2
结论:
由图1.1.2的对比,我们可以发现直方图均衡化后的图像整体变亮,图片中部分位置变得清晰一些,部分位置灰度值过高,图像有些发白,没有得到好的图像增强效果,甚至发白部位阻碍医生观察骨骼细节。
原因是因为这种方法对处理的数据不加选择,当原图的直方图有高峰时,经处理后对比度会不自然的过分增强。
1.2伪彩色增强
1.2.1等密度分割法
对图像中各像元亮度值进行统计,确定其最小值和最大值,确定分割的等级N,计算出分割的间隔再对输入图像的每一个像元进行亮度转换,为像元新值赋色。
(1)matlab自带函数grayslice(I,n)(源程序:
color1.m)
将灰度图X1均匀量化为n个等级,然后利用jet映射将其转化为伪彩色图像x。
程序见附录1.2.1
(1)
1.2.1(a)N=8
1.2.1(b)N=64
1.2.1(c)n=256
分析:
由上面三组图像可知,当分割等级越大,所呈现的效果越好。
(2)自编程序(源程序:
color2.m)
将图像X1按灰度分为11份
R=0:
256间隔为256/10
G=0到256再到0间隔为256/5
B=256:
0间隔为256/10
1.2.1(d)
分析:
从上面各图的分析我们知道n越大,效果越好。
但对比利用grayslice(I,n)函数n=8时的效果,自编程序n=11时的效果没有很好,可能是颜色映射不恰当,导致效果不好。
1.2.2多波段合成伪彩色显示
(源程序:
color.m)
对同一幅图像在不同波长获得多幅图像,可采用多种变换方式,最后合成R、G、B图像进而形成为彩色图像显示。
在这里使用分段线性映射法。
实验结果见1.2.2.程序见附录1.2.2.
1.2.2
分析:
对比利用密度分割法产生的效果,多波段合成伪彩色显示法的效果不是很好,反而将图像变得更加模糊。
结论:
通过对图像进行伪彩色处理,主要得出以下两点。
(1)对图像进行伪彩色处理时,不同的伪彩色处理方法有不同的效果,要选择合适的处理方法。
(2)不同的颜色映射法也有不同的效果,根据图像选择合适的颜色映射法。
2.对x2照片图像增强
2.1滤波
首先我们先分别观察一下X2的在MATLAB中的原始图像和频谱分布情况。
因为我们观察到X2是彩色图,所以我们需要利用rgb2gray函数将它转换成灰度图再进行处理。
X2的原始图像和频谱分布图如下图2.1所示:
2.1
我们观察到X2的灰度图存在较严重的椒盐噪声,其频谱图也存在一个十字叉的亮线,但是围绕中间亮点又有一个矩型噪声。
综上,X2存在明显的噪声近似于椒盐噪声,所以我们先采用“广撒网,捞大鱼”的方法进行筛选,尝试使用不同类型的滤波器对X2进行滤波处理,分析对比哪种滤波器的滤波效果最好,然后再选择滤波效果最好的滤波器进行各种参数设置,使其滤波效果最好。
2.1.1各种滤波器
在这里我们使用了高斯低通滤波器,均值滤波器,中值滤波器,自适应滤波器,二维统计顺序滤波器,二阶Butterworth滤波器分别对X2图像进行滤波。
程序见附录2.1.1
各种滤波结果如下图2.1.1所示:
高斯低通滤波均值滤波
中值滤波自适应滤波
二维统计顺序滤波二阶butterworth滤波
2.1.1
结论:
对比分析后我们发现,中值滤波对于去除噪声效果最好,第二好的是二阶butterworth滤波,而自适应滤波去除效果则较差。
所以接下来我们针对中值滤波器和二阶butterworth滤波器进行详细的参数设置,通过多次试验使其达到最好的效果。
2.1.2中值滤波
因为观察X2的原始图像和频谱分布图,我们发现X2存在很明显的椒盐噪声,所以我们可以预见到使用中值滤波对X2进行处理后会有明显的改善。
基本思路是先读入待处理图像,因为我们到观察X2是彩色图,所以我们需要利用rgb2gray函数先将它转换成灰度图,再利用中值滤波器对其进行平滑滤波,分别使用3*3窗口,5*5窗口,7*7窗口,11*11窗口进行处理,分析比较处理结果。
程序见附录2.1.2
X2的处理结果如下图2.1.2所示:
3*3窗口中值滤波7*7窗口中值滤波
11*11窗口中值滤波13*13窗口中值滤波
2.1.2
结论:
正如预想的那样,中值滤波对X2会产生明显的效果。
中值滤波对于去除椒盐噪声效果明显,是因为椒盐噪声只在画面上的部分点随机出现,而中值滤波根据数据排序,将未被污染的点代替噪声点的值的概率较大,所以抑制效果好。
但是当我们选择的窗口较小时噪声依然比较严重,当我们把窗口加到11*11时只存在少数噪声,当我们把窗口加到13*13时,噪声基本消除,虽然一些细节也模糊了,但是效果最好。
2.1.3二阶butterworth滤波
基本步骤与中值滤波相似,这里不再赘述。
但是,我们认为二阶butterworth滤波应该达不到中值滤波的效果。
另外,二阶butterworth滤波需要修改与原点的距离d0,来实现最优效果,下图2.1.3分别展示了在d0=10,12,14,16,18,20时的情况。
程序见附录2.1.3
d0=10d0=12
d0=14d0=16
d0=18d0=20
2.1.3
结论:
显而易见,无论我们怎么修改参数d0,其结果始终没有中值滤波好。
同时,我们发现就X2图像而言,当d0=14左右时,二阶butterworth滤波器的效果是最好的。
因此,为了达到对X2图像最好的处理效果,我们选择了中值滤波器进行滤波处理。
2.2直方图增强
由于在之前1.1的
(1)中,我们发现通过直方图拉伸来增加对比度的方法几乎没有任何作用,所以对X2不再重复。
因为x2明显存在噪声,所以我们对2.1中去噪后的图进行直方图均衡化处理,具体程序见附录2.2,实验结果见图2.2。
2.2
结论:
观察并对比图2.2,我们发现,中值滤波去噪后的图像再做均衡化处理,泛白情况非常严重,严重损害了图像质量,所以直方图均衡的方法不能用于x2图像的增强。
3.边缘提取及增强
图像的边缘部分对应图像上灰度变化剧烈的区域。
图像的边缘提取有多种方法,可以采用一阶微分算子,如sobel算子,Roberts算子,Prewitt算子,Canny算子。
也可以采用二阶微分算子,如Laplacian算子。
各种算子都有对应的优缺点,Sobel算子检测方法对灰度渐变和噪声较多的图像处理效果较好,但Sobel算子对边缘定位不是很准确,图像的边缘不止一个像素。
Roberts算子检测方法对具有陡峭的低噪声的图像处理效果较好,但是利用roberts算子提取边缘的结果是边缘比较粗,因此边缘的定位不是很准确。
Prewitt算子检测方法对灰度渐变和噪声较多的图像处理效果较好。
但边缘较宽,而且间断点多。
Laplacian算子法对噪声比较敏感,所以很少用该算子检测边缘,而是用来判断边缘像素视为与图像的明区还是暗区。
Canny方法不容易受噪声干扰,能够检测到真正的弱边缘。
优点在于,使用两种不同的阈值分别检测强边缘和弱边缘,并且当弱边缘和强边缘相连时,才将弱边缘包含在输出图像,它是目前边缘检测最常用的算法,效果也是最理想的。
3.1对x1边缘提取及复合
3.1.1对x1边缘提取
根据上述对边缘提取的分析,我们编写了各个边缘提取的程序,希望找到一个最好的边缘提取函数,进而得到最好的图像增强效果。
X1的具体程序见附录3.1.1,实验结果见图3.1.1。
3.1.1
观察对比图3.1.1,可以很明显地发现Canny方法提取的边缘效果最好,这个结果符合我们之前的分析,所以接下来的复合边缘,我们都采取Canny方法。
3.1.2对x1边缘复合
因为对x1做直方图均衡化后,部分图像由于对比度过高而泛白,不但没有增强图像,还损害了图像的部分细节,所以复合时不再考虑叠加均衡化后的图,所以我们的思路是将canny边缘提取图叠加在原图上,进行边缘复合。
具体程序见附录3.1.2,实验结果见图3.1.2。
3.1.2
结论:
观察并分析3.1.2,利用canny算子提取边缘后的图像与原图进行叠加,复合后的图像轮廓更加清晰,对比度明显增强,达到了图像增强的效果。
但是提取的边缘过多,很多细节被模糊了,总体效果不是很理想,这是我们需要解决的问题,但是目前还没找到更好的办法。
3.2对x2边缘提取及复合
3.2.1直接对原图x2边缘提取
因为x2是彩色图,所以要对其进行灰度转化,其他操作思路同x1。
x2的具体程序见附录3.2.1,实验结果见图3.2.1。
3.2.1
结论:
观察对比图3.2.1,同图3.1.1一样,也可以很明显地发现Canny方法提取的边缘效果最好,所以接下来的复合边缘,我们也就只采取Canny方法进行图像增强。
此外,我们还发现,在提取边缘的同时,我们把噪声也当边缘提取了。
这是因为原图X2有明显的噪声存在,我们在提取边缘时,是提取图像上灰度变化剧烈的区域,自然就会把噪声也提取出来,这是我们不希望看到的,所以在提取边缘之前需要对输入图像X2进行消除噪声的处理。
3.2.2去噪后边缘提取
具体的思路是:
前面我们已经对x2滤波进行去噪处理,发现13*13的中值滤波器具有最好的效果,而且canny算子具有最好的边缘提取效果。
所以我们将采用该尺寸的中值滤波器,对滤波后所得的图,进行canny边缘提取。
具体程序见附录3.2.2,实验结果见图3.2.2。
3.2.2
观察对比图3.2.2,很明显,去噪后得到的边缘图就是我们所需要的。
3.2.3对x2边缘复合
因为直方图均衡不仅不能增强x2,反而由于对比度过高,损害了图像细节,所以复合时,不再考虑叠加直方均衡图。
在前面,我们成功的得到了中值滤波去噪后的图和去噪后的边缘提取图,接下来我们的思路是将这两幅图叠加,来增强图像。
具体程序见附录3.2.3,实验结果见图3.2.3。
3.2.3
结论:
观察对比图3.2.3,利用canny算子提取边缘后的图像与原图进行叠加,复合后的图像轮廓更加清晰,很多原来模糊的细节可被肉眼直接观察,比如复合后的图像中指甲也清晰可见。
但是手腕关节处的骨骼由于过多的细节提取被掩盖。
不过总体效果比较理想,图像的对比度明显增强。
作业合作说明
我们三个(厉宏兰,徐节速,李倩)都来自南京天光所,但是之前从未接触过MATLAB编程以及图像处理的相关内容,所以此次作业我们选择了一起合作探讨,相互学习。
徐节速同学主要做了直方图增强以及边缘函数提取复合,李倩同学主要做了图像的伪彩色增强,厉宏兰同学主要做了图像滤波去噪工作。
最后一起讨论了处理结果,利用了各自的最优算法对图像进行了最后的综合处理。
附录:
1.1.1
(1)
f=imread('C:
\Users\Administrator\Desktop\X1.tif');
f1=imadjust(f,stretchlim(f),[]);
subplot(1,2,1);imshow(f)
title('原始图像')
subplot(1,2,2);imshow(f1)
title('增加对比度后图像')
1.1.1
(2)
f=imread('C:
\Users\Administrator\Desktop\X1.tif');
f1=imadjust(f,[0,1],[1,0]);
subplot(1,2,1);imshow(f)
title('原始图像')
subplot(1,2,2);imshow(f1)
title('负片')
1.1.2
f=imread('C:
\Users\Administrator\Desktop\X1.tif');
subplot(2,2,1),imshow(f);
title('原图像');
subplot(2,2,2),imhist(f);
title('原图像直方图')
subplot(2,2,3),f1=histeq(f);
imshow(f1);
title('均衡化后图像')
subplot(2,2,4),imhist(f1);
title('均衡化后图像直方图')
1.2.1
(1)
I=imread('C:
\Users\lenovo\Desktop\综合作业2_V3\X光图像\X1.tif');
X=grayslice(I,64);
figure;imshow(X);title('索引图像');
figure;imshow(X,jet(64));title('matlab自带程序处理图像');
1.2.1
(2)
I=imread('C:
\Users\lenovo\Desktop\综合作业2_V3\X光图像\X1.tif');
figure;imshow(I);title('原始图像');
[m,n]=size(I);
Imax=max(max(I));
Imin=min(min(I));
a=(Imax-Imin)/10;
fori=1:
m
forj=1:
n
ifImin<=I(i,j)&&I(i,j)<=(Imin+a)
R(i,j)=0;
G(i,j)=0;
B(i,j)=256;
elseif(Imin+a)
R(i,j)=25;
G(i,j)=50;
B(i,j)=225;
elseif(Imin+2*a)
R(i,j)=50;
G(i,j)=100;
B(i,j)=200;
elseif(Imin+3*a)
R(i,j)=75;
G(i,j)=150;
B(i,j)=175;
elseif(Imin+4*a)
R(i,j)=100;
G(i,j)=200;
B(i,j)=150;
elseif(Imin+5*a)
R(i,j)=125;
G(i,j)=256;
B(i,j)=125;
elseif(Imin+6*a)
R(i,j)=150;
G(i,j)=200;
B(i,j)=100;
elseif(Imin+7*a)
R(i,j)=175;
G(i,j)=150;
B(i,j)=75;
elseif(Imin+8*a)
R(i,j)=200;
G(i,j)=100;
B(i,j)=50;
elseif(Imin+9*a)
R(i,j)=225;
G(i,j)=50;
B(i,j)=25;
else
R(i,j)=256;
G(i,j)=0;
B(i,j)=0;
end
end
end
end
end
end
end
end
end
end
end
end
fori=1:
m
forj=1:
n
x1(i,j,1)=R(i,j);
x1(i,j,2)=G(i,j);
x1(i,j,3)=B(i,j);
end
end
x1=x1/256;
figure;
imshow(x1);title('密度分割法');
1.2.2
I=imread('C:
\Users\lenovo\Desktop\综合作业2_V3\X光图像\X1.tif');
figure;imshow(I);title('原始图像');
I=double(I);
[m,n]=size(I);
L=256;
fori=1:
m
forj=1:
n
ifI(i,j) R(i,j)=0; G(i,j)=4*I(i,j); B(i,j)=L; elseifI(i,j)<=L/2 R(i,j)=0; G(i,j)=L; B(i,j)=-4*I(i,j)+2*L; elseifI(i,j)<=3*L/4 R(i,j)=4*I(i,j)-2*L; G(i,j)=L; B(i,j)=0; else R(i,j)=L; G(i,j)=-4*I(i,j)+4*L; B(i,j)=0; end end end end end fori=1: m forj=1: n x1(i,j,1)=R(i,j); x1(i,j,2)=G(i,j); x1(i,j,3)=B(i,j); end end x1=x1/256; figure; imshow(x1);title('多波段合成为彩色显示'); 2.1.1 I1=imread('D: \MATLAB图像处理程序\X光图像\X2.tif'); I2=rgb2gray(I1); figure;imshow(I2); title('X2灰图像')%显示原始图像 G=fspecial('gaussian',[1212],1);%这里的gaussian滤波窗口可选任意尺寸和标准差 A=fspecial('average',12);%这里的average滤波窗口可选任意尺寸 f1=filter2(G,I2);%使用G矩阵中的gaussian滤波器对图像滤波 f2=filter2(A,I2);%使用A矩阵中的average滤波器对图像滤波 f3=medfilt2(I2,[1212]);%使用中值滤波器对图像滤波 f4=wiener2(I2,[1212]);%使用自适应滤波器对图像滤波 f5=ordfilt2(I2,5,ones(12,12));%使用二维统计顺序过滤 figure;imshow(f1,[]); title('高斯低通滤波器处理结果'); figure;imshow(f2,[]); title('均值滤波器处理结果'); figure;imshow(f3,[]); title('中值滤波器处理结果'); figure;imshow(f4,[]); title('自适应滤波器处理结果'); figure;imshow(f5,[]); title('二维统计顺序滤波处理结果'); J=double(I2); f=fft2(J); g=fftshift(f); [M,N]=size(f); n=2;d0=16; n1=floor(M/2);n2=floor(N/2); fori=1: M; forj=1: N; d=sqrt((i-n1)^2+(j-n2)^2); h=1/(1+0.414*(d/d0)^(2*n)); g(i,j)=h*g(i,j); end end g=ifftshift(g); f6=uint8(real(ifft2(g))); figure;imshow(f6) title('二阶Butterworth滤波图像') 2.1.2 I1=imread('D: \MATLAB图像处理程序\X光图像\X2.tif'); I2=rgb2gray(I1); figure;imshow(I2); title('X2灰图像')%显示原始图像 filtered1=medfilt2(I2,[33]);%使用3*3滤波窗口 figure;imshow(filtered1); title('3x3窗的中值滤波图像') filtered2=medfilt2(I2,[77]);%使用7*7滤波窗口 figure;imshow(filtered2); title('7x7窗的中值滤波图像') filtered2=medfilt2(I2,[1111]);%使用11*11滤波窗口 figure;imshow(filtered2); title('11x11窗的中值滤波图像') filtered2=medfilt2(I2,[1313]);%使用13*13滤波窗口 figure;imshow(filtered2); title('13x13窗的中值滤波图像') 2.1.3 I1=imread('D: \MATLAB图像处理程序\X光图像\X2.tif'); I2=rgb2gray(I1); J=double(I2); f=fft2(J); g=fftshift(f); [M,N]=size(f); n=2;d0=16;%这里的d0可任意修改 n1=floor(M/2);n2=floor(N/2); fori=1: M; forj=1: N; d=sqrt((i-n1)^2+(j-n2)^2); h=1/(1+0.414*(d/d0)^(2*n)); g(i,j)=h*g(i,j); end end g=ifftshift(g); g=uint8(real(ifft2(g))); figure;imshow(g) title('二阶Butterworth
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像处理 综合作业2 数字图像 处理 综合 作业