2022年数字图像处理实验报告完整版.pdf
数字图像处理实验报告完整版数 字 图 像 处 理实验一 MATLAB数字图像处理初步一、显示图像1.利用 imread( )函数读取一幅图像,假设其名为lily 、tif, 存入一个数组中; 2.利用 whos 命令提取该读入图像flower 、tif 的基本信息 ; 3.利用 imshow() 函数来显示这幅图像; 实验结果如下图: 源代码 : I=imread(lily 、tif) whos I imshow(I) 二、压缩图像4.利用 imfinfo 函数来获取图像文件的压缩,颜色等等其她的详细信息; 5.利用 imwrite() 函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg 文件 ,设为 lily 、jpg;语法 :imwrite( 原图像 ,新图像 , quality,q), q取 0-100。6.同样利用imwrite() 函数将最初读入的tif 图象另存为一幅bmp 图像 ,设为 flily 、bmp。7.用 imread()读入图像 Sunset、jpg 与 Winter、jpg; 8.用 imfinfo() 获取图像 Sunset、jpg 与 Winter、jpg 的大小 ; 9.用 figure,imshow() 分别将 Sunset、jpg 与 Winter、jpg 显示出来 ,观察两幅图像的质量。其中 9 的实验结果如下图: 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 12 页 - - - - - - - - - - 数字图像处理实验报告完整版源代码 : 46(接上面两个 ) I=imread(lily 、tif) imfinfo lily、tif; imwrite(I,lily、jpg,quality,20); imwrite(I,lily、bmp); 79 I=imread(Sunset 、jpg); J=imread(Winter 、jpg) imfinfo Sunset 、jpg imfinfo Winter 、jpg figure(1),imshow(Sunset 、jpg) figure(2),imshow(Winter 、jpg) 三、二值化图像10用 im2bw 将一幅灰度图像转化为二值图像,并且用 imshow 显示出来观察图像的特征。实验结果如下图: 源代码 : I=imread(lily 、tif) gg=im2bw(I,0 、4); Figure, imshow(gg) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 12 页 - - - - - - - - - - 数字图像处理实验报告完整版原始图像:四、思考题(1) 简述 MatLab 软件的特点。答:高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来; 具有完备的图形处理功能,实现计算结果与编程的可视化; 友好的用户界面及接近数学表达式的自然化语言,使学者易于学习与掌握; 功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。(2) MatLab 软件可以支持哪些图像文件格式?JPEG、JPEG、PCX、TIFF、PNG、GIF、HDF 、XWD 等等。(3) 说明函数 imread 的用途格式以及各种格式所得到图像的性质。imread 函数用于读入各种图像文件,其一般的用法为X,MAP=imread( ,fmt) 其中 ,X,MAP 分别为读出的图像数据与颜色表数据,fmt 为图像的格式,为读取的图像文件(可以加上文件的路径)。(4) 为什么用 I = imread(lena、bmp) 命令得到的图像I 不可以进行算术运算?Matlab 系统默认的算术运算时针对双精度类型(double)的数据 ,而上述命令产生的矩阵的数据类型就是无符号8 位,直接进行运算会溢出。实验二图像的代数运算一.图像的加法运算在MATLAB中,如果要进行两幅图像的加法,或者给一幅图像加上一个常数,可以调用imadd函数来实现。 imadd函数将某一幅输入图像的每一个像素值与另一幅图像相应的像素值相加 ,返回相应的像素值之与作为输出图像。imadd函数的调用格式如下: Z = imadd(X,Y) 其中 ,X与Y表示需要相加的两幅图像,返回值 Z表示得到的加法操作结果。实验结果如下图: 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 12 页 - - - - - - - - - - 数字图像处理实验报告完整版源代码 : I = imread(Sunset、jpg);J = imread(Bluehills 、jpg);K = imadd(I,J); imshow(K);( 两幅图尺寸大小一致) 原始图像 : 给图像的每一个像素加上一个常数可以使图像的亮度增加。效果如下: 源代码RGB = imread(cameraman、tif);精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 12 页 - - - - - - - - - - 数字图像处理实验报告完整版RGB2 = imadd(RGB,50); subplot(1,2,1);imshow(RGB); subplot(1,2,2);imshow(RGB2); 二、图像的减法运算在MATLAB 中,使用 imsubtract函数可以将一幅图像从另一幅图像中减去,或者从一幅图像中减去一个常数。imsubtract函数将一幅输入图像的像素值从另一幅输入图像相应的像素值中减去 ,再将这个结果作为输出图像相应的像素值。imsubtract函数的调用格式如下: Z = imsubtract(X,Y); 其中 ,Z就是 X-Y 操作的结果。实验结果如下图: 源代码rice = imread(cameraman 、tif) background = imopen(rice, strel(disk,15) rice2 = imsubtract(rice, background) subplot(1,2,1);imshow(rice); subplot(1,2,2);imshow(rice2); 三、图像的乘法运算在MATLAB 中,使用 immultiply 函数实现两幅图像的乘法。immultiply 函数将两幅图像相应的像素值进行元素对元素的乘法操作(MATLAB 点乘 ),并将乘法的运算结果作为输出图形相应的像素值。immulitply 函数的调用格式如下: Z = immulitply(X,Y) 其中 ,Z=X*Y 。实验结果如下图: 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 12 页 - - - - - - - - - - 数字图像处理实验报告完整版源代码I = imread(zhaowei 、bmp) J = immultiply(I,1、2) subplot(1,2,1);imshow(I) subplot(1,2,2);imshow(J) 四、图像的除法运算在MATLAB 中使用 imdivide 函数进行两幅图像的除法。imdivide 函数对两幅输入图像的所有相应像素执行元素对元素的除法操作(点除 ),并将得到的结果作为输出图像的相应像素值。 imdivide 函数的调用格式如下: Z = imdivide(X,Y) 其中 ,Z=X/Y 。实验结果如下图: 源代码Rice = imread(cameraman 、tif); I = double(Rice); J= I * 0 、43 + 90 Rice2 = uint8(J) Ip = imdivide(Rice, Rice2) Imshow(Ip, ) 原图像精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 12 页 - - - - - - - - - - 数字图像处理实验报告完整版五、思考题由图像算术运算的运算结果,思考图像减法运算在什么场合上发挥优势?答:使用背景减法进行运动目标检测可以提取出完整的目标图像.可将所得标用于进一步的图像处理工作中。除去人身体在环境中运动产生的动态区域外.背景减法对其它的动态场景的变化、干扰等特别敏感背景图像获取的理想情况就是在场景没有运动因素,最简单背景获取方法就是当场景中任何目标时采集一幅图像作为背景图像,但这种固定背景图像的方法.只适合应于外界条件较好的场。实验三图像增强空域滤波一、实验内容与步骤a) 调入并显示原始图像Sample2-1、jpg 。b) 利用 imnoise 命令在图像Sample2-1、jpg 上加入高斯 (gaussian) 噪声c)利用预定义函数fspecial 命令产生平均 (average)滤波器111191111d)分别采用 3x3 与 5x5 的模板 ,分别用平均滤波器以及中值滤波器,对加入噪声的图像进行处理并观察不同噪声水平下,上述滤波器处理的结果; e)选择不同大小的模板,对加入某一固定噪声水平噪声的图像进行处理,观察上述滤波器处理的结果。f)利用 imnoise 命令在图像Sample2-1、jpg 上加入椒盐噪声(salt & pepper) g)重复 c) e)的步骤h)输出全部结果并进行讨论。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 12 页 - - - - - - - - - - 数字图像处理实验报告完整版二、实验结果与源代码源代码I=imread(cameraman 、tif); J = imnoise(I,gauss,0、02); J = imnoise(I,salt & pepper,0 、02); ave1=fspecial(average,3); ave2=fspecial(average,5); K = filter2(ave1,J)/255; L = filter2(ave2,J)/255; M = medfilt2(J,3 3); N = medfilt2(J,4 4); imshow(I); figure,imshow(J); figure,imshow(K); figure,imshow(L); figure,imshow(M); figure,imshow(N); 三、思考题 / 问答题(1) 简述高斯噪声与椒盐噪声的特点。高斯噪声就是指噪声的概率密度函数服从高斯分布(即正态分布 )的一类噪声。 如果一个噪声 ,它的幅度分布服从高斯分布,而它的功率谱密度又就是均匀分布的,则称它为高斯白噪声。高斯白噪声的二阶矩不相关,一阶矩为常数 ,就是指先后信号在时间上的相关性。高斯白噪声包括热噪声与散粒噪声。而椒盐噪声就是指椒盐噪声就是由图像传感器,传输信道 ,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声往往由图像切割引起。(2) 结合实验内容 ,定性评价平均滤波器/中值滤波器对高斯噪声与椒盐噪声的去噪效果?精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 12 页 - - - - - - - - - - 数字图像处理实验报告完整版通过实验可以瞧出,中值滤波对椒盐噪声的消噪处理效果比较好,但就是对高斯噪声的消噪处理效果不就是很理想(3) 结合实验内容 ,定性评价滤波窗口对去噪效果的影响?对比实验结果可以发现:发现对于椒盐噪声,中值滤波效果更好。对于高斯噪声,选用 5*5窗口滤波效果好于3*3 窗口滤波 ,但图像模糊程度加重了。实验四图像分割一、实验内容与步骤(1) 使用 Roberts 算子的图像分割实验调入并显示图像room、tif中图像 ; 使用Roberts 算子对图像进行边缘检测处理; Roberts 算子为一对模板: 相应的矩阵为 :rh = 0 1;-1 0; rv = 1 0;0 -1;这里的 rh 为水平 Roberts 算子,rv为垂直 Roberts 算子。分别显示处理后的水平边界与垂直边界检测结果; 用“欧几里德距离”与“街区距离”方式计算梯度的模, 并显示检测结果; 对于检测结果进行二值化处理, 并显示处理结果; (2) 使用 Prewitt 算子的图像分割实验使用 Prewitt 算子进行内容 (1) 中的全部步骤。(3) 使用 Sobel 算子的图像分割实验使用 Sobel 算子进行内容 (1) 中的全部步骤。(4) 使用 LoG ( 拉普拉斯 - 高斯 ) 算子的图像分割实验使用 LoG ( 拉普拉斯 - 高斯 ) 算子进行内容 (1) 中的全部步骤。 提示 1: 处理后可以直接显示处理结果 , 无须另外计算梯度的模。提示2: 注意调节噪声的强度以及LoG ( 拉普拉斯 -高斯 ) 算子的参数 , 观察处理结果。二、实验结果与源程序实验结果如下图: 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 12 页 - - - - - - - - - - 数字图像处理实验报告完整版源程序 f=imread(cameraman 、tif); gv,t1=edge(f,sobel,vertical); imshow(gv) gb,t2=edge(f,sobel,horizontal); figure,imshow(gb) w45=-2 -1 0;-1 0 1;0 1 2; g45=imfilter(double(f),w45,replicate); T=0、3*max(abs(g45(:); g45=g45=T; figure,imshow(g45); 三、思考题 / 问答题1、评价一下Roberts 算子、 Prewitt 算子、 Sobel 算子对于噪声条件下边界检测的性能。Roberts 算子边缘定位精度较高, 但易丢失一部分边缘, 同时由于没经过图像平滑计算,因此不能抑制噪声。该算子对具有陡峭的低噪声图像响应最好。Sobel 算子很容易在空间上实现, 对噪声具有平滑作用, 受噪声影响较小, 可提供较为精确的边缘方向信息, 但同时也会检测出许多伪边缘, 检测到的边缘宽度较粗, 边缘位置定位精度不高。Prewitt 算子与Sobel 算子使用方法一样, 都就是对图像进行差分与滤波运算,差别只在于使用的模板不一样,Prewitt 算子比 Sobel 算子运算略微简单。2、为什么 LoG梯度检测算子的处理结果不需要象Prewitt 等算子那样进行幅度组合? LOG 算子就是根据图像的信噪比来求出检测边缘的最优滤波器。该方法首先采用高斯函数对图像进行低通平滑滤波, 然后采用Laplacia 算子进行高通滤波, 根据二阶导数的过零点来检测图像的边缘。因而不需要象Prewitt 等算子那样进行幅度组合。3、实验中所使用的四种算子所得到的边界有什么异同?Roberts 算子检测出的图像轮廓边缘很细, 连续性较差 , 边缘信息有一定丢失, 出现的噪点比较多。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 12 页 - - - - - - - - - - 数字图像处理实验报告完整版Sobel 与 Prewitt 两个算子检测出的边缘效果几乎一致,比 Roberts 算子的检测结果要好 , 边缘较为连续 , 对噪声不敏感 , 但就是线条稍粗, 出现了一些伪边缘。二阶 LOG 算子检测出来的图像边缘更加连续, 边缘也比较细小。但就是由于二阶算子的特性 , 对噪声比较敏感。当 的值越小 , 平滑的程度就越小, 于就是会出现零星的假边缘; 而 的值越大 , 平滑的程度也越大, 但就是部分真实的边缘会丢失, 出现边缘间断现象实验五形态学运算一、实验内容与步骤1.调入并显示图像Plane2、 jpg; 2.选取合适的阈值,得到二值化图像Plane2-2、jpg; 3.设置结构元素 ; 4.对得到的二值图像Plane2-2、jpg 进行腐蚀运算; 5.对得到的二值图像Plane2-2、jpg 进行膨胀运算; 6.对得到的二值图像Plane2-2、jpg 进行开运算 ; 7.对得到的二值图像Plane2-2、jpg 进行闭运算 ; 8.将两种处理方法的结果作比较; 二、实验结果与源程序实验结果如下图: 源程序I=imread(Sunset、jpg); level = graythresh(I); %得到合适的阈值bw = im2bw(I,level); %二值化精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 12 页 - - - - - - - - - - 数字图像处理实验报告完整版SE = strel(square,3); %设置膨胀结构元素BW1 = imdilate(bw,SE); %膨胀SE1 = strel(arbitrary,eye(5); %设置腐蚀结构元素BW2 = imerode(bw,SE1); %腐蚀BW3 = bwmorph(bw, open); %开运算BW4 = bwmorph(bw, close); %闭运算imshow(I); figure,imshow(bw); figure,imshow(BW1); figure,imshow(BW2); figure,imshow(BW3); figure,imshow(BW4); 三、思考题 / 问答题1.结合实验内容 ,评价腐蚀运算与膨胀运算的效果。腐蚀就是一种消除边界点,它使边界向内部收缩,消除小且无意义的物体。膨胀就是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。可以用来填补物体中的空洞。2.结合实验内容 ,评价开运算与闭运算的效果。先腐蚀后膨胀的过程称为开运算。实验中, 开运算能够去除孤立的小点,毛刺与小桥 ( 即连通两块区域的小点), 而总的位置与形状不变。先膨胀后腐蚀称为闭运算。实验中,闭运算能够填平小湖( 即小孔 ), 弥合小裂缝 , 而总的位置与形状不变。3.腐蚀、膨胀、开、闭运算的适用条件就是什么?由于噪声的影响,图象在阈值化后所得到边界往往就是很不平滑的,物体区域具有一些噪声孔 ,背景区域上散布着一些小的噪声物体。连续的开与闭运算可以有效地改善这种情况。有时需要经过多次腐蚀之后再加上相同次数的膨胀,才可以产生比较好的效果。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 12 页 - - - - - - - - - -