收藏 分销(赏)

东北大学matlab计算机图像处理实验报告.docx

上传人:仙人****88 文档编号:9280263 上传时间:2025-03-19 格式:DOCX 页数:17 大小:1.75MB 下载积分:10 金币
下载 相关 举报
东北大学matlab计算机图像处理实验报告.docx_第1页
第1页 / 共17页
东北大学matlab计算机图像处理实验报告.docx_第2页
第2页 / 共17页


点击查看更多>>
资源描述
计算机图像处理实验报告 学院:信息学院 班级: 姓名: 学号: 实验内容:数字图像处理 1、应用MATLAB语言编写显示一幅灰度图像、二值图像、索引图像及彩色图像的程序,并进行相互之间的转换; (1)、显示一副真彩RGB图像 代码: I=imread('mikasa.jpg'); >>imshow(I); 效果: (2)、RGB转灰度图像 代码: graycat=rgb2gray(I); >> subplot(1,2,1); >> subimage(I); >> subplot(1,2,2); >> subimage(graycat); 效果: (3)、RGB转索引图像 代码: [indcat,map]=rgb2ind(I,0.7); >> subplot(1,2,1); >> subimage(I); >> subplot(1,2,2); >> subimage(indcat,map); 效果: (4)、索引图像转RGB 代码: I1=ind2rgb(indcat,map); >>subplot(1,2,1); >>subimage(indcat,map); >>subplot(1,2,2); >>subimage(I1); 效果: (5)、索引转灰度图像 代码: i2gcat=ind2gray(indcat,map); >>subplot(1,2,1); >>subimage(indcat,map); >>subplot(1,2,2); >>subimage(i2gcat); 效果: (6)、灰度转索引图像 代码: [g2icat,map]=gray2ind(graycat,64); >>subplot(1,2,1); >>subimage(graycat); >>subplot(1,2,2); >>subimage(g2icat,map); 效果: (7)、RGB转二值图像 代码: r2bwcat=im2bw(I,0.5); >>subplot(1,2,1); >>subimage(I); >>subplot(1,2,2); >>subimage(r2bwcat); 效果: (8)灰度转二值图像 代码: g2bwcat=im2bw(graycat,0.5); subplot(1,2,1); >>subimage(graycat); >>subplot(1,2,2); >>subimage(g2bwcat); 效果: (9)、索引转二值图像 代码: >> i2bwcat=im2bw(indcat,map,0.7); >>subplot(1,2,1); >>subimage(indcat,map); >>subplot(1,2,2); >>subimage(i2bwcat); 效果: 2、应用MATLAB工具箱演示一幅图像的傅里叶变换、离散余弦变换,观察其频谱图。然后将它们进行逆变换,观察逆变换后的图像; (1)傅里叶正变换 代码: F=fft2(graycat); >>subplot(1,2,1); subimage(graycat); >>subplot(1,2,2); >>subimage(log(abs(F)),[3,10]); 效果: (2)傅里叶反变换 代码: IF=ifft2(F); >>subplot(1,2,1); >>subimage(log(abs(F)),[3,10]); >>subplot(1,2,2); subimage(uint8(IF)); 效果: (3)DCT变换 代码: B=dct2(graycat); >>subplot(1,2,1); >>subimage(graycat); >>subplot(1,2,2); >>subimage(log(abs(B)),[3,5]); 效果: (4)iDCT变换 代码: iB=idct2(B); >>subplot(1,2,1); >>subimage(log(abs(B)),[3,5]); >>subplot(1,2,2); >>subimage(uint8(iB)); 效果: 3.应用MATLAB语言编程来实现一幅图像的增强。 (1)取一幅灰度图像,对其进行线性点运算,要求:要求线性函数为Y=aX+b, (a,b)分别取(1.5,1.2)、(0.7,1.2),分析变化后图像,并分析直方图。 代码: graycat=double(graycat); >> graycat1=1.5*graycat+1.2; >>subplot(2,2,1); >>subimage(uint8(graycat)); >>subplot(2,2,2); >>imhist(uint8(graycat)); >>subplot(2,2,3); >>subimage(uint8(graycat1)); >>subplot(2,2,4); >>imhist(uint8(graycat1)); 效果: 代码2: graycat=double(graycat); >> graycat1=0.7*graycat+1.2; >>subplot(2,2,1); >>subimage(uint8(graycat)); >>subplot(2,2,2); >>imhist(uint8(graycat)); >>subplot(2,2,3); >>subimage(uint8(graycat1)); >>subplot(2,2,4); >>imhist(uint8(graycat1)); 效果: 分析:a=0.7时,图像对比度减小,输出灰度值范围减小 a=1.5时,图像对比度增大,输出灰度值范围增大 (2)取一幅灰度图像,对其进行直方图均衡化处理,再对其进行规定化处理,并对结果进行分析。 代码: graycat=uint8(graycat); >>eqcat=histeq(graycat); >>subplot(2,2,1); >>subimage(graycat); >>subplot(2,2,2); >>imhist(graycat); >>subplot(2,2,3); >>subimage(eqcat); >>subplot(2,2,4); >>imhist(eqcat); 效果: 规定化代码: hgram=50:2:250; speciacat=histeq(graycat,hgram); >> subplot(2,2,1);subimage(graycat); >> subplot(2,2,2); imhist(graycat); >> subplot(2,2,3); subimage(speciacat); >> subplot(2,2,4); imhist(speciacat); 效果: 分析:图像均衡化将一已知灰度概率密度分布的图像经过某种变换,变成一幅具有均衡灰度概率密度分布的新图像,其扩展了象元取值的动态范围,从而达到增强图像整体对比度。 直方图规定化能自动增强整个图像的对比度,但具体效果不容易控制,处理结果总是得到全局的均衡化直方图。 思考题:如果将一幅图像进行一次直方图均衡化处理后,再进行一次直方图均衡化处理,结果会发生变化吗?观察两次均衡化的直方图是否一样。 答:A=imread('mikasa.jpg'); B=rgb2gray(A); I=histeq(B); %第一次均衡化 I1=histeq(I); %第二次均衡化 subplot(121); imshow(I1); subplot(122); imhist(I1) 从图可知2次结果相同,先直方图均衡了,就相当于所有的灰度级上的像素点数目相同,无论你再进行多少次直方图均衡,他始终都不再变化,因为第一次就已经均衡了。 (3)取一幅灰度图像,加入噪声后对其进行平滑滤波(均值滤波、中值滤波),并观察不同滤波方式下的效果。 代码: noisecat=imnoise(graycat,'salt & pepper'); avecat=filter2(fspecial('average',3),noisecat)/255; >>medcat=medfilt2(noisecat,[3,3]); >> subplot(2,2,1);subimage(graycat);title('原图'); >> subplot(2,2,2);subimage(noisecat);title('加噪声图'); >> subplot(2,2,3);subimage(avecat);title('均值平滑图'); >> subplot(2,2,4);subimage(medcat);title('中值滤波图'); 效果: 分析:均值滤波效果与所使用领域半径大小有关,半径越大,像素点越多,信噪比提高越大,平衡效果越好,但是平滑图像的模糊程度越大。 中值滤波时一种非线性滤波,可以克服线性滤波所带来的图像细节模糊,对滤波脉冲干扰及颗粒噪声最有效。 (4)取一幅灰度图像,采用不同的算子对其进行边缘锐化,并分析结果。 代码: sobelcat=filter2(fspecial('sobel'),graycat); prewittcat=filter2(fspecial('prewitt'),graycat); laplaciancat=filter2(fspecial('laplacian'),graycat); subplot(2,2,1);subimage(graycat);title('原图'); subplot(2,2,2);subimage(sobelcat);title('sobel猫'); subplot(2,2,3);subimage(prewittcat);title('prewitt猫'); subplot(2,2,4);subimage(laplaciancat);title('laplacian猫'); 效果: 分析:sobel算子:对称的一阶差分,对中心加权具有一定的平滑作用 Prewitt算子:一种一阶微分算子的边缘检测,利用像素点上下,左右邻点的灰度差,在边缘处达到极值检测边缘,去掉部分伪边缘,对噪声具有平滑作用 Laplacian算子:二次微分算子,满足不同走向的图像边缘锐化要求,对噪声的增强作用较弱,一半用它进行边缘增强时,有必要将图像先进行平滑处理。 思考题:为了达到边缘锐化的反差增强效果,实际应用中将高频增强和直方图均衡化结合起来使用,这两个操作的次序能互换吗?效果一样吗? 答:I=imread('mikasa.jpg'); I=rgb2gray(I); subplot(241),imshow(I);title('原始图像'); I1=[0,-1,0;-1,5,-1;0,-1,0]; I3=imfilter(I,I1); subplot(242),imshow(uint8(I3));title('拉普拉斯算子锐化图像'); h=ones(size(I3)); [f1,f2]=freqspace(size(I3),'meshgrid'); r=sqrt(f1.^2+f2.^2); h(r<0.3)=0; Y=fft2(double(I3)); Y=fftshift(Y); y=Y.*h; y=ifftshift(y); I4=ifft2(y); subplot(243),imshow(uint8(I4));title('高频增强图像'); I5=histeq(I4); subplot(244),imshow(I5);title('均衡化图像'); P=imread('mikasa.jpg'); P=rgb2gray(P); subplot(245),imshow(P),title('原始图像'); ii=[0,-1,0;-1,5,-1;0,-1,0]; P1=imfilter(P,I1); subplot(246),imshow(uint8(P1));title('拉普拉斯算子锐化图像'); P2=histeq(P1); subplot(248),imshow(P2);title('均衡化图像'); J=ones(size(P2)); [f3,f4]=freqspace(size(P2),'meshgrid'); r1=sqrt(f3.^2+f4.^2); J(r1<0.3)=0; Y=fft2(double(P2)); Y=fftshift(Y); y=Y.*h; y=ifftshift(y); P3=ifft2(y); subplot(247),imshow(uint8(P3));title('高频增强图像'); 从图可知,不能进行互换,效果有差异。 4、对一幅灰度图像进行模糊处理,然后进行逆滤波、维纳滤波与约束最小二乘方滤波复原实验。 代码: PSF=fspecial('motion',30,45); >>blurcat=imfilter(graycat,PSF,'circular','conv'); >> subplot(1,2,1);subimage(graycat);title('原图'); >> subplot(1,2,2);subimage(blurcat);title('运动糊化的图'); 效果: 逆滤波代码: wnr1cat=deconvwnr(blurcat,PSF);%逆滤波 >>subplot(1,2,1);subimage(blurcat); >>subplot(1,2,2);subimage(wnr1cat); 效果: 维纳滤波代码: noise=0.1*randn(size(graycat)); >>blurnoicat=imadd(blurcat,im2uint8(noise)); >> wnr2cat=deconvwnr(blurnoicat,PSF); >> NSR=sum(noise(:).^2)/sum(im2double(graycat(:)).^2); >> wnr3cat=deconvwnr(blurnoicat,PSF,NSR); >> subplot(1,3,1);subimage(blurnoicat);title('运动加噪声'); >> subplot(1,3,2);subimage(wnr2cat);title('维纳滤波'); >> subplot(1,3,3);subimage(wnr3cat);title('真实信噪比维纳恢复'); 效果: 5、应用MATLAB语言编写实现一幅图像的旋转、剪切和缩放; 旋转代码: rotatcat=imrotate(graycat,45,'nearest'); >> rotatcat1=imrotate(graycat,45,'bilinear'); >> rotatcat2=imrotate(graycat,45,'bicubic'); >>subplot(2,2,1);subimage(graycat); >> title('原图');subplot(2,2,2);subimage(rotatcat);title('最邻域旋转'); >> subplot(2,2,3);subimage(rotatcat1);title('双线性旋转'); >> subplot(2,2,4);subimage(rotatcat2);title('双立方旋转'); 效果: 剪切代码: imshow(graycat); >>cropcat=imcrop(graycat,[100,100,200,200]); >> subplot(1,2,1);imshow(graycat);title('mikasa'); >> subplot(1,2,2);imshow(cropcat);title('剪切'); 效果: 缩放代码: minimizecat=imresize(graycat,0.2,'nearest'); >>magnifycat=imresize(minimizecat,3,'bilinear'); >>imshow(minimizecat); >>imshow(magnifycat); 效果: 6、对一幅图像进行边缘提取。 代码: catedge=edge(graycat,'canny'); >>subplot(1,2,1);subimage(graycat); >>subplot(1,2,2);subimage(catedge); imshow(catedge); 效果: 感想:通过这次试验学习到了很多平时没想过的东西,对于图像也更加深了理解,图像的各种变化让人惊喜,平时我们对于图像的理解只是处于表面,但是经过试验,经过对图像进行各种变换让我很惊奇也理解更加深刻,图像处理是对图像信息进行加工,从而满足人类的心理、视觉或者应用的需求的一种行为。而且计算机也没有那么聪明,我们需要将彩色的图片转换为灰色图像,这样便于计算机分析,计算机跟人刚好相反,好看的不一定好处理,而灰色的图像虽然不美观,但是正好适合计算机来处理。另一方面,将彩色图像转化为灰色图像也能减少图像所占的存储空间,简化和加快后续处理的工作。我觉得我们应该更多的进行这种实验,这有利于我们让理论结合实际,更好的去提高自己的能力。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服