当前位置:文档之家› MATLAB中图像函数大全 详解及例子

MATLAB中图像函数大全 详解及例子

图像处理函数详解——strel功能:用于膨胀腐蚀及开闭运算等操作的结构元素对象(本论坛随即对膨胀腐蚀等操作进行讲解)。

用法:SE=strel(shape,parameters)创建由指定形状shape对应的结构元素。

其中shape的种类有arbitrary''pair''diamond''periodicline''disk''rectangle''line''square''octagon参数parameters一般控制SE的大小。

例子:se1=strel('square',6)%创建6*6的正方形se2=strel('line',10,45)%创建直线长度10,角度45se3=strel('disk',15)%创建圆盘半径15se4=strel('ball',15,5)%创建椭圆体,半径15,高度5图像处理函数详解——roipoly功能:用于选择图像中的多边形区域。

用法:BW=roipoly(I,c,r)BW=roipoly(I)BW=roipoly(x,y,I,xi,yi)[BW,xi,yi]=roipoly(...)[x,y,BW,xi,yi]=roipoly(...)BW=roipoly(I,c,r)表示用向量c、r指定多边形各点的X、Y坐标。

BW选中的区域为1,其他部分的值为0.BW=roipoly(I)表示建立交互式的处理界面。

BW=roipoly(x,y,I,xi,yi)表示向量x和y建立非默认的坐标系,然后在指定的坐标系下选择由向量xi,yi指定的多边形区域。

例子:I=imread('eight.tif');c=[222272300270221194];r=[21217512112175];BW=roipoly(I,c,r);imshow(I)figure,imshow(BW)图像处理函数详解——roifilt2功能:用于对一个区域进行滤波。

用法:J=roifilt2(h,I,BW)J=roifilt2(I,BW,fun)J=roifilt2(I,BW,fun,P1,P2,...)J=roifilt2(h,I,BW)表示使用滤波器h对图像I中用二值掩模BW选中的区域滤波。

BW为和I大小相同的二值图像。

J=roifilt2(I,BW,fun,P1,P2,...)表示用fun函数处理区域滤波图像I。

参数P1、P2等为fun函数的输入参数。

例子:I=imread('eight.tif');c=[222272300270221194];r=[21217512112175];BW=roipoly(I,c,r);h=fspecial('unsharp');%指定滤波器J=roifilt2(h,I,BW);imshow(J),figure,imshow(J)图像处理函数详解——roifill(ROI——region-of-interest)功能:对指定区域进行填充。

用法:J=roifill(I,c,r)J=roifill(I)[J,BW]=roifill(...)J=roifill(x,y,I,xi,yi)[x,y,J,BW,xi,yi]=roifill(...)J=roifill(I,c,r)填充由向量c,r指定的多边形,c和r分别为多边形的各顶点X、Y坐标。

可用于擦除图像中的小物体。

J=roifill(I)用于交互式处理界面。

J=roifill(I,BW)用BW(和I大小一致)掩模填充此区域。

如果为多个多边形,则分别执行插值填充。

例子:I=imread('eight.tif');c=[222272300270221194];r=[21217512112175];J=roifill(I,c,r);imshow(I)figure,imshow(J)图像处理函数详解——roicolor功能:可以根据颜色选定区域。

用法:BW=roicolor(A,low,high)BW=roicolor(A,v)BW=roicolor(A,low,high)色图范围为[low high],返回这些像素选择区域。

BW为大小和A相同的数组,若A中元素值在[low high]范围内,则返回值1,否则返回0.BW=roicolor(A,v)返回图像A中像素与向量v相匹配的区域,BW为二值图像,1值为A中与v相匹配的地方。

例子:I=imread('rice.png');BW=roicolor(I,128,255);imshow(I);figure,imshow(BW)matlab图像处理函数详解——rgb2gray功能:将真彩色图像转换成灰度图像或者将彩色色图转换成灰度色图。

用法:I=rgb2gray(RGB)newmap=rgb2gray(map)I=rgb2gray(RGB)将真彩色图像RGB转换成灰度图像Inewmap=rgb2gray(map)将彩色色图map转换成灰度色图newmap例子:X=imread(‘peppers.png’);BW=rgb2gray(X);imview(BW)Matlab图像处理函数:regionprops这里给出在Matlab图像处理工具箱中非常重要的一个图像分析函数:regionprops。

顾名思义:它的用途是get the properties of region,即用来度量图像区域属性的函数。

语法STATS=regionprops(L,properties)描述测量标注矩阵L中每一个标注区域的一系列属性。

L中不同的正整数元素对应不同的区域,例如:L中等于整数1的元素对应区域1;L中等于整数2的元素对应区域2;以此类推。

返回值STATS是一个长度为max(L(:))的结构数组,结构数组的相应域定义了每一个区域相应属性下的度量。

properties可以是由逗号分割的字符串列表、饱含字符串的单元数组、单个字符串'all'或者'basic'。

如果properties等于字符串'all',则所有下述字串列表中的度量数据都将被计算,如果properties没有指定或者等于'basic',则属性:'Area','Centroid',和'BoundingBox'将被计算。

下面的列表就是所有有效的属性字符串,它们大小写敏感并且可以缩写。

属性字符串列表AreaEquivDiameterMajorAxisLengthBoundingBoxEulerNumberMinorAxisLengthCentroidExtentOrientationConvexAreaExtremaPixelIdxListConvexHullFilledAreaPixelListConvexImageFilledImageSolidityEccentricityImage属性详细定义本部分将结合一个具体的例子说明各种字串相关属性的意义,矩阵取自在蚁蛉模式识别中做过预处理后的斑纹分割图像,如下图:这是一幅二值图像,在应用regionprops函数之前必须将其标注,可以调用bwlabel函数和伪彩色处理,标注后的图像如下图:下面基于以上的材料来考察属性的含义。

'Area'是标量,计算出在图像各个区域中像素总个数。

注意:这个数值可能与由函数bwarea计算的值有轻微的不同。

对于这样一个数值,我们可以使用它除以整个图像区域的像素个数而得到斑纹比例,可以作为模式识别的候选特征,并且这个特征是仿射不变的。

在本例中最后计算出的面积向量是[3.8952,9.7213,17.663,3.5762,1.3432,1.6958,0.41974,0.41974,21.625,12. 324,4.8187,1.5111]/10000.'BoundingBox'是1行ndims(L)*2列的向量,即包含相应区域的最小矩形。

BoundingBox形式为[ul_corner width],这里ul_corner以[x y z...]的坐标形式给出边界盒子的左上角、boxwidth以[x_width y_width...]形式指出边界盒子沿着每个维数方向的长度。

本例的各部分区域最小矩形如下图!注意:请在这熟悉一下函数rectangle的使用方法。

'Centroid'是1行ndims(L)列的向量,给出每个区域的质心(重心)。

注意:Centroid的第一个元素是重心水平坐标(x坐标)、第二个元素是重心垂直坐标(y坐标)。

Centroid所有其它元素则按照维顺序排列。

下图采用以中心为圆心的小圆来演示质心检测的效果:图中各质心坐标(标准化后的)依次为:(x,y)=0.10478,0.767390.11883, 0.0815450.19586,0.610920.30701,0.308070.65712,0.316130.73165,0.305310.74548,0.353780.80624,0.728020.84546,0.615640.90554,0.0795740.93477,0.778710.97611,0.15576'MajorAxisLength'是标量,与区域具有相同标准二阶中心矩的椭圆的长轴长度(像素意义下)。

本属性只支持二维标注矩阵。

'MinorAxisLength'是标量,与区域具有相同标准二阶中心矩的椭圆的短轴长度(像素意义下)。

本属性只支持二维标注矩阵。

'Eccentricity'是标量,与区域具有相同标准二阶中心矩的椭圆的离心率(可作为特征)。

本属性只支持二维标注矩阵。

'Orientation'是标量,与区域具有相同标准二阶中心矩的椭圆的长轴与x轴的交角(度)。

本属性只支持二维标注矩阵。

本例的各区域椭圆数据为:长轴:18.767,45.172,43.003,30.687,16.505,15.698,5.8833,5.8833,46.954,38.873, 22.929,15.429短轴:16.211,26.079,32.709,9.8458,6.8019,8.6386,5.8833,5.8833,35.976,31.022, 16.98,7.8038离心率:0.50387,0.81652,0.6492,0.94713,0.91114,0.83497,0,0,0.64262,0.60262,0. 67205,0.86266方向角:-29.219,-32.192,-9.3909,-50.904,-70.333,48.823,0,0,14.035,17.986,3.03 19,-34.238我们可以考察离心率的变化趋势,得到对于整个区域中的各区域的似圆性如何的大致感觉,比如下图是12个区域的离心率变化情形:由上图可以看出区域整体的似圆性并不好,实际上可以考虑使用离心率向量作为一个模式识别的特征!!'Image'二值图像,与某区域具有相同大小的逻辑矩阵。

相关主题