《南昌大学数字图像处理实验报告18(全).doc》由会员分享,可在线阅读,更多相关《南昌大学数字图像处理实验报告18(全).doc(17页珍藏版)》请在三一办公上搜索。
1、NANCHANG UNIVERSITY 数字图象处理实验报告专 业: 通信工程 班 级: 121班 学 号: 6100212024 学生姓名: 徐万然 2015年4月20日目录实验1:图像信号的数字化实验2:图像灰度级修正实验3:图像的平滑滤波实验4:图像的锐化处理实验5:图像的伪彩色处理实验6:图像的几何变化实验7:图像的复原处理实验8:图像的正交变换实验一:图像信号的数字化一、 实验目的通过本实验了解图像的数字化参数取样频率(象素个数)、量化层数与图像质量的关系。二、 实验内容编写并调试图像数字化程序,要求参数 k,n 可调。其中k为亚抽样比例;n为量化比特数;选择任意图像进行处理,在显示
2、器上观察各种数字化参数组合下的图像效果。三、 实验程序f=imread(Water lilies.jpg);%读入一张图片f1=rgb2gray(f);%将rgb值转换为灰度图subplot(3,3,1),imshow(f),title(灰度图);%显示这幅图像f2=im2bw(f1);%将图像转换为二值图subplot(3,3,2),imshow(f2),title(二值图);%显示这幅图像f3=f2;%对图像进行取反操作subplot(3,3,3),imshow(f3),title(取反图);%显示这幅图像f4=imnoise(f,gaussian);%subplot(3,3,4),ims
3、how(f4),title(加高斯噪声图);%对象进行预操作,加入高斯噪声h=ones(5,5)/25;%设计一个5*5的均值滤波器f5=imfilter(f4,h);%对图像进行均值滤波subplot(3,3,5),imshow(f5),title(平滑滤波图);%显示这幅图像f6=imadjust(f,0,1,0,1);%对图像灰度值进行归一化处理subplot(3,3,6),imshow(f6),title(灰度级修正图1);%显示这幅图像f7=imadjust(f,0,0.8,0,1);%降低输入的灰度值subplot(3,3,7),imshow(f7),title(灰度级修正图2);
4、%显示这幅图像四、 实验结果 五、 实验分析及心得通过本次的实验,我学会了使用MATLAB来进行简单图像处理的步骤。首先应使用Imread函数来对图像进行数字化,将想要处理的图像存错为数字化的矩阵中,然后通过对矩阵进行数字上的运算,便可以得到各种处理效果;也可以用Rgb2gray函数,将一副RGB图像先转化为灰度图像,以进行灰度直方图的构造和直方图均衡,再用Figure函数,将矩阵重现为一副处理后的图像。Im2bw函数可以将Rgb图像转换为二值图像;Rgb2gray函数可以将Rgb图像转换为灰度图像。将图像取反的做法是:将图像变为二值图像后,将二值矩阵的“0”值变为“1”,将“1”值变为“0”
5、,产生的新矩阵即为原图像取反后的图像。实验二:图像灰度级修正一、 实验目的掌握常用的图像灰度级修正方法,即图象的灰度变换法和直方图均衡化法,加深对灰度直方图的理解。观察图象的增强效果,对灰度级修正前后的图像加以比较。二、 实验内容编程实现图像的灰度变换。改变图像输入、输出映射的灰度参数范围(拉伸和反比),观看图像处理结果。对图像直方图均衡化处理,显示均衡前后的直方图和图像。三、 实验程序同实验一四、 实验结果 五、 实验分析及心得这个实验是上个实验的后续步骤,通过实验一我掌握了一副图像数字化的步骤,以及图像取反的实现。本次实验将使用图像灰度级修正相关的函数:imadjust。它的用法是:J =
6、 imadjust(I,low_in; high_in,low_out; high_out)将图像I中的亮度值映射到J中的新值,即将low_in至high_in之间的值映射到low_out至high_out之间的值。low_in 以下与 high_in 以上的值被剪切掉了,也就是说,low_in 以下的值映射到 low_out,high_in 以上的值映射到high_out。它们都可以使用空的矩阵,默认值是0 1。实验程序中我将low_in; high_in参数分别设置为0,1、0,0.8以达到不同的灰度级修正效果。从实验结果来看,后面一次的灰度级修正效果更好,图像整体显得更加亮,更加饱和。实
7、验三:图像的平滑滤波一、 实验目的学习如何对已被噪声污染的图像进行“净化”。通过平滑处理,对结果图像加以比较,得出自己的实验结论。二、 实验内容编写并调试窗口尺寸为mm的平滑滤波函数。编写并调试窗口尺寸为mm的中值滤波函数。三、 实验程序同实验一四、 实验结果 五、 实验分析及心得这个实验是上个实验的后续步骤,通过实验一我掌握了一副图像数字化的步骤,通过实验二掌握了对一副图像进行灰度变换的方法和步骤。本次实验所做的是图像的平滑滤波,涉及到的函数有:imnoise、imfilter。Imnoise函数为Matlab中添加噪声的函数,我在程序中使用的噪声类型为:gaussian(高斯噪声)。Imf
8、ilter函数为Matlab中的滤波器函数,其中我采用的模板为5*5的均值模板。从实验结果可以看出,通过5*5的均值滤波器,图像中的噪声点有明显的消除。课后分析得知,均值滤波器对椒盐、高斯等噪声类型的滤波效果是非常显著的,所以此次实验中选用的滤波器种类非常合理。实验四:图像的锐化处理一、 实验目的学习如何用锐化处理技术来加强图像的目标边界和图像细节,对图像进行梯度算子、拉普拉斯算子、Sobel算子设计,使图像的某些特征(如边缘、轮廓等)得以进一步的增强及突出。锐化处理技术可以在空间域中进行,也可以在频域中运用高通滤波技术进行处理。二、 实验内容编写Robert梯度滤波函数。编写Sobel算子滤
9、波函数。编写拉普拉斯边缘增强滤波函数。观察频域中用高低通滤波技术对图像进行的平滑和锐化处理。三、 实验程序ima=imread(图像锐化.jpg); %读入图像I=imread(图像锐化.jpg);ima=rgb2gray(ima);%如果是彩色图像,则转为灰度图像ima=double(ima);bw1 = edge(ima,roberts);%roberts算子锐化figure;subplot(221);imshow(uint8(ima);title(原始图像);subplot(222);imshow(bw1);title(roberts算子锐化);bw2 = edge(ima,sobel)
10、; %sobel算子锐化subplot(223);imshow(bw2);title(sobel算子锐化);w8=1 1 1;1 -8 1;1 1 1;f=im2double(I);g8=f-imfilter(f,w8,replicate);subplot(224);imshow(g8);title(中心为-8的拉普拉斯滤波);四、 实验结果 五、 实验分析及心得本次实验着重图像的边缘处理,其中涉及的函数有:edge、imfilter。Edge函数为Matlab中的边缘检测函数,其用法为:BW = edge(I) 采用I作为它的输入,并返回一个与I相同大小的二值化图像BW,在函数检测到边缘的地
11、方为1。Imfilter函数为滤波器函数,用法上次实验已经叙述过。因为Edge函数的输入需要是一个灰度图像或者二值图像,所以先通过Rgb转灰度函数,将图像变为灰度图像,然后通过“Roberts”,“Sobel”算法对图像进行边缘检测,从实验结果的图像中可以看出,Sobel算子在检测丰富信息的图像时,效果更佳。而在拉普拉斯变换前,给定好了一个中心为-8,其余为1的3*3模板,进行滤波后能看出,图像的边缘已经更加突出,达到了实验预期的效果。实验五:图像的伪彩色处理一、 实验目的学习和掌握伪彩色处理基本方法,将灰度图像转换为多种颜色的彩色图像。根据图像特点,了解伪彩色处理技术在实际中的应用。二、 实
12、验内容编写密度分割函数,实现灰度图像的伪彩色显示。编写灰度级彩色变换函数,实现灰度图像的伪彩色显示。三、 实验程序i1 = imread(图像锐化.jpg);s = rgb2gray(i1);I=double(s);m,n=size(I);c=256;for i=1:m for j=1:nif I(i,j)=c/4 R(i,j)=0; G(i,j)=4*I(i,j); B(i,j)=c/2;else if I(i,j)=c/2 R(i,j)=0; G(i,j)=c/2; B(i,j)=-4*I(i,j)+2*c; else if I(i,j)=3*c/4 R(i,j)=4*I(i,j)-2*c
13、; G(i,j)=c/2; B(i,j)=0; else R(i,j)=c/2; G(i,j)=-4*I(i,j)+4*c; B(i,j)=0; end endend endendfor i=1:m for j=1:n out(i,j,1)=R(i,j); out(i,j,2)=G(i,j); out(i,j,3)=B(i,j); endendout=out/256;subplot(1,2,1),imshow(out);title(伪彩色处理后图像);subplot(1,2,2),imshow(s);title(原始图像);四、 实验结果 五、 实验分析及心得图像的伪彩色处理在数字图像处理中的
14、使用是非常广泛的,所以本次实验的应用价值很高。伪彩色处理的程序参考了网上给的循环写法,具体步骤是:先将Rgb图像转换为灰度图像,然后通过两个循环的嵌套,将每个范围内的像素赋予一定的颜色值,最后组成一个处理后的矩阵,经过图像显示函数,即可将灰度图像转换为伪彩色图像。伪彩色也可以使用Matlab中给定的灰度分层函数和颜色赋值函数进行,这种方法我会留置实验后,在电脑上重新做一遍,然后将两种方法的效果进行对比。实验六:图像的几何变化一、 实验目的学习和掌握图像几何空间变换和灰度插值的基本方法,对图像进行相应的几何变换操作。二、实验内容编程实现图像的比例缩放。编程实现图像任意角度的旋转变换。分别用MAT
15、LAB函数提供的三种插值方法实现图像的缩放和旋转。三、实验程序i = imread(图像锐化.jpg);i1 = imresize(i,0.5);subplot(2,2,2),imshow(i);title(原图);subplot(2,2,1),imshow(i1);title(缩小0.5倍);i2 = imresize(i,2);subplot(2,2,3),imshow(i2);title(扩大2倍);i3=imrotate(i,30);subplot(2,2,4),imshow(i3);title(旋转30度);四、实验结果 五、实验分析及心得本次实验是图像的几何变换,顾名思义就是将图像
16、进行均匀的放大缩小(尺度变换),或者将图像旋转等等一些线性变换。实验涉及到的函数有:imresize、imrotate。这两个函数的用法简单,其中imresize实现的功能是矩阵的尺度变换,我在实验中采用了放大2被和缩小为0.5倍的变换,将函数中的系数分别写成2和0.5即可实现;imrotate实现图像的旋转,将函数的系数写成30,代表将图像顺时针(系统默认)旋转30度角,实验处理后的图像非常容易辨别。实验七:图像的复原处理一、 实验目的熟悉几种在实际应用中比较重要的图像复原技术,学会用MATLAB复原函数对退化图像进行复原处理。二、实验内容 针对不同的噪声模型,选择合适的滤波器消除噪声的影响
17、。三、实验程序a=rgb2gray(imread(图像锐化.jpg);b=double(imnoise(a,gaussian,0.1);c=imfilter(b,fspecial(average,3);d=exp(imfilter(log(b),fspecial(average,3);Q=-3;e=imfilter(b.(Q+1),fspecial(average,3)./imfilter(b.(Q),fspecial(average,3);Q=3;f=imfilter(b.(Q+1),fspecial(average,3)./imfilter(b.(Q),fspecial(average,3
18、);figuresubplot(2,3,1),imshow(a),title(原始图像);subplot(2,3,2),imshow(b,),title(高斯噪声污染的图像);subplot(2,3,3),imshow(c,),title(3*3算术均值滤波器滤波);subplot(2,3,4),imshow(d,),title(3*3几何均值滤波器滤波);subplot(2,3,5),imshow(e,),title(Q=-3逆谐波滤波);subplot(2,3,6),imshow(f,),title(Q=3逆谐波滤波);g=double(imnoise(a,salt & pepper, 0
19、.06);h=imfilter(g,fspecial(average,5);i=medfilt2(g);j=medfilt2(i);figuresubplot(2,2,1),imshow(g,),title(椒盐噪声污染的图像);subplot(2,2,2),imshow(h,),title(均值滤波);subplot(2,2,3),imshow(i,),title(中值滤波);subplot(2,2,4),imshow(j,),title(再次中值滤波);四、实验结果 五、实验分析及心得这次实验是图像的噪声污染和图像的复原,可以说是数字图像处理知识体系中非常重要的一块,由于实验涉及到的Mat
20、lab函数较多,用法列举如下:Fspecial在Matlab中用于建立预定义的滤波算子,其语法格式为:h = fspecial(type,para),其中type指定算子的类型,para指定相应的参数;Imnoise 在Matlab中用于给图像添加噪声,g=imnoise(f,gaussian,m,var)将均值m,方差为var的高斯噪声加到图像f上,默认值是均值m为0,方差var为0.01的噪声;g=imnoise(f,salt&pepper,d)用椒盐噪声污染图像f,其中d是噪声密度(即包括噪声值的图像区域的百分比)。因此,大约有d*numel(f)个像素受到影响。默认的噪声密度为0.05
21、。我在实验中先给灰度图像进行了高斯噪声添加,然后分别使用了算数均值滤波、几何均值滤波以及逆谐滤波。第二,对图像进行了椒盐噪声的添加,然后使用了均值滤波、中值滤波和二次中值滤波。通过实验结果可以看出,每种滤波器都有相应的效果,但是通过滤波器滤波后的图像并不能完全还原为被噪声污染前的图像,所以图像的复原并不能完全消除噪声的污染,不过可以通过高阶的滤波器,将图像复原为可以接受的噪声污染程度。实验八:图像的正交变换一、 实验目的 掌握离散傅立叶变换和离散余弦变换的实现方法,了解DFT、DCT的幅度分布特性,从而加深对频域变换的认识。二、实验内容 编程实现图像傅立叶变换(DFT)。编程实现图像离散余弦变
22、换(DCT)。三、实验程序a=imread(图像锐化.jpg);b=fftshift(fft2(a);figuresubplot(1,2,1),imshow(a),title(原始图像);subplot(1,2,2),imshow(b),title(离散傅里叶频谱);c=rgb2gray(a);d=dct2(c);d(abs(d)10) = 0; %将DCT结果中绝对值小于10的令为0,相当于压缩了数据率(门限为10)e=idct2(d)/255; %DCT反变换重建图像figuresubplot(1,3,1),imshow(c),title(原始灰度图像);subplot(1,3,2),im
23、show(log(abs(d),),title(余弦变换);subplot(1,3,3),imshow(e),title(门限为10的反余弦变换);四、实验结果 六、 实验分析及心得本次实验的图像处理运用的方式和之前都不同,是将图像转化到频域中进行的处理和变换,然后在通过反变换实现对图像的处理。实验中涉及到的函数有:fftshift、fft、dct2和idct2。Fft为Matlab工具箱中的信号处理函数,其作用是将图像进行快速傅里叶变换,以实现时域到频域的转换;fftshift的作用正是让正半轴部分和负半轴部分的图像分别关于各自的中心对称。因为直接用fft得出的数据与频率不是对应的,fftshift可以纠正过来;dct2为Matlab中的信号处理函数,其作用是将图像进行二维离散余弦变换,而Idct2函数则是它的反变换函数。实验中,我按照要求将图片进行了DFT,显示了一副二维图像的频谱图,然后在通过Dct2函数将图像变成余弦变换谱,通过Idct2函数将余弦谱变成二维的图像,其中需要设置一个门限值,我在实验中使用的是以10为门限的变换,经过实验结果和原图的对比,可以看出此变换还是能保留原图像的大部分信息的,不会给图像造成太大的失真。