MATLAB中图像函数大全 详解与例子.docx

上传人:b****8 文档编号:9507575 上传时间:2023-05-19 格式:DOCX 页数:93 大小:47.39KB
下载 相关 举报
MATLAB中图像函数大全 详解与例子.docx_第1页
第1页 / 共93页
MATLAB中图像函数大全 详解与例子.docx_第2页
第2页 / 共93页
MATLAB中图像函数大全 详解与例子.docx_第3页
第3页 / 共93页
MATLAB中图像函数大全 详解与例子.docx_第4页
第4页 / 共93页
MATLAB中图像函数大全 详解与例子.docx_第5页
第5页 / 共93页
MATLAB中图像函数大全 详解与例子.docx_第6页
第6页 / 共93页
MATLAB中图像函数大全 详解与例子.docx_第7页
第7页 / 共93页
MATLAB中图像函数大全 详解与例子.docx_第8页
第8页 / 共93页
MATLAB中图像函数大全 详解与例子.docx_第9页
第9页 / 共93页
MATLAB中图像函数大全 详解与例子.docx_第10页
第10页 / 共93页
MATLAB中图像函数大全 详解与例子.docx_第11页
第11页 / 共93页
MATLAB中图像函数大全 详解与例子.docx_第12页
第12页 / 共93页
MATLAB中图像函数大全 详解与例子.docx_第13页
第13页 / 共93页
MATLAB中图像函数大全 详解与例子.docx_第14页
第14页 / 共93页
MATLAB中图像函数大全 详解与例子.docx_第15页
第15页 / 共93页
MATLAB中图像函数大全 详解与例子.docx_第16页
第16页 / 共93页
MATLAB中图像函数大全 详解与例子.docx_第17页
第17页 / 共93页
MATLAB中图像函数大全 详解与例子.docx_第18页
第18页 / 共93页
MATLAB中图像函数大全 详解与例子.docx_第19页
第19页 / 共93页
MATLAB中图像函数大全 详解与例子.docx_第20页
第20页 / 共93页
亲,该文档总共93页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

MATLAB中图像函数大全 详解与例子.docx

《MATLAB中图像函数大全 详解与例子.docx》由会员分享,可在线阅读,更多相关《MATLAB中图像函数大全 详解与例子.docx(93页珍藏版)》请在冰点文库上搜索。

MATLAB中图像函数大全 详解与例子.docx

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,角度45

se3=strel('disk',15)

%创建圆盘半径15

se4=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)色图范围为[lowhigh],返回这些像素选择区域。

BW为大小与A相同的数组,若A中元素值在[lowhigh]范围内,则返回值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转换成灰度图像I

newmap=rgb2gray(map)将彩色色图map转换成灰度色图newmap

例子:

X=imread(‘peppers.png’);

 

BW=rgb2gray(X);

 

imview(BW)

Matlab图像处理函数:

regionprops

这里给出在Matlab图像处理工具箱中非常重要的一个图像分析函数:

regionprops。

顾名思义:

它的用途是getthepropertiesofregion,即用来度量图像区域属性的函数。

语法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'将被计算。

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

属性字符串列表Area

EquivDiameter

MajorAxisLength

BoundingBox

EulerNumber

MinorAxisLength

Centroid

Extent

Orientation

ConvexArea

Extrema

PixelIdxList

ConvexHull

FilledArea

PixelList

ConvexImage

FilledImage

Solidity

Eccentricity

Image

属性详细定义本部分将结合一个具体的例子说明各种字串相关属性的意义,矩阵取自在蚁蛉模式识别中做过预处理后的斑纹分割图像,如下图:

这是一幅二值图像,在应用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_cornerwidth],这里ul_corner以[xyz...]的坐标形式给出边界盒子的左上角、boxwidth以[x_widthy_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.0319,-34.238我们可以考察离心率的变化趋势,得到对于整个区域中的各区域的似圆性如何的大致感觉,比如下图是12个区域的离心率变化情形:

由上图可以看出区域整体的似圆性并不好,实际上可以考虑使用离心率向量作为一个模式识别的特征!

'Image'二值图像,与某区域具有相同大小的逻辑矩阵。

你可以用这个属性直接将每个子区域提取出来,然后再作相应的处理!

比如本例的第一个斑纹区域提出后是。

'FilledImage'与上相同,唯一区别是这是个做了填充的逻辑矩阵!

本例中与上面的没有区别,只有区域有空洞时才有明显差别。

'FilledArea'是标量,填充区域图像中的on像素个数。

'ConvexHull'是p行2列的矩阵,包含某区域的最小凸多边形。

此矩阵的每一行存储此多边形一个顶点的xy坐标。

此属性只支持2维标注矩阵。

例如:

本例中的所有子区域的最小凸多边形图形如下图

看看第2个区域的大图。

'ConvexImage'二值图像,用来画出上述的区域最小凸多边形。

同时此凸包内的像素均打开,图像尺寸与此区域对应边界矩形相同。

此属性只支持2维标注矩阵。

例如:

本例中的第2个子区域的最小凸多边形图形为。

注意:

此处函数roipoly很有用!

'ConvexArea'是标量,填充区域凸多边形图像中的on像素个数。

'EulerNumber'是标量,几何拓扑中的一个拓扑不变量--欧拉数,等于图像中目标个数减去这些目标中空洞的个数。

此属性只支持2维标注矩阵。

本例中的欧拉数均为1。

'Extrema'8行2列矩阵,八方向区域极值点。

矩阵每行存储这些点的xy坐标,向量格式为[top-lefttop-rightright-topright-bottombottom-rightbottom-leftleft-bottomleft-top]。

此属性只支持2维标注矩阵。

'EquivDiameter'是标量,等价直径:

与区域具有相同面积的圆的直径。

计算公式为:

sqrt(4*Area/pi)。

.此属性只支持2维标注矩阵。

本例标准化后的12区域直径向量为:

[2.227,3.5182,4.7423,2.1339,1.3077,1.4694,0.73105,0.73105,5.2473,3.9612,2.477,1.3871]/100.'Solidity'是标量,同时在区域与其最小凸多边形中的像素比例。

计算公式为:

Area/ConvexArea,这也是个仿射特征,实际上反映出区域的固靠性程度。

此属性只支持2维标注矩阵。

本例12区域凸元素比例向量为:

[0.97071,0.66171,0.90846,0.86585,0.84211,0.94393,1,1,0.9096,0.75514,0.90823,0.94737].'Extent'是标量,同时在区域与其最小边界矩形中的像素比例。

计算公式为:

Area除以边界矩形面积,这也是个仿射特征,实际上反映出区域的扩展范围程度。

此属性只支持2维标注矩阵。

不再给出计算结果!

'PixelIdxList'p元向量,存储区域像素的索引下标。

'PixelList'p行ndims(L)列矩阵,存储上述索引对应的像素坐标。

支持类输入的标注矩阵L可以有任意的数值类型。

提醒使用逗号分割列表语法当你基于regionprops函数的输出作算法设计时,使用逗号分割列表语法就凸显出其非常的价值。

例如:

对于一个存储标量的属性,可以利用此语法创建一个包含图像中不同区域内此属性值的向量。

例如以下两句是等价的:

stats

(1).Area,stats

(2).Area,...,stats(end).Areastats.Area因此,可以使用下面的方法创建相应的向量:

regionprops(L,'Area');allArea=[stats.Area];allArea就是一个与结构数组stats具备相同长度的向量。

基于特定原则的区域选择当你要基于特定准则条件选择某个区域时,将函数ismember与regionprops联合使用是很有用处的。

例如:

创建一个只包含面积大于80的二值图像,用以下命令idx=find([stats.Area]>80);BW2=ismember(L,idx);计算性能考虑大多数的属性测量计算时间都非常地少,除了那些非常依赖于图像L中区域个数与像素个数的属性。

例如:

'ConvexHull''ConvexImage''ConvexArea''FilledImage'另外建议一次性计算所有属性值,因为分开计算与一起计算时间相差无几!

使用二值图像工作在调用regionprops之前必须将二值图像转变为标注矩阵。

两个函数可以做到:

L=bwlabel(BW);L=double(BW);注意:

虽然这两个函数从同一二值图像产生不同的标注矩阵,但是它们是等效的!

例如:

给出如下的二值矩阵BW,110000110000000000000011000011bwlabel创建一个包含两个分别由整数1与2标注的连续区域标注矩阵mylabel=bwlabel(BW)mylabel=    1    1    0    0    0    0    1    1    0    0    0    0    0    0    0    0    0    0    0    0    0    0    2    2    0    0    0    0    2    2double创建一个包含一个由整数1标注的不连续区域标注矩阵。

mylabel2=double(BW)mylabel2=    1    1    0    0    0    0    1    1    0    0    0    0    0    0    0    0    0    0    0    0    0    0    1    1    0    0    0    0    1    1regionprops并不负责自动转换二值图像数据类型,而是由你自己决定使用何种数据转换方法来存储自己想要的数据。

regionprops函数的扩展思路在regionprops函数的基础上,你可以使用它提供的基本数据来扩展它的功能,比如我就将区域的曲率数据与骨架数据作为它的另外属性值来开发,从而希望它能用来做更细致的特征提取。

图像处理函数详解——padarray

功能:

填充图像或填充数组。

用法:

B=padarray(A,padsize,padval,direction)

    A为输入图像,B为填充后的图像,padsize给出了给出了填充的行数与列数,通常用[rc]来表示。

padval与direction分别表示填充方法与方向。

它们的具体值与描述如下:

  padval:

'symmetric'表示图像大小通过围绕边界进行镜像反射来扩展;

              'replicate'表示图像大小通过复制外边界中的值来扩展;

              'circular'图像大小通过将图像看成是一个二维周期函数的一个周期来进行扩展。

    direction:

'pre'表示在每一维的第一个元素前填充;

                'post'表示在每一维的最后一个元素后填充;

                'both'表示在每一维的第一个元素前与最后一个元素后填充,此项为默认值。

    若参量中不包括direction,则默认值为'both'。

若参量中不包含padval,则默认用零来填充。

若参量中不包括任何参数,则默认填充为零且方向为'both'。

在计算结束时,图像会被修剪成原始大小。

举例:

      A=[12;34];

      B=padarray(A,[32],'replicate','post')

图像处理函数详解——nlfilter

功能:

用来执行通用的滑动邻域操作。

用法:

B=nlfilter(A,[mn],fun)

B=nlfilter(A,[mn],fun,P1,P2,...)

B=nlfilter(A,'indexed',...)

B=nlfilter(A,[mn],fun)表示对图像A的每一个m*n滑块应用函数fun。

fun函数必须接受m*n块作为输入,并返回一个标量y,形如:

c=fun(x)

c为m*n块x的中心像素点的输入值。

例子:

B=nlfilter(A,[33],@myfun);

其中myfun是以m文件如下:

functionscalar=myfun(x)

scalar=median(x(:

));

图像处理函数详解——montage

功能:

在同一时间显示多帧图像中的所有帧。

用法:

montage(I)

montage(BW)

montage(X,map)

montage(RGB)

h=montage(...)

 

montage(I)  ——显示灰度图像I共k帧,I为m*n*1*k的数组

montage(BW)——显示二值图像I共k帧,I为m*n*1*k的数组

montage(X,map)——显示索引图像I共k帧,色图由map指定为所有的帧图像的色图,X为m*n*1*k的数组

montage(RGB)——显示真彩色图像GRB共k帧,RGB为m*n*3*k的数组

例子:

mri=uint8(zeros(128,128,1,27));

forframe=1:

27

[mri(:

:

:

frame),map]=imread('mri.tif',frame);

%把每一帧读入内存中

end

montage(mri,map);

函数详解——mat2gray

功能:

将矩阵转化为灰度图像。

用法:

I=mat2gray(A,[aminamax])      把一个double类的任意数组转换成取值范围为[01]的亮度图像。

其中图像I的取值范围也在0(黑色)到1(白色)之间。

参数amin与amax表示将A中小于amin的值转换为0,将A中大于amax的值转换为1。

        I=mat2gray(A)    将矩阵A中实际最小值与最大值分别赋给amin与amax。

举例:

I=imread('rice.png');

        J=filter2(fspecial('sobel'),I);

        K=mat2gray(J);

        imshow(I),figure,imshow(K)

图像处理函数详解——imclose

功能:

对图像实现闭运算,闭运算也能平滑图像的轮廓,但与开运算相反,它一般融合窄的缺口与细长的弯口,去掉小洞,填补轮廓上的缝隙。

用法:

IM2=imclose(IM,SE)

IM2=imclose(IM,NHOOD)

用法与imopen相同,请在本论坛查找!

例子:

originalBW=imread('circles.png');

se=strel('disk',10);

closeBW=imclose(originalBW,se);

imview(closeBW)

图像处理函数详解——imopen

功能:

对图像实现开运算,开运算一般能平滑图像的轮廓,消弱狭窄的部分,去掉细的突出。

用法:

IM2=imopen(IM,SE)

IM2=imopen(IM,NHOOD)

IM2=imopen(IM,SE)用结构元素SE实现灰度图像或二值图像的IM的形态开运算。

SE可以是单个结构元素对象或者结构元素对象数组。

IM2=imopen(IM,NHOOD)用结构元素strel(NHOOD)执行开运算。

例子:

I=imread('snowflakes.png');

se=strel('disk',5);

I

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2