Matlab图象处理工具箱.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Matlab图象处理工具箱3.1Matlab图象处理初步读入、显示图象Imread函数用于读入各种图像文件,其语法格式为:I=imread(‘filename.fmt’)[X,map]=imread(‘filename.fmt’)其中参数fmt指定了图像的格式。可选的值为cur\bmp\hdf\ico\jpg\pcx\png\tif和xwd。默认的文件目录为当前MATLAB的工作目录。读入、显示图象在MATLAB中读取图像还经常使用load这个命令。load的功能是从*.mat文件中读取变量。Load格式为:loadfilename%把名为filename的*.mat文件中存储变量读入MATLAB的工作空间,各变量名为存储时的变量名。loadfilenameXY%把名为filename的*.mat文件中存储的X和Y变量读入MATLAB的工作空间。读入、显示图象Loadfilename.extLoadfilename-ASCTTLoadfilename-MATLoad(‘filename’)Loadfilename.ext可以读取名为filename的ASCII文件,文件可以存储各列用空格分开的ASCII格式的变量值.Loadfilename-ASCTT和Loadfilename-MAT决定是以ASCII格式还是以二进制格式读取变量读入、显示图象当用字符串格式文件名称时,Load(‘filename’)可以直接读取名为filename的*.mat文件.例如[I,map]=imread('pout.tif');savenewfileImaploadnewfileIwhos读入、显示图象MATLAB及图像处理工具箱的显示功能非常强大,不仅可以用来显示各种类型的图像,还可以用多种方式显示图像及图像序列。下面对这些函数进行介绍。1、imageImage是MATLAB本身提供的最原始的图像显示函数,其使用格式如下:image(X);读入、显示图象colormap(map);为了用image函数显示由矩阵表示的图像,MATLAB将矩阵的每个元素对应到当前调色板的一行,并取这一行的颜色值作为该点的颜色。因此显示图像时必须先指定调色板,才能真实地表示图像。例如:MATLAB预存的一组图像数据,包含图像矩阵X和调色板矩阵map,下面的读入、显示图象语句用来显示图。loadclownimage(X)colormap(map)读入、显示图象说明:clown也是MATLAB预存的一个mat文件,里面包含一个数据矩阵X和一个调色板map。另一个与image函数相似的函数是imagesc,两者的区别在于imagesc能够自动调整值域范围:figure,imagesc(X)读入、显示图象ImshowImshow函数是最常用的显示各种图像函数,其语法如下:imshow(I,n)imshow(I,[lowhigh])imshow(BW)imshow(X,map)读入、显示图象Imshow(RGB)imshow(I,n)和imshow(I,[lowhigh])用于显示灰度图像,n为灰度级数目,默认值为256。[lowhigh]为图像数据的值域。在很多情况下,经过处理的图像数据的值域都会发生变化。比如对一幅double型的灰度图像滤波后,图像数据的值域已不在[0,1]中了,如果还用前面的显示方法,则得不到正确的结果.如果清楚地知道数据的值域[lowhigh]可以使用调用imshow(I,[lowhigh]).否则可用空间读入、显示图象向量为参数,即imshow(I,[]).imshow(BW)用于显示二值图像,图像的数据类型可以是double和uint8,值域为或者;imshow(X,map)用于显示索引图像,X为数据图像矩阵,map为调色板;Imshow(RGB)用于真彩色图像。colorbarColorbar函数用于显示颜色条,并将图像中使用到的色彩排列在图像旁边,这样可以根据图像的色彩确定各像素的值。这对于用图像表示灰度范围不在通常范围的情况非常有用。读入、显示图象Colorbar函数语法格式如下:colorbar('vert')colorbar('horiz')colorbar(h)Colorbar其中colorbar(‘vert’)、colorbar(‘horiz’)分别指定了颜色的显示方式为垂直或水平,默认值为垂直。colorbar(h)将颜色条放在指定的坐标轴h上。读入、显示图象I=imread('trees.tif');imshow(I)colormap(jet(64))colorbar读入、显示图象Montage多帧图像指的是包含不止一幅图像的图像,MATLAB中支持多帧图像的文件格式有HDF和TIFF两种。多帧图像的显示方式也有两种,一种是显示多帧图像中的一帧,另一种是同时显示多帧图像的所有帧。例如读取图像mri的第3帧,我们可以用下列语句实现:读入、显示图象mri=uint8(zeros(128,128,1,27));forfrm=1:27[mri(:,:,:,frm),map]=imread('mri.tif',frm);endimshow(mri(:,:,:,3),map)另外还可以同时显示多帧图像中的所有帧,这是由montage函数完成,其语法为:读入、显示图象Montage(I)%拼接灰度图像Montage(X,map)%拼接索引图像Montage(RGB)%拼接真彩色图像下面的例子将序列图像拼接显示.loadmrimontage(D,map)读入、显示图象Immovie在MATLAB中,我们不但可以单独显示多帧,同时显示所有帧,还可以用动画的方式显示帧,Immovie函数即可以将多帧图像转换成MATLAB动画,其语法格式为:Mov=immovie(X,map)Immovie只能使用索引图像,因此如果要将其它类型的图像转换成动画,首先要转换成索引图像。要在MATLAB中播放这个动画,首先要指定调色板。读入、显示图象一般可以用下例语句放映动画:Colormap(map),movie(mov)例如loadmrimov=immovie(D,map);colormap(map);movie(mov)读入、显示图象SubimageMATLAB提供的subplot函数虽然能将一个图像窗口分成几个部分,但同一个图像窗口内只能有一个调色板。而MATLAB图像处理工具箱的Subimage函数可在一个图像窗口内使用多个调色板,使得各种图像能在同一个图像窗口中显示。Subimage函数的语法格式为:读入、显示图象subimage(X,map)%在一个窗口里显示多个索引图像。subimage(I)%在一个窗口里显示多个灰度图像。subimage(RGB)%在一个窗口里显示多个真彩图像。subimage(x,y,…)%将图像按指定的坐标(x,y)显示.下面的例子将显示两幅具有不同调色板的图像.读入、显示图象loadtrees[X2,map2]=imread('forest.tif');subplot(121),subimage(X,map)subplot(122),subimage(X2,map2)读入、显示图象I=imread(‘pout.tif’);imshow(I);whos;size(I);NameSizeBytesClassI291x24069840uint8arrayGrandtotalis69840elementsusing69840bytes读入、显示图象图像读取函数为:imread,并把读取出来的图像pout.tif存储在一个名为I的数组中,然后使用imshow来显示数组I,使用whos命令来查看图像数据I是如何存储在内存中,用size命令查看图像的大小。uint8[0,255]uint16[0,65535]double[0,1]读入、显示图象I=imread(‘pout.tif’);imshow(I);whos;size(I);f=imread(‘D:\myimage\lena256.jpg’);实现直方图均衡化上图的pout.tif图像对比较低,为了观察图像当前状态下分布情况,可以通过使用imhist函数创建描述该图像灰度分布的直方图。首先使用figure命令创建一个新的图像窗口,避免直方图覆盖图像数组I的显示结果。其程序如下:实现直方图均衡化I=imread(‘pout.tif’);imshow(I);figure,imhist(I);实现直方图均衡化由运行结果可知,图像没有覆盖整个灰度范围[0,255],仅在较狭窄范围内,同时图像中灰度值的高低区分不明显,无较好的对比度。可以通过调用histeq函数将图像的灰度值扩展到整个灰度范围中,从而达到提高数组I的对比度。其程序如下:实现直方图均衡化I2=histeq(I);figure,imshow(I2);figure,imhist(I2);保存图象将新调节后的图像I2保存到磁盘中。假设希望将该图像保存为JPG格式图像文件,使用imwrite函数并指定一个文件名,该文件的扩展名为.jpg。其程序为:保存图象imwrite(I2,‘pout2.jpg’);imwrite(I2,‘D:\myimage\pout2.jpg’);I3=imread(‘pout2.jpg’);Figure,imshow(I3)检查新生成文件的内容利用imfinfo函数可以观察上述语句写了什么内容在磁盘上。值得注意的是:在imfinfo函数语句行未尾不要加上分号,以保证MATLAB能够显示图像输出结果;另外,要保证此时的路径与调用imwrite时的路径一致。其程序如下:imfinfo('pout2.jpg')图象处理的应用例子估计图象背景图像rice.tif中心位置的背景亮度高于其它部分的亮度,使用imopen函数和一个半径为15的圆盘形结构元素对输入的图像I进行形态打开操作。形态打开操作将会删除那些不完全包括在半径为15的圆盘中的对象,从而实现背景亮度的估计,其程序如下:图象处理的应用例子clear;closeall;I=imread('rice.tif');imshow(I);bg=imopen(I,strel('disk',15));图象处理的应用例子clear;closeall;I=imread('rice.tif');imshow(I);bg=imopen(I,strel('disk',15));I2=imsubtract(I,bg);figure,imshow(I2);原始图象减去背景图象将背景图像bg从原始图像I中减去,从而创建一个新的、背景较为一致的图像,其程序如下:图象处理的应用例子bg=imopen(I,strel(‘disk’,15));I2=imsubtract(I,bg));figure,imshow(I2);I3=imadjust(I2,stretchlim(I2),[0,1]);figure,imshow(I3);调节图象对比度从图可看出,修改后的图像很暗,可以使用imadjust函数来调节图像的对比度,并显示调节后的效果。图象处理的应用例子I3=imadjust(I2,stretchlim(I2),[0,1]);figure,imshow(I3);level=graythresh(I3);bw=im2bw(I3,level);figure,imshow(bw)对图象作二值化变成二进制图象通过使用最大类间方差法找到图片的一个合适的阈值函数graythresh和im2bw创建一个新的二值图像bw,其程序如下:图象处理的应用例子level=graythesh(I3);bw=

1 / 47
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功