《2Matlab基本图像操作》由会员分享,可在线阅读,更多相关《2Matlab基本图像操作(41页珍藏版)》请在金锄头文库上搜索。
1、数字图像处理数字图像处理- -MatlabMatlab基本图像操作基本图像操作同济大学现代农业研究院同济大学现代农业研究院2MATLAB MATLAB 图像处理图像处理3二、读图像和图像信息二、读图像和图像信息v1 1、读读取取取取图图像像像像v函数函数函数函数imreadimread可以从任何可以从任何可以从任何可以从任何MatlabMatlab支持的支持的支持的支持的图图像文件格式中,以任意位深度像文件格式中,以任意位深度像文件格式中,以任意位深度像文件格式中,以任意位深度读读取一幅取一幅取一幅取一幅图图像。像。像。像。格式格式格式格式为为:v X,MAP=imread(FILENAME.
2、FMT)X,MAP=imread(FILENAME.FMT)v其中:其中:其中:其中:vFILENAMEFILENAME为为需要需要需要需要读读入的入的入的入的图图像文件名像文件名像文件名像文件名vFMTFMT为图为图像格式像格式像格式像格式图像格式图像格式格式名称 描述 可识别扩展符TIFF加标记的图像文件格式.tif, .tiffJPEG联合图像专家组.jpg, .jpegGIF图形交换格式.gifBMPWindows位图.bmpPNG可移植网络图形.pngXWDX Window 转储.xwd5二、读图像和图像信息二、读图像和图像信息v2 2、读读取取取取图图像信息像信息像信息像信息v可以
3、通可以通可以通可以通过调过调用用用用imfinfoimfinfo函数函数函数函数获获得与得与得与得与图图像文像文像文像文件有关的信息,格式如下:件有关的信息,格式如下:件有关的信息,格式如下:件有关的信息,格式如下:v INFO=imfinfo(FILENAMEINFO=imfinfo(FILENAME,FMT),FMT)v其中:其中:其中:其中:v返回的返回的返回的返回的INFOINFO是是是是MatlabMatlab的一个的一个的一个的一个结结构体。构体。构体。构体。 语法:M, N=size ( filename ) 说明:给出一幅图像的行数和列数MatlabMatlab图像编程图像编程
4、v图像的像的读取取 imread语句句 example: f = imread(bed.jpg); n图像的大小图像的大小 sizesize语句语句 example: f = imread(f = imread(bed.jpgbed.jpg) );sizesize(f f) MATLABMATLAB图像类型图像类型v亮度亮度图像像(灰度灰度图像像):数据矩:数据矩阵I表示灰度表示灰度值,如,如果是果是uint8类型,数型,数值范范围可以是可以是0,255;如果是如果是uint16类型,数型,数值范范围为0,65536v二二值图像:在像:在MATLAB数数组中只有中只有0和和1两个取两个取值。v
5、索引索引图像:包括一个数据矩像:包括一个数据矩阵X(整数,整数,对应MAP中的行号中的行号)和色和色图阵MAPvRGB图像像:包括一个包括一个m*n*3的数据矩的数据矩阵8三、图像类别与数据格式三、图像类别与数据格式1、真彩图像、真彩图像9三、图像类别与数据格式三、图像类别与数据格式2、索引图像、索引图像10三、图像类别与数据格式三、图像类别与数据格式3、灰度图像、灰度图像11三、图像类别与数据格式三、图像类别与数据格式4、二值图像、二值图像图像类型之间的转换图像类型之间的转换vG=im2bw(I,T)该函数的功能就是将亮度函数的功能就是将亮度图像像I转换为一幅二一幅二值图像像G。在亮度。在亮
6、度图像中,亮度像中,亮度值小于小于T的像素的像素点全部点全部转换为二二值图像中像中值为0的像素点;在的像素点;在亮度亮度图像中,亮度像中,亮度值大于大于T的像素点全部的像素点全部转换为二二值图像中像中值为1的像素点。的像素点。该函数函数规定定T的取的取值必必须在在0-1内。首先内。首先MATLAB会将亮会将亮度度图像的像的值I归一化到一化到0,1间,再,再进行行转换。彩色图像到灰度图像的转换彩色图像到灰度图像的转换vG=rgb2gray(I)该函数将彩色函数将彩色图像数像数组I转换为灰度灰度图像像G。14四、图像显示四、图像显示vMatlabMatlab的的的的图图像像像像显显示函数主要有:示
7、函数主要有:示函数主要有:示函数主要有:vimshowimshow、colorbarcolorbar和和和和subimagesubimage三个。三个。三个。三个。15四、图像显示四、图像显示v1 1、imshow(I,n)imshow(I,n)v显显示灰度示灰度示灰度示灰度级为级为n n的的的的图图像,像,像,像,n n缺省缺省缺省缺省为为256256。v【例例例例】按按按按256256灰度灰度灰度灰度级显级显示示示示vI=imread(moon.tif);I=imread(moon.tif);vimshow(I,256)imshow(I,256)vcolorbarcolorbar16四、图
8、像显示四、图像显示v【例例例例】按按按按8 8灰度灰度灰度灰度级显级显示示示示vI=imread(moon.tif);I=imread(moon.tif);vimshow(I,8)imshow(I,8)vcolorbarcolorbar17四、图像显示四、图像显示v2 2、imshow(I,low,high)imshow(I,low,high)v以灰度范以灰度范以灰度范以灰度范围围low,highlow,high显显示示示示图图像,如果不知道像,如果不知道像,如果不知道像,如果不知道灰度范灰度范灰度范灰度范围围,可以用,可以用,可以用,可以用imshow(I,)imshow(I,)显显示。示。
9、示。示。v【例例例例】按最大灰度范按最大灰度范按最大灰度范按最大灰度范围显围显示示示示vI=imread(moon.tif);I=imread(moon.tif);vimshow(I,)imshow(I,)vcolorbarcolorbar18四、图像显示四、图像显示v【例例例例】按指定灰度范按指定灰度范按指定灰度范按指定灰度范围显围显示示示示vI=imread(moon.tif);I=imread(moon.tif);vimshow(I,64,128)imshow(I,64,128)vcolorbarcolorbar19四、图像显示四、图像显示v3 3、imshow(BW)imshow(BW
10、)v显显示二示二示二示二值图值图像。像。像。像。v【例例例例】双精度灰度双精度灰度双精度灰度双精度灰度图图像像像像vbw1=zeros(100,100);bw1=zeros(100,100);vbw1(2:2:98,2:2:98)=1;bw1(2:2:98,2:2:98)=1;vimshow(bw1);imshow(bw1);20四、图像显示四、图像显示v【例例例例】8 8位的灰度位的灰度位的灰度位的灰度图图像像像像vbw1=zeros(100,100);bw1=zeros(100,100);vbw1(2:2:98,2:2:98)=1;bw1(2:2:98,2:2:98)=1;vbw2=uin
11、t8(bw1);bw2=uint8(bw1);vimshow(bw2,);imshow(bw2,);vcolorbarcolorbar21四、图像显示四、图像显示v【例例例例】显显示二示二示二示二值图值图像像像像vBW=imread(circles.tif);BW=imread(circles.tif);vimshow(BW);imshow(BW);22四、图像显示四、图像显示v【例例例例】取反取反取反取反显显示二示二示二示二值图值图像像像像vBW=imread(circles.tif);BW=imread(circles.tif);vimshow(BW);imshow(BW);23四、图像显
12、示四、图像显示v【例例例例】显显示二示二示二示二值图值图像像像像vclfclfvBW=imread(circles.tif);BW=imread(circles.tif);vimshow(BW,100;001);imshow(BW,100;001);24四、图像显示四、图像显示v4 4、imshow(X,MAP)imshow(X,MAP)v显显示索引示索引示索引示索引图图像,像,像,像,XX为为数据数据数据数据图图像矩像矩像矩像矩阵阵,MAPMAP为调为调色色色色板。板。板。板。v【例例例例】显显示索引示索引示索引示索引图图像像像像vX,MAP=imread(canoe.tif);X,MAP=
13、imread(canoe.tif);vimshow(X,MAP);imshow(X,MAP);vcolorbarcolorbar25四、图像显示四、图像显示v【例例例例】显显示示示示伪伪彩色彩色彩色彩色图图像像像像vI=imread(moon.tif);I=imread(moon.tif);vimshow(I,jet(256)imshow(I,jet(256)vcolorbarcolorbar26四、图像显示四、图像显示v5 5、imshow(RGB)imshow(RGB)v显显示真彩色示真彩色示真彩色示真彩色图图像。像。像。像。v【例例例例】vrgb=imread(flowers.tif);
14、rgb=imread(flowers.tif);vimshow(rgb);imshow(rgb);27四、图像显示四、图像显示v6 6、imshowfilenameimshowfilenamev直接直接直接直接显显示示示示图图像。像。像。像。v【例例例例】直接直接直接直接显显示示示示图图像像像像vimshow(moon.tif);imshow(moon.tif);vI=getimage;I=getimage;28四、图像显示四、图像显示v7 7、subimagesubimagev多多多多图显图显示多个示多个示多个示多个调调色板的色板的色板的色板的图图像。像。像。像。v【例例例例】vloadtr
15、ees;loadtrees;vx2,map2=imread(forest.tif);x2,map2=imread(forest.tif);vsubplot(2,1,1),subimage(X,map);colosubplot(2,1,1),subimage(X,map);colorbarrbarvsubplot(2,1,2),subimage(x2,map2);cosubplot(2,1,2),subimage(x2,map2);colorbarlorbar29四、图像显示四、图像显示30四、图像显示四、图像显示v【例例例例】不用不用不用不用专专用函数用函数用函数用函数显显示多示多示多示多图图
16、vloadtrees;loadtrees;vx2,map2=imread(forest.tif);x2,map2=imread(forest.tif);vsubplot(2,1,1),imshow(x2,map2);colosubplot(2,1,1),imshow(x2,map2);colorbarrbarvsubplot(2,1,2),imshow(X,map);colorbsubplot(2,1,2),imshow(X,map);colorbarar31四、图像显示四、图像显示32五、保存图像五、保存图像v1 1、imwriteimwrite函数函数函数函数vimwrite(I,imwr
17、ite(I,文件名文件名文件名文件名,文件格式文件格式文件格式文件格式)保存无保存无保存无保存无调调色色色色板的板的板的板的图图像像像像vimwrite(X,MAP,imwrite(X,MAP,文件名文件名文件名文件名,文件格式文件格式文件格式文件格式)保存保存保存保存有有有有调调色板的色板的色板的色板的图图像像像像vimwrite(.,imwrite(.,文件名文件名文件名文件名)文件名中含格式文件名中含格式文件名中含格式文件名中含格式vimwrite(.,imwrite(.,参数参数参数参数,值值)指定保存参数指定保存参数指定保存参数指定保存参数v文件格式:文件格式:文件格式:文件格式:b
18、mpbmp、jpgjpg、pcxpcx、tiftif。33五、保存图像五、保存图像v【例例例例】将将将将tiftif图图像保存像保存像保存像保存为为jpgjpg图图像像像像vx,map=imread(canoe.tif);x,map=imread(canoe.tif);vimwrite(x,map,canoe.jpg,JPG,Qualiimwrite(x,map,canoe.jpg,JPG,Quality,75)ty,75)v图像的保存图像的保存 imwriteimwrite语句语句 example: imwrite(f imwrite(f,filenamefilename) ); 34数字图
19、像读取数字图像读取vimfinfo(1.jpg)%显示示图象文件象文件1.jpg的属性的属性v读一幅一幅图象象(灰度灰度值图象或彩色象或彩色图象象),研究其研究其图象参数象参数vA=imread(1.jpg);%读图象象1.jpg,并将像素并将像素值阵列列赋给矩矩阵Avimshow(A);%显示示图象象AvA %显示示图象象A的像素的像素值(若若图象象过大大,显示示时v间就会就会过长,按按ctrl+C终止止)vwhos %显示内存中各示内存中各变量的量的类型型,包括包括A35图像的灰度直方图图像的灰度直方图va=imread(1.jpg);vimshow(a);vfigure,imhist(a
20、,64);%作作b的灰度直的灰度直方方图,64可改可改为128,256等等36图像对比度增强图像对比度增强vI=imread(pout.tif);vJ=imadjust(I,0.30.7,);vimshow(I),figure,imshow(J)vJ=imadjust(I,low_inhigh_in,low_outhigh_out)v返回返回图象象I经过直方直方图调整后的整后的图象象J,low_inhigh_in为v图象中要象中要变换的灰度范的灰度范围,low_outhigh_out指定指定了了变换v的灰度范的灰度范围。37人为加噪声人为加噪声vI=imread(eight.tif);vJ1=
21、imnoise(I,gaussian,0,0.02);vJ2=imnoise(I,salt&pepper,0.02);vJ3=imnoise(I,speckle,0.02);vsubplot(2,2,1),imshow(I),title(原原图像像);vsubplot(2,2,2),imshow(J1),title(加高斯噪声加高斯噪声);vsubplot(2,2,3),imshow(J2),title(加椒加椒盐噪声噪声);vsubplot(2,2,4),imshow(J3),title(加乘性噪声加乘性噪声)v其中其中J=imnoise(I,type)返回返回对原始原始图像像I添加典型添加
22、典型噪声的有噪噪声的有噪图像像J。参数。参数type和和parameters用于确定用于确定噪声的噪声的类型和相型和相应的参数。的参数。函数函数subplot,作用就是将多幅,作用就是将多幅图像像显示再同一幅示再同一幅图像像显示示对话框中。其框中。其语法格式法格式为:subplot(m,n,p)其作用就是将一个其作用就是将一个图像像显示示对话框分框分成成m行行n列,并列,并显示第示第p幅幅图像。像。38人为加噪声人为加噪声v%例例图像加噪声再通像加噪声再通过多次相加求平均的方法祛除噪声多次相加求平均的方法祛除噪声vI,M=imread(eight.tif);vJ=imnoise(I,gauss
23、ian,0,0.5);vsubplot(1,2,1),imshow(I,M),title(原原图像像);vsubplot(1,2,2),imshow(J,M),title(加噪声后加噪声后图像像);vk=zeros(242,308);vfori=1:100vJ=imnoise(I,gaussian,0,0.02);vJ1=im2double(J);vk=k+J1;vEndvk=k./100;%求求图像的平均像的平均vfigure;imshow(k),title(相加求平均后的相加求平均后的图像像);39图像差值放大图像差值放大vI=imread(1.jpg);vJ=imresize(I,10)
24、;vimshow(I),title(原原图像像)vfigure,imshow(J),title(放大后的放大后的图像像);vB=imresize(A,m)返回原返回原图A的的m倍放大倍放大的的图像(像(m小于小于1时效果是效果是缩小)。小)。40图像旋转图像旋转vI=imread(1.jpg);vJ=imrotate(I,30,bilinear);vimshow(I);title(原原图像像)vfigure,imshow(J),title(旋旋转后的后的图像像);vB=imrotate(A,angle,method)v函数函数imrotate对图像像进行旋行旋转,参数,参数method用于指定
25、插用于指定插值的方法的方法,可,可选用的用的值为nearest(最(最邻近法),近法),bilinear(双(双线性性插插值),),bicubic(双三次插(双三次插值),默),默认为nearest。一般。一般说来旋来旋转后的后的图像会比原像会比原图大,大,超出原超出原图部分部分值为0。41傅里叶变换傅里叶变换vloadimdemossaturn2vimshow(saturn2);vB=fftshift(fft2(saturn2);vfigure,imshow(log(abs(B),notruesize);vB=fft2(I)v返回返回图象象I的二的二维fft变换矩矩阵,输入入图象象I和和输出出图象象vB大小相同。大小相同。