您好,欢迎访问三七文档
当前位置:首页 > 医学/心理学 > 医学现状与发展 > matlab图像处理读书
1.MATLAB中图像处理的一些简单函数A、imread根据图像数据矩阵解释方法的不同,MATLAB把其处理为4类:亮度图像(Intensityimages)、二值图像(Binaryimages)、索引图像(Indexedimages)、RGB图像(RGBimages)。(1)灰度图像一幅亮度图像是一个数据矩阵,其归一化的取值表示亮度。若亮度图像的像素都是uint8类或uint16类,则它们的整数值范围分别是[0,255]和[065536]。若图像是double类,则像素取值就是浮点数。规定双精度型归一化亮度图像的取值范围是[01]示例图像名:cell.tifcameraman.tifrice.pngA=imread(‘cell.tif’);imshow(A)(2)二值图像一幅二值图像是一个取值只有0和1的逻辑数组。而一幅取值只包含0和1的uint8类数组,在MATLAB中并不认为是二值图像。使用logical函数可以把数值数组转化为二值数组或逻辑数组。创建一个逻辑图像,其语法为:B=logical(A),其中,B是由0和1构成的数值数组。要测试一个数组是否为逻辑数组,可以使用函数:islogical(c),若C是逻辑数组,则该函数返回1;否则,返回0。示例图像名:circles.pngB=imread(‘circles.png’);imshow(B)(3)索引图像索引颜色通常也称为映射颜色,在这种模式下,颜色都是预先定义的,并且可供选用的一组颜色也很有限,索引颜色的图像最多只能显示256种颜色。一幅索引颜色图像在图像文件里定义,当打开该文件时,构成该图像具体颜色的索引值就被读入程序里,然后根据索引值找到最终的颜色。一个典型的索引图像可以用windows自带的画图软件以256色位图格式保存的方法生成。示例图像名:canoe.tif[I,map]=imread(‘canoe.tif’);imshow(I,map)(4)RGB图像一幅RGB图像就是彩色像素的一个M×N×3数组,其中每一个彩色相似点都是在特定空间位置的彩色图像相对应的红、绿、蓝三个分量。按照惯例,形成一幅RGB彩色图像的三个图像常称为红、绿或蓝分量图像。令fR,fG和fB分别代表三种RGB分量图像。一幅RGB图像就利用cat(级联)操作将这些分量图像组合成彩色图像:rgb_image=cat(3,fR,fG,fB)。在操作中,图像按顺序放置。示例图像名:autumn.tiffootball.jpgC=imread(‘autumn.tif’);imshow(C)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
本文标题:matlab图像处理读书
链接地址:https://www.777doc.com/doc-2887249 .html