MATLAB图像处理命令使用1.MATLAB中图像处理的一些简单函数A、imreadimread函数用于读入各种图像文件,其一般的用法为[X,MAP]=imread(‘filename’,‘fmt’)其中,X,MAP分别为读出的图像数据和颜色表数据,fmt为图像的格式,filename为读取的图像文件(可以加上文件的路径)。例:[X,MAP]=imread(’flowers.tif’,’tif’);比较读取二值图像,灰度图像,索引图像,彩色图像的X和MAP的特点,可以利用size函数用来显示数组的维数,了解数据的特点。B=size(a)返回数组a的维数。B、imwriteimwrite函数用于输出图像,其语法格式为:imwrite(X,map,filename,fmt)imwrite(X,map,filename,fmt)按照fmt指定的格式将图像数据矩阵X和调色板map写入文件filename。C、imfinfoimfinfo函数用于读取图像文件的有关信息,其语法格式为imfinfo(filename,fmt)imfinfo函数返回一个结构info,它反映了该图像的各方面信息,其主要数据包括:文件名(路径)、文件格式、文件格式版本号、文件的修改时间、文件的大小、文件的长度、文件的宽度、每个像素的位数、图像的类型等。2.MATLAB中图像文件的显示imshowimshow函数是最常用的显示各种图像的函数,其语法如下:imshow(X,map)其中X是图像数据矩阵,map是其对应的颜色矩阵,若进行图像处理后不知道图像数据的值域可以用[]代替map。(1)二进制(二值)图像显示方法,在MATLAB中一幅二值图像是uint8或双精度的,该矩阵仅包含0和1。如果希望工具箱中的函数能将图像理解为二进制的,那么所有数据都要是逻辑数据,必须对其进行设置(将所有数据标志均设置on).可以对数据利用“~”取反操作实现图像逆转即黑白反色。(2)灰度图像的显示方法,正常情况下无需指定灰度图像的调色板格式。可以是使用imshow函数指定要显示灰度级数目,格式imshow(I,n),n为指定的灰度级数目。用户也可以指定数据的范围,格式imshow(I,[lowhigh])其中low和high参数分别为数据数组的最小值和最大值。如果为空矩阵([]),那么imshow函数将自动进行数据标度。(3)索引图像,imshow(x,map)对于x的每个个像素,imshow显示存储map中相应行的颜色。(4)RGB图像的显示,它直接对颜色进行描述而不使用调色板,格式imshow(RGB)。RGB(:,:,1)RGB(:,:,2)RGB(:,:,3)(5)特殊显示,如多幅图像的显示,需要显示多幅图像时。可以使用figure语句,它的功能就是重新打开一个图像显示窗口。例:I=imread(‘rice.tif’);Imshow(I);J=imread(‘flowers.tif’);figure,imshow(J);也可以将多幅图像显示在同一个单独的图像窗口中,有两种方法:一种是联合imshow和subplot函数;另一种是联合使用subimage函数和subplot函数,subplot(m,n,p)这种格式将图形窗口划分为m*n个矩形显示区域并激活第p个显示区域。A[x1,map1]=imread('trees.tif');[x2,map2]=imread('forest.tif');subplot(1,2,1),imshow(x1,map1)subplot(1,2,2),imshow(x2,map2)B[x1,map1]=imread('trees.tif');[x2,map2]=imread('forest.tif');subplot(1,2,1),subimage(x1,map1)subplot(1,2,2),subimage(x2,map2)3.MATLAB中灰度直方图的显示MATLAB图像处理工具箱提供了imhist函数来计算和显示图像的直方图,imhist函数的语法格式为:imhist(I,n)imhist(X,map)其中imhist(I,n)计算和显示灰度图像I的直方图,n为指定的灰度级数目,默认值为256。imhist(X,map)计算和显示索引色图像X的直方图,map为调色板。例:I=imread('rice.tif');imshow(I)figure,imhist(I)4.对比度增强如果原图像f(x,y)的灰度范围是[m,M],我们希望调整后的图像g(x,y)的灰度范围是[n,N],那么下述变换,,就可以实现这一要求。MATLAB图像处理工具箱中提供的imadjust函数,可以实现上述的线性变换对比度增强。Imadjust函数的语法格式为:J=imadjust(I,[low_inhigh_in],[low_outhigh_out])J=imadjust(I,[low_inhigh_in],[low_outhigh_out])返回图像I经过直方图调整后的图像J,[low_inhigh_in]为原图像中要变换的灰度范围,[low_outhigh_out]指定了变换后的灰度范围。其详细的用法可参见《计算机图像处理与识别技术》。例:I=imread('pout.tif');J=imadjust(I,[0.30.7],[]);imshow(I),figure,imshow(J)5.图像类型转换:图像类型之间的转换有时非常有用。MATLAB提供的图像类型转换函数函数功能dither使用抖动方法,根据灰度图像船舰二进制图像和根据RGB图像创建索引图像gray2ind根据一幅灰度图像创建索引图像grayslice使用阈值截取方法,根据一幅灰度图像创建索引图像im2bw使用阈值截取方法,根据一幅灰度图像,索引图像或RGB图像创建二进制图像ind2gray根据一幅索引图像创建一幅灰度图像ind2rgb根据一幅索引图像创建一幅RGB图像mat2gray通过数据缩放,在根据矩阵数据创建一幅灰度图像rgb2gray根据一幅RGB图像创建一幅灰度图像rgb2ind根据一幅RGB图像创建一幅索引图像上表中函数有类似的调用格式:函数的输入参数是图像数据矩阵(如果是索引图像,那么输入参数还包括调色板),返回值是转换后的函数(包括索引函数的调色板),只有函数im2bw的调用格式不同,其输入参数中还包括一个截取阈值,超过此阈值的像素被截取为1否则为0。示例:A、loadtreesBW=im2bw(X,map,0.4);imview(X,map),imview(BW)B、I=imread('snowflakes.png');X=grayslice(I,16);imview(I)imview(X,jet(16))6.MATLAB还提供了图像存储类型之间的转换函数这些函数包含im2doble、im2uint8和im2uint16,这些函数可以自动的进行原始数据的重新标度和偏移.调用格式简单,输入为图像矩阵,输出为转换后的图像:如:以下命令将一个描述双精度RGB1图像的矩阵(数据范围为[0,1]转换为uint8的图像矩阵([0,255]范围内)RGB2=im2uint8(rgb1);也可以使用MATLAB函数对图像存储类型进行转换。例如,double函数可以将uint8或uint16的数据转化为双精度数据。存储类型之间的转变将改变matlab及其工具箱理解图像数据的方式,如果用户希望转换后得到的数组能够被正确的理解为图像数据,那么转换时需要重新标度或偏移数据。当使用较少的类型来描述数字图像时,通常可能丢失用户图像的一些信息。7.图像格式之间的转换可以间接利用图像读写函数来完成;首先使用imread函数按照原有的图像格式进行图像读取,然后调用imwrite函数对图像进行保存,并指定图像的保存格式。如将BMP格式转换为PNG格式,bitmap=imread(‘mybitmap,bmp’,’bmp’)imwrite(‘mybitmap,png’,’png’)matlab图像处理命令二值图像操作色图操作brighten亮/暗色图cmpermute色图中颜色的重排colormap设置色图imapprox以较少的颜色来近似索引图像rgbplot绘制RGB色图色彩空间变换hsv2rgb饱和色彩色图HSV向红绿蓝色图RGB转换ntsc2rgb将NTSC制式值转换到RGB颜色空间rgb2hsvRGB色图M向HSV色图cmap转换rgb2ntsc将RGB颜色空间转换到NTSC制式rgb2ycbcr将RGB颜色空间转换到YCBCR颜色空间ycbcr2rgb将YCBCR颜色空间转换到RGB颜色空间图像类型判断及其转换dither用抖动法(dithering)转换图像gray2ind灰度图像向索引图像转换grayslice设定阀值将灰度图转换为索引图isbw图像为二值图像则返回真isgray图像为灰度图像则返回真isind图像为索引图像则返回真isrgb图像为RGB图像则返回真im2bw设定阀值将图像转换为值维图像im2double将图像数据阵列转换为double型im2uint8将图像数据阵列转换为uint8型im2uint16将图像数据阵列转换为uint16型ind2gray索引图像向灰度图像转换ind2rgb索引图像向RGB图像转换mat2rgb将矩阵转换为灰度图rgb2grayRGB图像向灰度图转换rgb2indRGB图像向索引图像转换图像处理演示函数dctdemo二维DCT图像压缩演示edgedemo边缘检测演示firdemo二维FIR滤波及滤波器演示imadjdemo灰度及调整和直方图均衡演示landsatdemo陆地卫星颜色合成演示nrfiltdemo噪声消除滤波演示qtdemo四叉树分解演示roidemo特定区域处理演示图像分析edge得到加强图像的边缘qtdecomp四叉树分解qtgetblk得到四叉树分解的块值qtsetblk调整四叉树分解的块值图像增强histeq自动调整直方图imadjust灰度级调整imnoise引入各种类型的噪声medfilt2中值滤波ordfilt2执行二维阶统计滤波wiener2维纳滤波器的二维滤波线性滤波conv2图像卷积convmtx2计算二维卷积矩阵convn图像的n维卷积filter2二维线性滤波fspecial产生预定义的滤波器medfilt2中值滤波wiener2维纳滤波器的二维滤波二维线性滤波器的设计filter2二维线性滤波fspecial产生预定义的滤波器fsample生成滤波器freqz2计算二维滤波器的频率响应fsamp2二维FIR滤波器的频率采样设计fwind1由用户自定义的两个一维窗口生成一个二维窗口滤波器fwind2由一个已知的二维窗口直接生成一个二维滤波器hamming创建一个一维窗口freqspace生成合适的频率点阵矩阵ftrans2频率变换图像变换dct离散余弦变换dct2计算二维离散余弦变换dctmtx计算离散余弦变换矩阵dctmtx2计算二维离散余弦变换矩阵dctdemo二维离散余弦变图像压缩矩阵fft2得到二维FFT的结果fftnN维FFT变换fftshiftnFFT变换结果的逆象限iradonRadon逆变换idct离散余弦离散余弦变换的逆变换idct2计算二维离散余弦离散余弦变换的逆变换radonRadon变换邻域及块处理blkproc执行分块操作bestblk选择用于块处理的块尺寸col2im对矩阵的列进行块重排colfilt利用列式函数进行邻域操作im2col将图像块按列重排nlfilter执行常规滑动邻域操作图像的区域处理rolpoly选定多边形形状的特定区域roifilt2对图像特定区域进行滤波roifill指定区域的快速插值roicolor根据颜色进行图像显示colorbar对图像增加颜色条figure在不同的图像窗口显示不同的图像getimage从轴上得到图像数据montage多贞图像一次显示ima