《matlab实验报告(精品小实验)(共17页).docx》由会员分享,可在线阅读,更多相关《matlab实验报告(精品小实验)(共17页).docx(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上报告一 直方图均衡化一、目的1. 改善图像的视觉,提高清晰度;2. 增强人们感兴趣部分,到视觉效果更好的图像,以提高图像的可懂度。二、主要内容1读入图像数据到内存中,并显示读入的图像;2实现直方图均衡化处理,显示处理前后图像的直方图;3显示并保存处理结果。三、具体步骤1. 打开Matlab编程环境。2. 获取试验用图像:使用imread函数将图像读入Matlab,并用inshow函数显示读入的图像。3. 获取输入图像的直方图:使用inhist函数处理图像。4. 均衡化处理:使用histeq函数处理图像。5. 获取均衡化后的直方图并显示图像:使用inhist和histe
2、q函数。6. 保存结果。四、实验程序及结果1、实验程序 x=imread(f:flower.jpg); %使用imread函数将图像读入Matlab x=rgb2gray(x); %将彩色图像装换为灰度图像 figure(1); subplot(2,2,1); imshow(x); %显示图像 title(a)原图像) subplot(2,2,2); imhist(x) %求图像直方图 axis off; title(b)原图像的直方图) x1=histeq(x); %对图像进行均衡化处理 subplot(2,2,3); imshow(x1); title(c)直方图均衡化后的图像) subp
3、lot(2,2,4); imhist(x1) %均衡化处理后的图像的直方图 axis off;title(d)均衡化后的直方图)2、实验结果五、结果分析从上面的两幅图我们可以很明显的看到,没有经过均衡化处理的原图像灰度值较为集中,背景颜色全为白色;而经过均衡化处理的图像灰度值分布近似服从均匀分布,背景颜色有了由灰到白的渐变,尤其是花朵的绿叶部分的均衡效果较为明显。报告二 图像平滑一、目的去除或衰减图像中的噪声和虚假轮廓。二、 实现方法减少噪声的方法可以在空间域或在频率域处理,在空间域中进行时,基本方法就是求像素的平均值或中值;在频域中则运用低通滤波技术。因其算法简单且处理速度快,在此我们使用空
4、域法。三、操作步骤1、选择一副图像,加入高斯白噪声;2、分别进行4领域和8领域处理并对两种方法进行对比分析; 3、保存实验结果并给予分析。四、实验程序及结果1、实验程序 x=imread(f:1.jpg); %读入图像 x=rgb2gray(x); %将彩色图像装换为灰度图像 subplot(1,4,1); imshow(x); xlabel(a)原图像); %图像加噪并显示加噪图像,高斯白噪声m=0,=0.005 x1=imnoise(x,gaussian,0,0.05); subplot(1,4,2); imshow(x1); xlabel(b)加噪图像); %使用4领域模板 h1=0 1
5、 0;1 1 1;0 1 0/5; x2=imfilter(x1,h1); subplot(1,4,3); imshow(x2); xlabel(c)4领域平均滤波); %使用8领域模板 h2=1 1 1;1 1 1;1 1 1/8; x3=imfilter(x1,h2); subplot(1,4,4); imshow(x3); xlabel(d)8领域平均滤波);2、实验结果五、结果分析从以上四幅图的比较当中我们可以看到,领域平均法对图像中的噪声进行了一定程度上的衰减,同时可以看到8领域平均法比4领域平均法滤除噪声效果要好,但同时也使图像中目标景物的轮廓或细节变的更模糊,这也正是领域平均法的
6、一个弊端所在。报告三 图像锐化一、主要目的 突出图像中的细节,增强图像的边缘、轮廓以及灰度突变部分。二、实现方法图像的模糊实质是因为图像受到平均或积分运算,为此对其进行逆运算如微分运算、梯度运算,就可以使图像清晰。从频谱角度来分析,图像模糊的实质是其高频分量被衰减,因而也可以通过高通滤波操作来清晰图像。锐化滤波有两种方法:一种是空间域法,另外一种是频域中的高通滤波法。下面使用的是空域锐化方法,分别进行模板系数a=1和a=2的锐化处理,并对结果进行分析。三、实验程序及结果 1、实验程序x=imread(f:4.jpg); %读入第一幅图像x=rgb2gray(x); subplot(2,3,1)
7、;imshow(x);a=1; %a=1的锐化模板g1=0 -a 0;-a 1+4*a -a;0 -a 0;f2=imfilter(x,g1,symmetric,conv); subplot(2,3,2);imshow(f2);a=2 %a=2的锐化模板g1=0 -a 0;-a 1+4*a -a;0 -a 0;f2=imfilter(x,g1,symmetric,conv);subplot(2,3,3);imshow(f2);x=imread(f:3.jpg); %读入第二幅图像x=rgb2gray(x);subplot(2,3,4);imshow(x);xlabel(a)原图像);a=1 %
8、a=1的锐化模板g1=0 -a 0;-a 1+4*a -a;0 -a 0;f2=imfilter(x,g1,symmetric,conv);subplot(2,3,5);imshow(f2);xlabel(b)a=1时的锐化结果);a=2 %a=2的锐化模板g1=0 -a 0;-a 1+4*a -a;0 -a 0;f2=imfilter(x,g1,symmetric,conv);subplot(2,3,6);imshow(f2);xlabel(c)a=2时的锐化结果);2、实验结果 报告四 图像的同态增晰一、主要目的 压缩图像灰度范围,提高图像清晰度,增加对比度。二、实现方法同态增晰是在频域中
9、压缩图像的亮度分量,同时增强图像对比度的方法。其关键是可以将照明分量和反射分量分开来,从而有可能用同态滤波函数分别对它们进行压缩和提升处理,以使图像整体变清晰。三、实验程序及结果 1、实验程序f1=imread(f:5.jpg);f1=double(rgb2gray(f1);f_log=log(f1+1); %取自然对数f2=fft2(f_log);% 产生Butterworth高通滤波器n=3;D0=0.05*pi; %截止频率rh=0.8;r1=0.3;m n=size(f2);for i=1:m for j=1:n D1(i,j)=sqrt(i2+j2); H(i,j)=r1+(rh/(
10、1+(D0/D1(i,j)(2*n); endendf3=f2.*H; %输入图像通过滤波器f4=ifft2(f3);f5=exp(real(f4)-1; %取指数对数subplot(2,2,1);imshow(uint8(f1);subplot(2,2,2);imshow(uint8(f5);%第二幅图片,进行相同的处理f1=imread(f:flower.jpg);f1=double(rgb2gray(f1);f_log=log(f1+1); %取自然对数f2=fft2(f_log);% 产生Butterworth高通滤波器n=3;D0=0.05*pi; %截止频率rh=0.8;r1=0.
11、3;m n=size(f2);for i=1:m for j=1:n D1(i,j)=sqrt(i2+j2); H(i,j)=r1+(rh/(1+(D0/D1(i,j)(2*n); endendf3=f2.*H; %输入图像通过滤波器f4=ifft2(f3);f5=exp(real(f4)-1; %取指数对数subplot(2,2,3);imshow(uint8(f1);xlabel(a)原图像);subplot(2,2,4);imshow(uint8(f5);xlabel(b)同态滤波后图像);2、实验结果报告五 图像恢复一、主要目的由于各种原因使原清晰图像变模糊,或原图未达到应有质量从而形
12、成了降质,图像恢复的目的就是使退化图像恢复本来面目。二、实现方法图像恢复就是根据图像降质过程的某些先验知识,建立“退化(降质)模型”,运用和退化相反的过程,将退化图像恢复。恢复技术可分为无约束和有约束的两大类,在这里,我们用有约束恢复中的维纳滤波方法。三、实验程序及结果 1、实验程序%通过模拟水平运动模糊建立退化函数d=5;h=zeros(2*d+1,2*d+1);h(d+1,1:2*d+1)=1/(2*d);%模糊原图像并加入加入噪声fig1=imread(f:apple.jpg);fig1=rgb2gray(fig1);m n=size(fig1);fe=zeros(m+2*d,n+2*d
13、);fe(1:m,1:n)=fig1;he=zeros(m+2*d,n+2*d);he(1:2*d+1,1:2*d+1)=h;F=fft2(fe);H=fft2(he);g=imnoise(uint8(ifft2(F.*H),gaussian,0,0.0009);G=fft2(double(g);%使用最小均方滤波器恢复图像K=0.1;F_est=(abs(H).2)./(abs(H).2+K).*G./H;fig_est=real(ifft2(F_est);%显示图像subplot(2,3,1);imshow(fig1);xlabel(a)原图像);%显示退化图像subplot(2,3,2)
14、;imshow(uint8(g(d+1:m+d,d+1:n+d),min(g(:) max(g(:);xlabel(b)加噪声的退化图像);%显示恢复图像subplot(2,3,3);imshow(uint8(fig_est(1:m,1:n),min(fig_est(:) max(fig_est(:);xlabel(c)回复后的图像);%第二幅图片%通过模拟水平运动模糊建立退化函数d=5;h=zeros(2*d+1,2*d+1);h(d+1,1:2*d+1)=1/(2*d);%模糊原图像并加入加入噪声fig1=imread(f:flower.jpg);fig1=rgb2gray(fig1);m
15、 n=size(fig1);fe=zeros(m+2*d,n+2*d);fe(1:m,1:n)=fig1;he=zeros(m+2*d,n+2*d);he(1:2*d+1,1:2*d+1)=h;F=fft2(fe);H=fft2(he);g=imnoise(uint8(ifft2(F.*H),gaussian,0,0.0009);G=fft2(double(g);%使用最小均方滤波器恢复图像K=0.1;F_est=(abs(H).2)./(abs(H).2+K).*G./H;fig_est=real(ifft2(F_est);%显示图像subplot(2,3,4);imshow(fig1);x
16、label(a)原图像);%显示退化图像subplot(2,3,5);imshow(uint8(g(d+1:m+d,d+1:n+d),min(g(:) max(g(:);xlabel(b)加噪声的退化图像);%显示恢复图像subplot(2,3,6);imshow(uint8(fig_est(1:m,1:n),min(fig_est(:)max(fig_est(:); xlabel(c)回复后的图像);2、实验结果报告六 图像分割一、主要目的图像分割是图象分析的前期工作、关键步骤。欲对图象进行分析(识别)时,首先要提取特征,而这些特征都包含在图象中的不同部分(如目标物、背景),所以必须先对图象
17、进行分割,然后才能区分并确定这些不同部分。二、实现方法1、边缘检测法:利用区域间之灰度不连续性,确定区域的边界或边缘的位置。2、阈值分割法:目标物和背景、不同目标物之间的灰度值有明显差异,可通过灰度门限进行区分。3、区域分割法:利用区域内灰度的相似性,将象素(点)分成若干相似的区域。三、实验程序及结果 1、边缘检测法程序及结果 f1=imread(f:7.jpg); f1=rgb2gray(f1); subplot(2,3,1); imshow(f1); xlabel(a)输入图像); BW = edge(f1,canny); BW1 = edge(f1,sobel); subplot(2,3
18、,2); imshow(BW); xlabel(b)Canny边缘检测); subplot(1,3,3); subplot(2,3,3); imshow(BW1); xlabel(c)Sobel边缘检测); f1=imread(f:4.jpg); f1=rgb2gray(f1); subplot(2,3,4); imshow(f1); xlabel(a)输入图像); BW = edge(f1,prewitt); BW1 = edge(f1,robert); subplot(2,3,5); imshow(BW); xlabel(b)prewitt算法); imshow(BW1); subplot
19、(2,3,5); imshow(BW); xlabel(b)prewitt算法); subplot(2,3,6); imshow(BW1); xlabel(c)robert算法);2、阈值分割法f1=imread(f:flower.jpg);f1=rgb2gray(f1);M N=size(f1);subplot(2,2,1);imshow(f1);xlabel(a)输入图像);T1=255*graythresh(f1);f1new=zeros(M N);for i=1:M for j=1:N if f1(i,j)T1 f1new(i,j)=255; else f1new(i,j)=0; en
20、d endendsubplot(2,2,2);imshow(f1new);xlabel(b)分割结果);f1=imread(f:strewberry.jpg);f1=rgb2gray(f1);M N=size(f1);subplot(2,2,3);imshow(f1);xlabel(a)输入图像);T1=255*graythresh(f1);f1new=zeros(M N);for i=1:M for j=1:N if f1(i,j)T1 f1new(i,j)=255; else f1new(i,j)=0; end endendsubplot(2,2,4);imshow(f1new);xlab
21、el(b)分割结果);3、 区域分割法 I=imread(f:cameraman.tif); S = qtdecomp(I,.27); blocks=repmat(uint8(0),size(S); for dim=512 256 128 64 32 16 8 4 2 1; numblocks=length(find(S=dim); if(numblocks0) values=repmat(uint8(1),dim dim numblocks); values(2:dim,2:dim,:)=0; blocks=qtsetblk(blocks,S,dim,values); end end blo
22、cks(end,1:end)=1; blocks(1:end,end)=1; subplot(1,2,1); imshow(I); xlabel(a)输入图像); subplot(1,2,2); imshow(blocks,); xlabel(b)分割结果)附录 出现问题及解决办法1、刚开始将图片读入matlab时就出现了问题,由于imread函数的路径写错了,图片读出总是出错,后来把要处理的图片全部放到f:下,这个时候再用x=imread(f:4.jpg);就能顺利读出matlab非自带的图片。2、读进去的图片因为都是自己在网上找的,所以一般都很大,这样读入后matlab命令窗口就会显示警告
23、,图片过大,后来用subplot函数将画图窗口分割成几块就不再显示警告了。3、程序检查没有错误,却还是显示错误,后来自己摸索,才想到由于读入的图像是彩色RGB图像,而要进行求其直方图只能对灰度图像进行,故用x=rgb2gray(x);语句就很好的解决了这个问题。4、在分割处理图像使用qtdecomp函数时,这句S = qtdecomp(I,.27);总是显示出错,反复试过很多次但找不出错在哪里,后来翻查matlab工具书才知道qtdecomp函数处理的图像必须是方阵图像,即行数和列数必须相等的图像才可以。5、在做直方图处理时,imhist函数、title的使用也出错过很多次,它们一句编写完成后
24、都不能加分号;否则也会出错。6、在使用function函数调用这一块儿还有问题。心得体会Matlab是个相当强大的工科处理工具,且Matlab的语句相对C要简单很多,很熟练的使用会让学习、研究工作事半功倍,并且能很直观显示很多人工无法实现的功能。输程序时一定要小心谨慎,很多小地方都容易被我们忽视,可机器再灵活毕竟是机器,方便的同时也有机械的一面,多一个少一个符号都会显示错误。而常常这样的小错误是很难找出来的,所以为了不给自己找麻烦,编写时一定要仔细、严谨,现在我已经对红颜色的句子有畏惧感了。虽然这样,但还是觉得Matlab如果用顺手了,其实还是相当方便,能为以后的学习提高很大的帮助,所以即便这门课程已经结束了,但我想我们学习、使用、挖掘它的脚步还只是刚刚开始!专心-专注-专业