1、院 系: 计算机科学学院 专 业:计算机科学与技术 年 级: 2011 级 课 程 名 称: 数字图像处理 组 号: 02 姓名(学号): 谢 枫 11061143 石小飞 11061148 黄 煜 11061144 柳卫平 11061150 李春豪 11061147 指 导 教 师: 徐胜舟 2014 年 4 月 29 日年级 2011 级 学号专业 计算机科学与技术班号 5 组号 02姓名实验名称Matlab 图像处理基础 实验室 9实验目的和要求一、实验目的:(1)熟悉 Matlab 开发环境;(2)掌握 Matlab 中数字图像的读取、显示、保存的基本方法的使用;(3)掌握不同类型的数
2、字图像之间转换方法;(4)加深空间分辨率和灰度分辨率对图像显示效果的影响;(5)熟悉 Matlab 中的傅里叶变换;(6)基于 Matlab 的数字图像程序设计方法;二、实验内容:(1)在 Matlab 中运用 imread 函数读取一幅 RGB 图像(从实验素材中任意选择) ,查看该图像的大小、数据类型信息,并将该图像转换为灰度图像后以bmp 格式保存。(2)运用 imread 函数读取一幅灰度图像(从实验素材中任意选择) ,分别对其进行 2 采样、4 采样和 8 采样,将原图像及采样后的三幅结果图像按同一大小显示出来并比较空间分辨率对图像显示效果的影响。(3)运用 imread 函数读取一
3、幅灰度图像(从实验素材中任意选择) ,分别以 5,10,50 为间隔对其灰度重新进行均匀量化,将原图像及重新量化后的三幅结果图像按同一大小显示出来并比较灰度分辨率对图像显示效果的影响。(4)读取一幅灰度图像,对其进行快速傅里叶变换,将原空域图像和变换后的频域图像显示在同一窗口中。三、实验要求:(1)针对具体实验内容要分别展示:指令(或 m 文件),输出结果,成因分析,经验总结。(2)所有生成的图像或 m 文件,必须命名,比如图 n:描述图像信息;*.m 文件:描述文件信息。(3)严禁抄袭,一旦发现雷同,所有涉及者均判实验报告不及格。实验原理(算法流程)实验(1):1.代码实现I=imread(
4、peppers.png);%将图像 peppers.png 读入数组 I 中imshow(I); %显示图像 Iimfinfo(peppers.png); %读取图像大小、数据类型信息ans %查看图像大小、数据类型信息I=rgb2gray(I); %将图像转换为灰度图像 Iimwrite(I,peppers.bmp);%将转换后的图像以文件名 peppers.bmp 保存2.运行结果1-1-1 图 查看 Peppers.png 图片的基本信息和显示图片过程1-1-2 图 将 Peppers.png 图片保存为 peppers.bmp 图片3.实验分析实验原理(算法流程)先用 imread()
5、函数将 peppers.png 存入 I 数组中,可见 1-1-1 图右上角的Workspace 中的 I。然后用 imfinfo()函数和 ans 函数读取该图像的大小、类型等信息,具体在 1-1-1 图的 Command Window 中可见。至于图片格式的转换,就是用 rgb2gray()函数将保存在 I 数组中的数据转换成灰度格式保存在原来的数组 I 中。最后将变换所得到的数据保存于 peppers.bmp 文件中。实验(2):1.代码实现I=imread(lena.bmp);%读取灰度图片subplot(221),imshow(I,),title(256*256,256)I=I(1:
6、2:end,1:2:end);%图片采样subplot(222),imshow(I,),title(128*128,256)I=I(1:2:end,1:2:end);%图片采样subplot(223),imshow(I,),title(64*64,256)I=I(1:2:end,1:2:end);%图片采样subplot(224),imshow(I,),title(32*32,256)2.运行结果1-2 图 图片空间分辨率对图片的影响3.实验分析由 1-2 图可以看出,在保持灰度级数一定的条件下,随着图片空间分辨率的减半,即 256*256,128*128,64*64,32*32 的图像,图中
7、的各个区域边缘处的棋盘模式越来越明显,并且全图的像素颗粒越来越粗。证明了空间分辨率是影响图片清晰度的因素之一。实验(3):1.代码实现I=imread(lena.bmp);%读取灰度图片subplot(221),imshow(I,256),title(256*256,256)%灰度级为 256subplot(222),imshow(I,50),title(256*256,50) %灰度级为 50实验原理(算法流程)subplot(223),imshow(I,10),title(256*256,10) %灰度级为 10subplot(224),imshow(I,5),title(256*256,
8、5) %灰度级为 52.运行结果1-3 图 图片灰度级对图片的影响3.实验分析该实验是在空间分辨率一定的前提下,改变灰度级别来观察图片的变化情况。由 1-3 图可以看出,灰度级从 256 一次到 50、10、5 过程中,图中的各个区域边缘处的棋盘模式也越来越明显,并且全图的像素颗粒越来越粗。证明了灰度分辨率也是影响图片清晰度的因素之一。实验(4):1.代码实现A=imread(saturn.png);%读取真彩图B=rgb2gray(A);%将真彩图转换为灰度图subplot(121),imshow(B);%显示灰度图C=ffshift(fft2(B);%计算傅里叶变换并位移subplot(1
9、22),imshow(log(abs(C),);%显示变换频谱实验原理(算法流程)2.运行结果1-4 图 图片的傅里叶变换效果3.实验分析由 1-4 图可以看出,傅里叶变换对灰度图片进行频谱转换,很好的刻画了图片的变换特征。代码中运用了 fftshift()函数将变换后的图像频谱中心从矩阵的原点移动到了矩阵的中心。为了够清楚的观察到转换效果,最后用 abs()函数对变换结果进行求模运算,避免不能显示的复数。因此得到了由图中的变换效果。年级 2011 级 学号专业 计算机科学与技术 班号 5 组号 02 姓名实验名称Matlab 图像图像增强 实验室 9实验目的和要求1.实验目的(1)掌握空域点
10、处理图像增强方法;(2)掌握空域滤波图像增强方法;(3)掌握频域滤波图像增强方法;2.实验内容(1)读取一幅对比度不足的图像,对该图像进行直接灰度变换,包括图像求反、线性灰度变换、对数变化,并将原图像及变换后的图像进行对比。(2)读取一幅直方图不均匀的图像,对该图像进行直方图均衡处理,显示处理前后的图像以及它们的灰度直方图。(3)读取一幅灰度图像,对其添加均值为 0,方差为 0.02 的高斯噪声,然后对添加噪声后的图像分别用 3,9,18 幅相同图像对其进行相加求平均结果,比较添加噪声图像与结果图像。(4)读取一幅灰度图像,对其添加均值为 0,方差为 0.01 的高斯噪声,然后分别对其进行中值
11、滤波、sobel 算子滤波、Prewitt 算子滤波,比较添加噪声图像与滤波后的结果图像。(5)读取一幅灰度图像,分别对其进行理想低通滤波和巴特沃斯高通滤波,显示滤波结果。3.报告撰写要求:(1)针对具体实验内容要分别展示:指令(或 m 文件),输出结果,成因分析,经验总结(2)所有生成的图像或 m 文件,必须命名,比如图 n:描述图像信息;*.m 文件:描述文件信息(3)严禁抄袭,一旦发现雷同,所有涉及者均判实验报告不及格实验原理(算法流程)实验(1):1.代码实现I=imread(kids.tif);subplot(221),imshow(I);I=double(I);I1=I;I2=I;
12、I3=I;%图像求反I1=256-1-I1;I1=uint8(I1);subplot(222),imshow(I1);%线性灰度变换M,N=size(I2);for i=1:Mfor j=1:Nif I2(i,j) g)=2*pi-H(bg);H=H/(2*pi);H(S=0)=0;hsi=cat(3,H,S,I);subplot(234);imshow(H);title(H 分量图);subplot(235);imshow(S);title(S 分量图);subplot(236);imshow(I);title(I 分量图);2.运行结果实验原理(算法流程)3-4 图 图像的 HIS 空间各
13、个分量效果图3.实验分析由 3-4 图狠一很清楚的了解到该图像色调、饱和度、强度之间的信息。根据 H 分量图,可以看出哪个区域最接近那种光的波长;根据 S 分量图,可以了解颜色的深浅程度,饱和度越高,颜色越深;根据 I 分量图,可以了解该区域亮度。实验(5):1.代码实现I=imread(gantrycrane.png);subplot(221);imshow(I);title(原图);%密度分层法G2C=grayslice(I,128);subplot(222);imshow(G2C,gray(128);title(密度分层法效果图);%colormap 方法subplot(223);ims
14、how(I); title(colormap-hot 图);colormap hot;subplot(224);imshow(I);title(colormap-gray 图);colormap gray;实验原理(算法流程)2.运行结果3-5 图 密度分层法转换索引图像3.实验分析由 3-5 图我们可以看出密度分层法效果使得图像整个边生、硬暗淡。而使用colormap hot 和 colormap gray 工具后,效果和原图区别不大。实验(6):1.代码实现f=imread(lena.bmp);subplot(231);imshow(f);title(原图);g,t=edge(f,robe
15、rts,both);%用 Roberts 算子分割图像subplot(232);imshow(g);title(Roberts 算子分割图);g,t=edge(f,sobel,both);%用 Sobel 算子分割图像subplot(233);imshow(g);title(Sobel 算子分割图);g,t=edge(f,prewitt,both);%用 Prewitt 算子分割图像subplot(234);imshow(g);title(Prewitt 算子分割图);实验原理(算法流程)g,t=edge(f,log);%用 Log 算子分割图像subplot(235);imshow(g);t
16、itle(Log 算子分割图);g,t=edge(f,canny);%用 Canny 算子分割图像subplot(236);imshow(g);title(Canny 算子分割图);2.运行结果3-6 图 图像 roberts 算子、sobel 算子、Prewitt 算子、Canny 算子、LOG 算子边缘检测3.实验分析由 3-6 图我们可以直观的看出,canny 算子对图像的边缘检测效果更好,其次是Log 算子也有很好的边缘检测效果。而 sobel 算子、Prewitt 算子边缘检测效果相当。再其次是 roberts 算子。roberts 算子是利用拒不差分算子寻找边缘,边缘定位精度较高,
17、但容易丢失部分边缘。sobel 算子和 Prewitt 算子是它们先对图像做加权平滑,在作微分运算,不同的是权值有差别,因而这两种算子对噪声具有一定的抑制能力,但不能完全排除检测边缘结果出现的虚假边缘。LOG 算子是先用高斯函数对函数做平滑滤波处理,再用 Log 算子检测边缘,因此有效地克服了 Log 算子抗噪能力差的问题,但是在抑制噪声的同时,也可能将原来有比较尖锐的边缘平滑掉,造成尖锐边远无法检测出来。实验原理(算法流程)Canny 算子是基于最优化思想而指出边缘检测算子,但是实际效果不一定最优,其采用高斯函数对图像做平滑处理,故具有较强的抑制噪声的能力。实验(7):1.代码实现f=imr
18、ead(tool.jpg);f=rgb2gray(f);subplot(121);imshow(f);title(原图);%自动获取最佳值%T=graythresh(f);%取最佳值%g=im2bw(f,T);%手动调试:灰度值 T 范围为0,L-1g=im2bw(f,0.8888);subplot(122);imshow(g);title(Otsu 方法二值化图(T=0.8888);2.运行结果3-7-1 图 Otsu 阈值法-阈值分割-最佳参数效果图实验原理(算法流程)3-7-2 图 Otsu 阈值法-阈值分割-(T=0.2222)效果图实验原理(算法流程)3-7-3 图 Otsu 阈值法
19、-阈值分割-(T=0.4444)效果图3-7-4 图 Otsu 阈值法-阈值分割-(T=0.6666)效果图3-7-5 图 Otsu 阈值法-阈值分割-(T=0.8888)效果图实验原理(算法流程)3.实验分析由 3-7 图可以看出,取最优值为 0.5333,得到效果也最佳。通过手动改变 T值,从 0.2222 到 0.8888 过程中,检测分割结果也由浅变深,边缘则有模糊到清楚,再由清楚到模糊变化。实验(8):1.代码实现f=imread(0000.jpg);f1=rgb2gray(f);f2=rgb2gray(f);subplot(221);imshow(f);title(原图);f1=d
20、ouble(f1);f2=double(f2);hv=fspecial(prewitt);hh=hv.; %计算梯度值%分水岭算法分割法gv=abs(imfilter(f1,hv,replicate);gh=abs(imfilter(f1,hh,replicate);g=sqrt(gv.2+gh.2);%计算距离L=watershed(g);wr=L=0;f1(wr)=255;subplot(223);imshow(uint8(f1);title(分水岭算法分割法效果图);%改进的分水岭算法分割法gv=abs(imfilter(f2,hv,replicate);gh=abs(imfilter(f2,hh,replicate);g=sqrt(gv.2+gh.2);%计算距离df=bwdist(f2);L=watershed(df);%计算外部约束em=L=0;im=imextendedmax(f2,20);g2=imimposemin(g,im|em);%重构梯度图L2=watershed(g2);%调整 watershed 函数进行分割wr2=L2=0;f2(wr2)=255;subplot(224);imshow(uint8(f2);title(改进的分水岭算法分割法效果图);2.运行结果