实验一常用MATLAB图像处理命令一、实验目的1、熟悉并掌握MATLAB工具的使用;2、实现图像的读取、显示、代数运算和简单变换。二、实验环境MATLAB6.5以上版本、WINXP或WIN2000计算机三、常用函数读写图像文件1imreadimread函数用于读入各种图像文件,如:a=imread('e:\w01.tif')2imwriteimwrite函数用于写入图像文件,如:imwrite(a,'e:\w02.tif',’tif’)3imfinfoimfinfo函数用于读取图像文件的有关信息,如:imfinfo('e:\w01.tif')图像的显示1imageimage函数是MATLAB提供的最原始的图像显示函数,如:a=[1,2,3,4;4,5,6,7;8,9,10,11,12];image(a);2imshowimshow函数用于图像文件的显示,如:i=imread('e:\w01.tif');imshow(i);title(‘原图像’)%加上图像标题3colorbarcolorbar函数用显示图像的颜色条,如:i=imread('e:\w01.tif');imshow(i);colorbar;4figurefigure函数用于设定图像显示窗口,如:figure(1);/figure(2);5subplot把图形窗口分成多个矩形部分,每个部分可以分别用来进行显示。Subplot(m,n,p)分成m*n个小窗口,在第p个窗口中创建坐标轴为当前坐标轴,用于显示图形。6plot绘制二维图形plot(y)Plot(x,y)xy可以是向量、矩阵。图像类型转换1rgb2gray//灰色把真彩图像转换为灰度图像i=rgb2gray(j)2im2bw//黑白通过阈值化方法把图像转换为二值图像I=im2bw(j,level)Level表示灰度阈值,取值范围0~1(即0.n),表示阈值取自原图像灰度范围的n%3imresize改变图像的大小I=imresize(j,[mn])将图像j大小调整为m行n列图像运算1imadd两幅图像相加,要求同样大小,同种数据类型Z=imadd(x,y)表示图像x+y2imsubstract两幅图像相减,要求同样大小,同种数据类型Z=imsubtract(x,y)表示图像x-y3immultiplyZ=immultiply(x,y)表示图像x*y4imdivideZ=imdivide(x,y)表示图像x/y5:m=imadjust(a,[,],[0.5;1]);%图像变亮n=imadjust(a,[,],[0;0.5]);%图像变暗g=255-a;%负片效果四、实验内容(请将实验程序填写在下方合适的位置,实验图像结果拷屏粘贴)1、读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。a=imread('f:\1.jpg')i=rgb2gray(a)I=im2bw(a,0.5)subplot(3,1,1);imshow(a);title('原图像')subplot(3,1,2);imshow(i);title('灰度图像')subplot(3,1,3);imshow(I);title('二值图像')2、对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分别显示,注上文字标题。a=imread('f:\1.jpg')A=imresize(a,[800800])b=imread('f:\2.jpg')B=imresize(b,[800800])Z1=imadd(A,B)Z2=imsubtract(A,B)Z3=immultiply(A,B)Z4=imdivide(A,B)subplot(3,2,1);imshow(A);title('原图像A')subplot(3,2,2);imshow(B);title('原图像B')subplot(3,2,3);imshow(Z1);title('加法图像')subplot(3,2,4);imshow(Z2);title('减法图像')subplot(3,2,5);imshow(Z3);title('乘法图像')subplot(3,2,6);imshow(Z2);title('除法图像')3、对一幅图像进行灰度变化,实现图像变亮、变暗和负片效果,在同一个窗口内分成四个子窗口来分别显示,注上文字标题。a=imread('f:\1.jpg');m=imadjust(a,[,],[0.5;1]);%图像变亮n=imadjust(a,[,],[0;0.5]);%图像变暗g=255-a;%负片效果subplot(2,2,1);imshow(a);title('原图像')subplot(2,2,2);imshow(m);title('图像变亮')subplot(2,2,3);imshow(n);title('图像变暗')subplot(2,2,4);imshow(g);title('负片效果')4、熟悉数字图像处理常用函数的使用,调出帮助文档查看其各种不同用法。方法:选择函数(函数所在区变暗),点右键弹出菜单,选择“HelponSelection”五、实验总结分析图像的代数运算结果,分别陈述图像的加、减、乘、除运算可能的应用领域。实验四常用图像增强方法一、实验目的1、熟悉并掌握MATLAB图像处理工具箱的使用;2、理解并掌握常用的图像的增强技术。二、实验环境MATLAB6.5以上版本、WINXP或WIN2000计算机三、相关知识1imnoiseimnoise函数用于对图像生成模拟噪声,如:i=imread('e:\w01.tif');j=imnoise(i,'gaussian',0,0.02);模拟均值为0方差为0.02的高斯噪声,j=imnoise(i,'salt&pepper',0.04)模拟叠加密度为0.04的椒盐噪声2fspecialfspecial函数用于产生预定义滤波器,如:h=fspecial('sobel');%sobel水平边缘增强滤波器h=fspecial('gaussian');%高斯低通滤波器h=fspecial('laplacian');%拉普拉斯滤波器h=fspecial('log');%高斯拉普拉斯(LoG)滤波器h=fspecial('average');%均值滤波器3基于卷积的图像滤波函数imfilter函数,filter2函数,二维卷积conv2滤波,都可用于图像滤波,用法类似,如:i=imread('e:\w01.tif');h=[1,2,1;0,0,0;-1,-2,-1];%产生Sobel算子的水平方向模板j=filter2(h,i);或者:h=fspecial(‘prewitt’)I=imread('cameraman.tif');imshow(I);H=fspecial('prewitt‘);%预定义滤波器M=imfilter(I,H);imshow(M)或者:i=imread('e:\w01.tif');h=[1,1,1;1,1,1;1,1,1];h=h/9;j=conv2(i,h);4其他常用滤波举例(1)中值滤波medfilt2函数用于图像的中值滤波,如:i=imread('e:\w01.tif');j=medfilt2(i,[MN]);对矩阵i进行二维中值滤波,领域为M*N,缺省值为3*3(2)利用拉氏算子锐化图像,如:i=imread('e:\w01.tif');j=double(i);h=[0,1,0;1,-4,0;0,1,0];%拉氏算子k=conv2(j,h,'same');三、实验步骤1、采用二维中值滤波函数medfilt2对受椒盐噪声干扰的图像滤波,窗口分别采用3*3,5*5,7*7I=imread('f:\lena.png');J=imnoise(I,'salt&pepper',0.04);K1=medfilt2(J,[33]);%对矩阵i进行二维中值滤波,领域为3*3K2=medfilt2(J,[55]);K3=medfilt2(J,[77]);subplot(2,2,1);imshow(J);title('椒盐噪声干扰图像')subplot(2,2,2);imshow(K1);title('领域为3*3二维中值滤波')subplot(2,2,3);imshow(K2);title('领域为5*5二维中值滤波')subplot(2,2,4);imshow(K3);title('领域为7*7二维中值滤波')2、采用MATLAB中的函数filter2对受噪声干扰的图像进行均值滤波I=imread('f:\lena.png');j=imnoise(i,'gaussian',0,0.02);%模拟均值为0方差为0.02的高斯噪声,M=filter2(fspecial('average',9),J)/255;%模板尺寸为9subplot(2,1,1);imshow(j);title('噪声干扰图像')subplot(2,1,2);imshow(M);title('改进后的图像')3、采用三种不同算子对图像进行锐化处理。i=imread('f:\1.jpg')I=rgb2gray(s)H=fspecial('sobel')%应用Sobel算子锐化图像I1=filter2(H,I)%Sobel算子滤波锐化H=fspecial('prewitt')%应用prewitt算子锐化图像I2=filter2(H,I)%prewitt算子滤波锐化H=fspecial('log')%应用log算子锐化图像I3=filter2(H,I)%log算子滤波锐化subplot(2,2,1);imshow(i);title('原图像')subplot(2,2,2);imshow(I1);title('Sobel算子锐化图像')subplot(2,2,3);imshow(I2);title('prewitt算子锐化图像')subplot(2,2,4);imshow(I3);title('log算子锐化图像')四、实验总结1、比较不同平滑滤波器的处理效果,分析其优缺点2、比较不同锐化滤波器的处理效果,分析其优缺点实验五图像恢复和图像分割一、实验目的1、熟悉并掌握MATLAB图像处理工具箱的使用;2、理解并掌握常用的图像的恢复和分割技术。二、实验环境MATLAB6.5以上版本、WINXP或WIN2000计算机三、相关知识1deconvwnr维纳滤波,用法:J=deconvwnr(I,PSF,NSR)用维纳滤波算法对图片I进行图像恢复后返回图像J。I是一个N维数组。PSF是点扩展函数的卷积。NSP是加性噪声的噪声对信号的功率比。如:I=im2double(imread('cameraman.tif'));imshow(I);title('OriginalImage');%模拟运动模糊Matlab中文论坛LEN=21;THETA=11;PSF=fspecial('motion',LEN,THETA);blurred=imfilter(I,PSF,'conv','circular');figure,imshow(blurred)%恢复图像=deconvwnr(blurred_noisy,PSF);figure,imshow(wnr2)title('RestorationofBlurred')2edge检测灰度或者二值图像的边缘,返回一个二值图像,1像素是检测到的边缘,0像素是非边缘。用法:BW=edge(I,'sobel',thresh,direction),I为检测对象;边缘检测算子可用sobel,roberts,prewitt,zerocross,log,canny;thresh指定阈值,检测时忽略所有小于阈值的边缘,默认自动选择阈值;direction方向,在所指定的方向direction上,用算子进行边缘检测h