主要内容

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)标题(原始图像的

图中包含一个轴对象。标题为“Original Image”的axis对象包含一个类型为Image的对象。

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

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

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

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

bw = activecontour(我,面具);

显示结果。经过100次迭代后,由于原始轮廓不接近目标边界,目标没有完全从背景中分割出来。

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

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

为了继续发展细分,需要增加迭代次数。经过300次迭代,目标完全从背景中分割出来。

bw = activecontour(面具,300);imshow (bw)标题(“分割图像,300次迭代”

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

读取并显示灰度图像。

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

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

r = drawrectangle;

掩码= createMask (r);

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

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

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

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

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

图imshow (labeloverlay(我,bw));

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

D =负载(“mri.mat”);=紧缩(d);

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

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

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

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

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

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

bw = activecontour(面具,300);

显示三维分割图像。

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

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

输入参数

全部折叠

将图像分割,指定为二维数字矩阵或三维数字数组。

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

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

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

数据类型:逻辑

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

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

数据类型:

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

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

数据类型:字符|字符串

名称-值参数

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“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],用于实现主动轮廓演化。

参考文献

陈天福,拉斯维加斯,没有边缘的活动轮廓.图像处理学报,第10卷,第2期,266-277页,2001。

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

r·t·惠特克,从距离数据进行三维重建的水平集方法.国际计算机视觉杂志,第29卷,第3期,203-231页,1998。

介绍了R2013a