




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河南工业大学 数字图像处理课程实验指导书河南工业大学 数字图像处理 课程实 验 指 导 书信息科学与工程学院2011年3月实验一 Matlab图像显示方法一、实验目的1. 了解Matlab的基本功能及操作方法2. 练习图像读写和显示函数的使用方法3. 掌握Matlab支持的五类图像的显示方法二、实验内容1. 图像的读写 %matlab自带图像在安装路径下 toolboximagesimdemosA) 图像读RGB = imread(ngc6543a.jpg);B) 图像写先从一个.mat 文件中载入一幅图像,然后利用图像写函数imwrite,创建一个.bmp文件,并将图像存入其中。load clownwhosimwrite(X,map,clown.bmp)C) 图像文件格式转换bitmap = imread(clown.bmp,bmp);imwrite(bitmap,clown.png,png);2. 图像显示A) 二进制图像的显示BW1=zeros(20,20);%创建仅包含0/1的双精度图像BW1(2:2:18,2:2:18)=1;imshow(BW1,notruesize); %double类型0,1whosBW2=uint8(BW1);figure,imshow(BW2,notruesize)figure,imshow(BW2,notruesize) %uint8类型0,255BW3=BW2=0; %逻辑标志置为onfigure,imshow(BW3,notruesize)whosB) 灰度图像的显示I=imread(spine.tif);J=filter2(1 2;-1 -2,I);imshow(I,)figure,imshow(J,)C) 索引图像的显示load clown %装载一幅图像imwrite(X,map,clown.bmp); %保存为bmp文件imshow(X)imshow(X,map)D) RGB图像的显示I=imread(trees.tif);imshow(I)RGB=imread(ngc6543a.jpg);figure,imshow(RGB)imshow(RGB(:,:,3)% 显示第3个颜色分量E) 多帧图像的显示mri=uint8(zeros(128,128,1,27); % 27帧文件mri.tif初始化 for frame=1:27 mri(:,:,:,frame),map=imread(mri.tif,frame); % 读入每一帧 endfigure;imshow(mri(:,:,:,3),map); % 显示第3帧figure,imshow(mri(:,:,:,6),map); % 显示第6帧figure,imshow(mri(:,:,:,10),map); % 显示第10帧figure,imshow(mri(:,:,:,20),map); % 显示第20帧 figure;hold on;for frame=1:27 hold on;imshow(mri(:,:,:,frame),map); % 读入每一帧 pause(0.1)endF) 显示多幅图像X1,map1=imread(forest.tif);X2,map2=imread(trees.tif);figure;subplot(1,2,1),imshow(X1,map1)subplot(1,2,2),imshow(X2,map2)figure;subplot(1,2,1),subimage(X1,map1)subplot(1,2,2),subimage(X2,map2)三、思考题:1. 图像显示时,若不带参数notruesize,显示效果如何?2. 如何显示RGB图像的某一个颜色分量?3. 如何显示多帧图像的所有帧?如何根据多帧图像创建电影片段? %pause(n)实验二 图像运算一、实验目的1. 熟悉图像点运算和代数运算的实现方法2. 了解图像几何运算的简单应用3. 了解图像的邻域操作二、实验内容1. 图像点运算读入图像rice.png,通过图像点运算改变对比度。rice=imread(rice.png);subplot(131),imshow(rice)I=double(rice); %转换为双精度类型J=I*0.43+60;rice2=uint8(J); %转换为uint8subplot(132),imshow(rice2)J=I*1.5-60;rice3=uint8(J); %转换为uint8subplot(133),imshow(rice3)2. 图像的代数运算A) 图像加法运算I=imread(rice.png);imshow(I)J=imread(cameraman.tif);figure,imshow(J)K=imadd(I,J);figure,imshow(K)K2=imadd(I,J,uint16);figure,imshow(K2,)RGB=imread(trees.tif);RGB2=imadd(RGB,50);imshow(RGB)figure,imshow(RGB2)RGB3=imadd(RGB,100);figure,imshow(RGB3)B) 图像减法运算I=imread(rice.png);imshow(I)background = imopen(I,strel(disk,15); %估计背景图像figure, imshow(background);I2=imsubtract(I,background); %从原始图像中减去背景图像figure, imshow(I2)C) 图像乘法运算I=imread(moon.tif);J=immultiply(I,1.2);K=immultiply(I,0.5);imshow(I)figure,imshow(J)figure,imshow(K)D) *图像除法运算3. 图像的几何运算A) 改变图像的大小读入图像ic.tif,改变图像大小,分别将原图像放大1.5倍和缩小0.5倍。I=imread(pears.png);J=imresize(I,1.25);K=imresize(I,0.8);imshow(I)figure,imshow(J)figure,imshow(K)Y=imresize(I,100,150);figure,imshow(Y)B) 旋转一幅图像将上述图像顺时针和逆时针旋转任意角度,观察显示效果。I=imread(peppers.png);J=imrotate(I,30,bilinear);J1=imrotate(I,30,bilinear,crop);imshow(I)figure,imshow(J)figure,imshow(J1)J2=imrotate(I,-15,bilinear);figure,imshow(J2)C) 图像剪切通过交互式操作,从一幅图像中剪切一个矩形区域。I=imread(peppers.png);figure;imshow(I);I2=imcrop(I,30 60 120 160);figure,imshow(I2)4. *图像的邻域操作读入图像tire.tif,分别使用函数nlfilter和blkproc对图像进行滑动邻域操作和分离邻域操作。I=imread(tire.tif);f=inline(max(x(:); %构造复合函数I2=nlfilter(I,3 3,f); %滑动邻域操作figure;imshow(I)figure,imshow(I2)I=imread(tire.tif);f=inline(uint8(round(mean2(x)*ones(size(x); %构造复合函数I2=blkproc(I,8 8,f); %分离邻域操作figure;imshow(I)figure,imshow(I2)实验三 图像变换一、实验目的1. 了解傅立叶变换及离散余弦变换在图像处理中的应用二、实验内容1. 傅立叶变换A) 绘制一个二值图像矩阵,并将其傅立叶函数可视化。f=zeros(30,30);f(5:24,13:17)=1;figure;imshow(f,notruesize)F=fft2(f);F2=log(abs(F);figure,imshow(F2,-1 5,notruesize);colormap(jet); F=fft2(f,256,256); %零填充为256256矩阵figure,imshow(log(abs(F),-1 5,notruesize);colormap(jet); F2=fftshift(F); %将图像频谱中心由矩阵原点移至矩阵中心figure,imshow(log(abs(F2),-1 5,notruesize);colormap(jet);B) 利用傅立叶变换分析两幅图像的相关性,定位图像特征。读入图像cameraman.tif,抽取其中的字母a。bw=imread(cameraman.tif);a=bw(59:71,81:91);figure;imshow(bw);figure,imshow(a);C=real(ifft2(fft2(bw).*fft2(rot90(a,2),256,256);%求相关性figure,imshow(C,);thresh=max(C(:);figure,imshow(Cthresh-10)figure,imshow(Cthresh-15)2. 离散余弦变换(DCT)A) 使用dct2对图像autumn.tif进行DCT变换。RGB=imread(autumn.tif);figure;imshow(RGB)I=rgb2gray(RGB); %转换为灰度图像figure,imshow(I)J=dct2(I);figure,imshow(log(abs(J),),colormap(jet(64);colorbar;B) 将上述DCT变换结果中绝对值小于10的系数舍弃,使用idct2重构图像并与原图像比较。RGB=imread(autumn.tif);I=rgb2gray(RGB); %转换为灰度图像J=dct2(I);figure,imshow(I)K=idct2(J);figure,imshow(K,0 255)J(abs(J)10)=0; %舍弃系数K2=idct2(J);figure,imshow(K2,0 255)C) 利用DCT变换进行图像压缩。I=imread(cameraman.tif);I=im2double(I);T=dctmtx(8);B=blkproc(I,8,8,P1*x*P2,T,T);mask=1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;B2=blkproc(B,8 8,P1.*x,mask);I2=blkproc(B2,8 8,P1*x*P2,T,T);imshow(I)figure,imshow(I2)实验四 图像增强与复原一、实验目的:1. 了解灰度变换增强和空域滤波增强的Matlab实现方法2. 掌握直方图灰度变换方法3. 掌握噪声模拟和图像滤波函数的使用方法4. 了解图像复原的Matlab实现方法二、实验内容1. 灰度变换增强A) 线段上像素灰度分布读入灰度图像liftingbody.png,采用交互式操作,用improfile绘制一条线段的灰度值。I = imread(liftingbody.png);x = 19 427 416 77;y = 96 462 37 33;improfile(I,x,y),grid on;B) 直方图变换 直方图显示读入图像rice.tif,在一个窗口中显示灰度级n=64,128和256的图像直方图。I=imread(rice.png);imshow(I)figure,imhist(I,64)figure,imhist(I,128) 直方图灰度调节利用函数imadjust调解图像灰度范围,观察变换后的图像及其直方图的变化。I=imread(rice.png);figure,imshow(I)figure,imhist(I)J=imadjust(I,0.15 0.9,0 1);figure,imhist(J)figure,imshow(J)I=imread(cameraman.tif);figure,imshow(I)figure,imhist(I)J=imadjust(I,0 0.2,0.5 1);figure,imhist(J)figure,imshow(J) 直方图均衡化分别对图像pout.tif和tire.tif进行直方图均衡化处理,比较处理前后图像及直方图分布的变化。I=imread(pout.tif);figure,imshow(I)figure,imhist(I)J=histeq(I); %直方图均衡figure,imhist(J)figure,imshow(J)I=imread(tire.tif);figure,imshow(I)figure,imhist(I)J=histeq(I);figure,imshow(J)figure,imhist(J)1. 空域滤波增强A) 噪声模拟利用函数imnoise给图像eight.tif分别添加高斯(gaussian)噪声和椒盐(salt & pepper)噪声。I=imread(eight.tif);figure,imshow(I)I1=imnoise(I,gaussian,0,0.01);figure,imshow(I1)I2=imnoise(I,salt & pepper);figure,imshow(I2)B) 空域滤波 对上述噪声图像进行均值滤波和中值滤波,比较滤波效果。I=imread(eight.tif);J=imnoise(I,salt & pepper,0.02);figure,imshow(J)K1=medfilt2(J,3 3); % 3*3中值滤波figure,imshow(K1)K2=filter2(fspecial(average,5),J)/255;figure,imshow(K2) 总结均值滤波和中值滤波的特点及使用场合。均值滤波器是一种最常用的线性低通平滑滤波器。可抑制图像中的噪声,但同时也使图像变得模糊中值滤波器是一种最常用的非线性平滑滤波器。可消除图像中孤立的噪声点,又可产生较少的模糊 *对图像 rice.png 采用laplacian高通滤波器进行锐化滤波。I=imread(rice.png);figure,imshow(I)h=fspecial(laplacian); % fspecial用于建立预定义的滤波算子I2=filter2(h,I);figure,imshow(I2)2. 图像复原A) 模糊与噪声 对图像 peppers.png 分别采用运动PSF和均值滤波PSF进行模糊。I=imread(peppers.png);I=I(10+1:256,222+1:256,:); %剪切图像figure,imshow(I)len=30; %运动位移 theta=10; %运动角度PSF=fspecial(motion,len,theta);blurred=imfilter(I,PSF,circular,conv); %默认相关figure,imshow(blurred)I=imread(peppers.png);figure,imshow(I) H=fspecial(motion,50,45); %运动PSPmotionblur=imfilter(I,H);figure,imshow(motionblur)H=fspecial(disk,10); %均值滤波,disk圆形均值滤波算子averageblur=imfilter(I,H);figure,imshow(averageblur) 在上述模糊图像上再添加噪声J=imnoise(motionblur,salt & pepper);figure,imshow(J)B) 维纳滤波复原 使用维纳滤波复原函数deconvwnr复原无噪声模糊图像。len=30; theta=10; PSF=fspecial(motion,len,theta);blurred=imfilter(I,PSF,circular,conv);figure,imshow(blurred)wnr1=deconvwnr(blurred,PSF); %真实PSFfigure,imshow(wnr1)%非真实PSF wnr2=deconvwnr(blurred,fspecial(motion,2*len,theta); figure,imshow(wnr2)%非真实PSF wnr3=deconvwnr(blurred,fspecial(motion,len,2*theta); figure,imshow(wnr3) *使用维纳滤波复原函数deconvwnr复原模糊噪声图像。PSF=fspecial(motion,len,theta);blurred=imfilter(I,PSF,circular,conv);noise=0.1*randn(size(I);BlurredNoisy=imadd(blurred,im2uint8(noise);figure,imshow(BlurredNoisy)wnr4=deconvwnr(BlurredNoisy,PSF);figure,imshow(wnr4) 实验五 形态学操作与空间变换一、实验目的1. 了解膨胀和腐蚀的Matlab实现方法2. 掌握图像膨胀、腐蚀、开启、闭合等形态学操作函数的使用方法3. 了解二进制图像的形态学应用4. 了解空间变换函数及图像匹配方法二、实验内容1. 图像膨胀A) 对包含矩形对象的二进制图像进行膨胀操作。BW=zeros(9,10);BW(4:6,4:7)=1;imshow(BW,notruesize)se=strel(square,3); %正方形结构元素%se = strel(square,11) % 11-by-11 square%se = strel(line,10,45) % length 10, angle 45 degrees%se = strel(disk,15) % disk, radius 15BW2=imdilate(BW,se); %膨胀figure,imshow(BW2,notruesize)B) 改变上述结构元素类型(如:line, diamond, disk等),重新进行膨胀操作。C) 对图像eight.tif进行上述操作,观察不同结构元素膨胀的效果。BW3=imread(circbw.tif);figure,imshow(BW3)se2=strel(line,11,90); %线型结构元素BW4=imdilate(BW3,se2);figure,imshow(BW4)2. 图像腐蚀A) 对图像circbw.tif进行腐蚀操作。BW1=imread(circbw.tif);se=strel(arbitrary,eye(5);BW2=imerode(BW1,se);figure,imshow(BW1)figure,imshow(BW2)B) 对图像circbw.tif进行腐蚀操作。BW=imread(circbw.tif);se=strel(line,11,90);BW2=imerode(BW3,se);figure,imshow(BW)figure,imshow(BW2)3. 膨胀与腐蚀的综合使用A) 从原始图像circbw.tif中删除电流线,仅保留芯片对象。方法一:先腐蚀(imerode),再膨胀(imdilate);BW1=imread(circbw.tif);figure,imshow(BW1)se=strel(rectangle,40 30); %选择适当大小的矩形结构元素BW2=imerode(BW1,se); %先腐蚀,删除较细的直线figure,imshow(BW2)BW3=imdilate(BW2,se); %再膨胀,恢复矩形的大小figure,imshow(BW3)方法二:使用形态开启函数(imopen)。BW1=imread(circbw.tif);figure,imshow(BW1)se=strel(rectangle,40 30); BW2=imopen(BW1,se); %开启操作figure,imshow(BW2)B) 改变结构元素的大小,重新进行开启操作,观察处理结果。se=strel(rectangle,20 10); se=strel(rectangle,50 40);C) 置结构元素大小为4 3,同时观察形态开启(imopen)与闭合(imclose)的效果,总结形态开启与闭合在图像处理中的作用。I=imread(circbw.tif);figure,imshow(I);se=strel(rectangle,4 3); I1=imopen(I,se); %开启操作I2=imclose(I,se); %闭合操作figure,imshow(I1)figure,imshow(I2)4. 图像极值的处理方法A) 对于下图所示的图像矩阵A,利用函数imregionalmax寻找其局部极大值A=10 10 10 10 10 10 10 10 10 10; 10 13 13 13 10 10 11 10 11 10; 10 13 13 13 10 10 10 11 10 10; 10 13 13 13 10 10 11 10 11 10; 10 10 10 10 10 10 10 10 10 10; 10 11 10 10 10 18 18 18 10 10; 10 10 10 11 10 18 18 18 10 10; 10 10 11 10 10 18 18 18 10 10; 10 11 10 11 10 10 10 10 10 10; 10 10 10 10 10 10 11 10 10 10;B=imregionalmax(A)B) 利用函数imextendedmax寻找像素值大于其邻域像素值2个单位的局部极大值。C=imextendedmax(A,2)5. *使用伪彩色显示标记矩阵。BW=0 0 0 0 0 0 0 0; 0 1 1 0 0 1 1 1; 0 1 1 0 0 0 1 1; 0 1 1 0 0 0 0 0; 0 0 0 1 1 0 0 0; 0 0 0 1 1 0 0 0; 0 0 0 1 1 0 0 0; 0 0 0 0 0 0 0 0X=bwlabel(BW,4)% L = bwlabel(BW,n);返回一个和BW大小相同的L矩阵,包含了标记了BW中每个连通区域的类别标签,这些标签的值为1、2、num(连通区域的个数)。n的值为4或8,表示是按4连通寻找区域,还是8连通寻找,默认为8。RGB=label2rgb(X,jet,k); %转换标记矩阵到RGB图像imshow(RGB,notruesize)6. 利用选择控制点实现图像匹配。Matlab图像匹配的步骤:将标准图像和待匹配图像读入Matlab;指定图像中的控制点对并保存;使用互相关性进一步协调控制点对(可选);制定所需变换类型并根据控制点对推断变换参数;变换未匹配的图像。%读入待匹配图像和标准图像unregistered = imread(westconcordaerial.png);figure,imshow(unregistered)orthophoto = imread(westconcordorthophoto.png);figure,imshow(orthophoto)%选择图像中对应的控制点cpselect(unregistered(:,:,1),orthophoto)%保存控制点对input_pointsbase_points%使用相关性进一步协调控制点对input_points_corr=cpcorr(input_points,base_points,unregistered(:,:,1),orthophoto);input_points_corr %根据控制点对推断空间变换参数mytform=cp2tform(input_points,base_points,projective
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 军地驾校考试题及答案
- 课件无法导入手机问题
- 警校招聘考试题及答案
- 铸造碳化钨制管工工艺考核试卷及答案
- 钽铌化合物制取工岗前考核试卷及答案
- 缩醛化药液配制工工艺创新考核试卷及答案
- 烧碱盐水工上岗考核试卷及答案
- 纸面石膏板制备工质量管控考核试卷及答案
- 绒线编织工上岗考核试卷及答案
- 丙烯酸树脂装置操作工理念考核试卷及答案
- 2025年TCL集团校园招聘笔试模拟试题及答案解析
- 2021-2025年高考化学真题知识点分类汇编之氮及其化合物
- 2025-2026学年人教版小学劳动技术二年级上册教学计划及进度表
- 2025西藏日喀则市高级技工学校招聘专业实训指导教师和后勤保障人员20人备考练习题库及答案解析
- 危重患者安全转运指南
- 2025中级经济师《建筑与房地产经济》章节千题
- 医院医患纠纷处理课件
- 2025-2026学年人教鄂教版(2024)小学科学三年级上册教学计划及进度表
- 手机行业知识培训课件
- 湖北省腾云联盟2026届高三8月联考物理(含答案)
- 教学资料管理制度
评论
0/150
提交评论