主要内容

activecontour

段图像进入前景和背景使用活动轮廓(蛇)区域生长技术

描述

活跃轮廓技术,也称为,是一种迭代的区域增长图像分割算法。使用活动轮廓算法,您可以在图像上指定初始曲线,然后使用activecontour函数使曲线朝着物体边界演化。

例子

BW= ActiveContour(一个面具段图像一个使用活动轮廓进入前景(物体)和背景区域。

面具参数是指定活动轮廓的初始状态的二值图像。物体区域(白色)的边界面具定义初始轮廓位置,用于轮廓演化来分割图像。输出图像BW是一个二进制图像,前景是白色(逻辑真的),背景是黑色(逻辑假)。

为了获得更快更准确的分割结果,指定一个接近目标边界的初始轮廓位置。

BW= ActiveContour(一个面具n对图像进行分割,将轮廓进化为最大值n迭代。

例子

BW= ActiveContour(一个面具方法指定用于分割的活动轮廓方法为“Chan-Vese”或者“边缘”.对于RGB图像,方法必须是“Chan-Vese”

BW= ActiveContour(一个面具n方法对图像进行分割,将轮廓进化为最大值n使用指定的迭代方法

BW= ActiveContour(___名称,值指定控制分段的各个方面的名称-值对参数。

例子

全部折叠

读取并显示灰度图像。

我= imread (“coins.png”);imshow(i)标题(原始图像的

图中包含一个坐标轴。标题为“原始图像”的轴包含一个类型为“图像”的对象。

指定一个围绕感兴趣对象的初始轮廓。显示轮廓。

掩码= 0(大小(I));面具(25:end-25 25: end-25) = 1;imshow(面具)标题(“初始轮廓的位置”

图中包含一个坐标轴。标题为“初始轮廓位置”的轴包含一个类型为image的对象。

将图像分割为activecontour函数。默认情况下,该函数通过100次迭代演变分段。

bw = activecontour(我,面具);

显示结果。在100次迭代之后,由于原始轮廓未接近对象边界,因此无法完全分段对象。

imshow (bw)标题(“分割图像,100次迭代”

图中包含一个坐标轴。标题为分割图像的轴,100迭代包含图像类型的对象。

要继续演变分割,请增加迭代的数量。在300次迭代之后,对象从背景中完全分段。

BW = ActiveContour(i,mask,300);imshow (bw)标题(“分割图像,300次迭代”

图中包含一个坐标轴。标题为分割图像,300迭代的轴包含一个图像类型的对象。

读取并显示灰度图像。

我= imread (“toyobjects.png”);imshow(我)

在感兴趣的对象附近使用drawrectangle函数。在绘制轮廓线之后,使用创作者函数。

r = drawrectangle;

掩码= createMask (r);

使用该图像段“边缘”方法和200次迭代。

bw = activecontour(面具,我200,“边缘”);

在红色的原始图像上显示最终轮廓。

持有;visboundaries (bw,'颜色'“r”);

在原始图像上显示分割结果。前景中的物体是蓝色的。

图imshow (labeloverlay(我,bw));

加载3-D体积图像数据,去除单维。

D =负载(“mri.mat”);A =挤压(D.D);

创建初始种子点的2-D蒙版。

seedLevel = 10;种子= A(:,:,seedLevel) > 75;图imshow(种子)

图中包含一个坐标轴。轴包含一个image类型的对象。

创建一个空的3-D种子蒙版,并将种子点放入其中。

掩码= 0(大小(A));面具(:,:,seedLevel) =种子;

使用活动轮廓执行分割,指定种子掩模。

bw = activecontour(面具,300);

显示三维分割图像。

图;p =补丁(等值面(双(bw)));p.FaceColor =“红色”;p.EdgeColor =“没有”;daspect ([1] 1 27/128);camlight;照明冯氏

图中包含一个坐标轴。坐标轴包含一个patch类型的对象。

输入参数

全部折叠

图像要分段,指定为2-D数字矩阵或3-D数字数组。

数据类型:||int8|int16|int32|uint8|uint16|uint32

分割开始演化的初始轮廓,指定为大小相同的二值图像一个.对于二维和三维灰度图像,其大小为面具必须匹配图像的大小一个.对于颜色和多通道图像,面具必须是一个二维逻辑阵列,其中前二维与图像的前二维相匹配一个

您可以通过使用ROI对象交互式地创建掩码。例如,通过使用drawpolygon函数,然后使用创作者函数。

数据类型:逻辑

在分割的演进中执行的最大迭代次数,指定为正整数。activecontour当活动轮廓达到最大迭代次数时,停止活动轮廓的演化。activecontour如果当前迭代中的轮廓位置与最近五个迭代中的一个的轮廓位置相同,则停止进化。

如果初始轮廓位置(由面具)距离对象边界很远,指定较大的值n以达到预期的分割结果。

数据类型:

用于分割的活动轮廓方法,指定为“Chan-Vese”或者“边缘”.Chan-Vese基于区域的能量模型描述在[1].基于边缘的模型,类似于测地线活动轮廓,描述在[2]

对于RGB图像,方法必须是“Chan-Vese”

数据类型:字符|字符串

名称-值对的观点

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值是相应的价值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:“SmoothFactor”,1.5

被分割区域的边界的平滑度或规则度,指定为逗号分隔对组成'smoothfactor'和一个正数。更高的值产生更平滑的区域边界,但也可以平滑更精细的细节。较低的值会在区域边界产生更多的不规则性(更不平滑),但允许捕获更精细的细节。平滑度的默认值为0为了“Chan-Vese”方法和1为了“边缘”方法。

例子:“SmoothFactor”,1.5

数据类型:||int8|int16|int32|uint8|uint16|uint32

轮廓向外生长或向内收缩的趋势,指定为由逗号分隔的对组成“ContractionBias”和一个数字标量。正值使轮廓向内收缩(收缩)。负值使轮廓向外生长(扩大)。此参数不保证轮廓线收缩或扩张。即使这个参数是正的,等高线也有可能实际展开。然而,通过指定偏差,与无偏差等值线相比,可以减慢膨胀速度。该参数的典型值介于-1和1之间。默认的收缩偏差是0为了“Chan-Vese”方法和0.3为了“边缘”方法。

例子:“ContractionBias”,0.4

数据类型:||int8|int16|int32|uint8|uint16|uint32

输出参数

全部折叠

分割后的图像,返回与输入图像大小相同的二值图像一个.前景是白色(逻辑上正确),背景是黑色(逻辑上错误)。

提示

  • activecontour使用区域的边界面具作为等高线的初始状态,从那里进化开始。面具上的洞会导致不可预知的结果。使用Imfill.填补区域内的任何漏洞面具

  • 如果一个区域接触到图像边界,那么activecontour在进一步处理之前,从区域中移除一个单像素层,使区域不接触图像边界。

  • 要获得更快更准确的结果,请指定接近所需对象边界的初始轮廓位置,尤其是“边缘”方法。

  • “边缘”方法,活性轮廓自然地偏向于向内缩小(折叠)。在没有任何图像梯度的情况下,主动轮廓自身缩小。相反,与“Chan-Vese”方法,其中轮廓是无偏的,轮廓可以根据图像特征自由收缩或扩展。

  • 以实现精确的分割“边缘”方法,指定位于对象的边界之外的初始轮廓。活跃的轮廓“边缘”方法默认偏缩。

  • 如果目标区域具有显著不同的灰度强度,则“Chan-Vese”方法[1]可能不会分割图像中的所有物体。例如,如果图像中包含比背景更亮的物体和一些较暗的物体,则“Chan-Vese”方法通常仅在暗或明亮的物体中段。

算法

activecontour使用稀疏场水平集方法,类似于[3],实现活动轮廓演进。

参考

陈天福,拉斯维加斯,没有边缘的活动轮廓.图像处理的IEEE交易,第10卷,第2版,第266.277,2001。

V. Caselles, R. Kimmel, G. Sapiro,测地活跃轮廓.国际计算机视觉杂志,第22卷,第1期,61-79页,1997。

[3] R.T. Witaker,从距离数据进行三维重建的水平集方法.国际计算机视觉杂志,第29卷,第3期,203-231页,1998。

在R2013A介绍