发明名称 一种渐进式图像分割方法
摘要 本发明属于计算机视觉、计算机图形学和图像处理交叉领域,公开了一种基于形状先验的渐进式图像分割方法。本发明是一个迭代的、渐进式的方法,用户每添加一条生曲线,将会触发一次基于形状先验的优化过程,每次优化都会实时反馈分割结果。每次迭代的方法包括:勾勒生曲线,拟合曲线,添加富余量,定义能量函数,定义数据项,定义形状先验项,定义梯度项,求解能量函数。本发明提出的基于形状先验的渐进式图像分割方法,每步操作能够有实时的结果反馈,能够保证得到用户想要的分割结果。另外,本发明所述方法可以便捷地从图像中分割目标物,即便在前、背景颜色重叠严重,边界不清晰的情况下,也可得到满意的分割结果。
申请公布号 CN103247050A 申请公布日期 2013.08.14
申请号 CN201310180243.3 申请日期 2013.05.16
申请人 北京工业大学 发明人 马伟;段立娟
分类号 G06T7/00(2006.01)I 主分类号 G06T7/00(2006.01)I
代理机构 北京思海天达知识产权代理有限公司 11203 代理人 张慧
主权项 1.一种渐进式图像分割方法,其特征在于所述方法是一个迭代的、渐进式的方法,用户每添加一条生曲线,将会触发一次基于形状先验的优化过程,每次优化都会实时反馈分割结果;每次迭代包括以下步骤:步骤一,更新形状曲线,具体包括以下内容:(1)勾勒生曲线在用户界面中读入图像,用户用触摸屏、数位板或者鼠标沿感兴趣的对象物的边缘勾勒生曲线;所有生曲线与形状曲线的起止顺序须一致,都遵循逆时针或顺时针顺序;此顺序为步骤二中前、背景的方位假定的依据。(2)拟合曲线如果当前迭代属于第一回合,则生曲线本身就是形状曲线;如果非第一回合,即已经存在部分形状曲线,则通过拟合生曲线与现有形状曲线的方式更新形状曲线;两类曲线均由一系列节点组成;用S表示新增生曲线,用<img file="FDA00003196491900011.GIF" wi="414" he="82" />表示前一次迭代,即t-1时刻形成的形状曲线,n=1,2,...,N,N为节点的数目;<img file="FDA00003196491900012.GIF" wi="95" he="85" />表示第n个节点在t-1时刻在图像上的位置;<img file="FDA00003196491900013.GIF" wi="95" he="78" />表示此节点处曲线的宽度,即形成此节点所用的生曲线的数目;假定C<sup>t-1</sup>的第n个节点<img file="FDA00003196491900014.GIF" wi="90" he="94" />在S上的对应点表示为q<sub>n</sub>,q<sub>n</sub>即C<sup>t-1</sup>在<img file="FDA00003196491900015.GIF" wi="98" he="94" />处的法线与曲线S的交点;则当前迭代,即t时刻的形状曲线C<sup>t</sup>的第n个节点在图像上的位置<img file="FDA00003196491900016.GIF" wi="60" he="82" />和该节点处的曲线宽度<img file="FDA00003196491900017.GIF" wi="62" he="82" />分别为:<maths num="0001"><![CDATA[<math><mrow><msubsup><mi>p</mi><mi>n</mi><mi>t</mi></msubsup><mo>=</mo><mn>0.5</mn><msubsup><mi>p</mi><msub><mi>n</mi><mi>n</mi></msub><mrow><mi>t</mi><mo>-</mo><mn>1</mn></mrow></msubsup><mo>+</mo><mn>0.5</mn><msub><mi>q</mi><mi>n</mi></msub></mrow></math>]]></maths><maths num="0002"><![CDATA[<math><mrow><msubsup><mi>w</mi><mi>n</mi><mi>t</mi></msubsup><mo>=</mo><msubsup><mi>w</mi><mi>n</mi><mrow><mi>t</mi><mo>-</mo><mn>1</mn></mrow></msubsup><mo>+</mo><mn>1</mn></mrow></math>]]></maths>考虑到自由输入的生曲线往往较为杂乱,规定:如果q<sub>n</sub>与<img file="FDA000031964919000110.GIF" wi="78" he="86" />的距离大于一定阈值,对应点不作为融合点考虑,则:<maths num="0003"><![CDATA[<math><mrow><msubsup><mi>p</mi><mi>n</mi><mi>t</mi></msubsup><mo>=</mo><msubsup><mi>p</mi><mi>n</mi><mrow><mi>t</mi><mo>-</mo><mn>1</mn></mrow></msubsup></mrow></math>]]></maths><maths num="0004"><![CDATA[<math><mrow><msubsup><mi>w</mi><mi>n</mi><mi>t</mi></msubsup><mo>=</mo><msubsup><mi>w</mi><mi>n</mi><mrow><mi>t</mi><mo>-</mo><mn>1</mn></mrow></msubsup></mrow></math>]]></maths>(3)添加富余量如果S与C<sup>t-1</sup>具备叠合部分且有富余量,则将富余量对应的节点添加到C<sup>t</sup>中,并在C<sup>t</sup>中对作为富余量添加的部分与拟合生成的部分的交接处进行局部光滑处理;对于清晰的待分割的对象物的边界,形状曲线不必完全贴合边界,梯度信息会在分割边界的确定上起到决定性的作用;对于不清晰的边界,用户需要通过多添加生曲线的方式,较为准确地指定形状曲线,并提高形状先验的权重;步骤二,构造并求解能量函数,方法如下:将当前迭代过程中,更新的以及作为富余量添加的部分形状曲线表示为C';仅仅在C'的周围执行分割,即对距离C'小于δ的像素进行前、背景分类;δ的取值关系到计算复杂度,同时也关系到真正的分割边界的搜寻范围,为了平衡二者,建议δ取20个像素;具体包括以下内容:(1)定义能量函数将所涉及的像素表示为图G=&lt;v,ε&gt;,其中v表示所有像素集合,ε表示相邻像素之间的边;目标是将这些像素分为前景和背景,以找到穿过这些像素的真正的边界;即用x<sub>i</sub>标注每个像素;x<sub>i</sub>∈{1,0},分别表示前景和背景;定义能量函数如下:<maths num="0005"><![CDATA[<math><mrow><mi>E</mi><mrow><mo>(</mo><mi>X</mi><mo>)</mo></mrow><mo>=</mo><munder><mi>&Sigma;</mi><mrow><mi>i</mi><mo>&Element;</mo><mi>v</mi></mrow></munder><msub><mi>E</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>x</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>+</mo><munder><mi>&Sigma;</mi><mrow><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>&Element;</mo><mi>&epsiv;</mi></mrow></munder><mo>[</mo><msub><mi>&omega;</mi><mrow><mi>i</mi><mo>-</mo><mi>j</mi></mrow></msub><msub><mi>E</mi><mn>2</mn></msub><mrow><mo>(</mo><msub><mi>x</mi><mi>i</mi></msub><mo>,</mo><msub><mi>x</mi><mi>j</mi></msub><mo>)</mo></mrow><mo>+</mo><msub><mi>E</mi><mn>3</mn></msub><mrow><mo>(</mo><msub><mi>x</mi><mi>i</mi></msub><mo>,</mo><msub><mi>x</mi><mi>j</mi></msub><mo>)</mo></mrow><mo>]</mo></mrow></math>]]></maths>式中,E<sub>1</sub>(x<sub>i</sub>)是数据项,表示将前、背景x<sub>i</sub>∈{1,0}标记到每个像素上的代价;E<sub>2</sub>(x<sub>i</sub>,x<sub>j</sub>),E<sub>3</sub>(x<sub>i</sub>,x<sub>j</sub>)表示将不同的标记赋给相邻节点时的代价,其中,E<sub>2</sub>(x<sub>i</sub>,x<sub>j</sub>)是形状先验项,E<sub>3</sub>(x<sub>i</sub>,x<sub>j</sub>)是梯度项;(2)定义数据项将图G中C'的左、右侧的图节点分别表示为L和R,离C'最远的一层像素表示为<img file="FDA00003196491900022.GIF" wi="86" he="88" />和<img file="FDA00003196491900023.GIF" wi="115" he="90" />预先设定沿形状曲线起止方向上“右侧-前景,左侧-背景”,或者“左侧-前景,右侧-背景”的假定;在“右侧-前景,左侧-背景”的假定下,设定属于<img file="FDA00003196491900024.GIF" wi="82" he="93" />的像素为绝对的前景像素,属于<img file="FDA00003196491900025.GIF" wi="74" he="88" />的像素为绝对的背景像素;绝对的前、背景约束是为了避免图割算法的最小割现象;这些像素在分割优化过程后将不改变状态;分割将是对<img file="FDA00003196491900026.GIF" wi="352" he="89" />的其他像素做前、背景标记;E<sub>1</sub>(x<sub>i</sub>)的定义如下:<maths num="0006"><![CDATA[<math><mfenced open='{' close=''><mtable><mtr><mtd><msub><mi>E</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>x</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn><mo>)</mo></mrow><mo>=</mo><mn>0</mn></mtd><mtd><msub><mi>E</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>x</mi><mi>i</mi></msub><mo>=</mo><mn>0</mn><mo>)</mo></mrow><mo>=</mo><mo>&infin;</mo></mtd><mtd><mi>i</mi><mo>&Element;</mo><msubsup><mi>&Omega;</mi><mi>R</mi><msup><mi>C</mi><mo>&prime;</mo></msup></msubsup></mtd></mtr><mtr><mtd><msub><mi>E</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>x</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn><mo>)</mo></mrow><mo>=</mo><mo>&infin;</mo></mtd><mtd><msub><mi>E</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>x</mi><mi>i</mi></msub><mo>=</mo><mn>0</mn><mo>)</mo></mrow><mo>=</mo><mn>0</mn></mtd><mtd><mi>i</mi><mo>&Element;</mo><msubsup><mi>&Omega;</mi><mi>L</mi><msup><mi>C</mi><mo>&prime;</mo></msup></msubsup></mtd></mtr><mtr><mtd><msub><mi>E</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>x</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn><mo>)</mo></mrow><mo>=</mo><mn>0</mn></mtd><mtd><msub><mi>E</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>x</mi><mi>i</mi></msub><mo>=</mo><mn>0</mn><mo>)</mo></mrow><mo>=</mo><mn>0</mn></mtd><mtd><mi>i</mi><mo>&Element;</mo><mo>{</mo><mi>v</mi><mo>-</mo><msubsup><mi>&Omega;</mi><mi>R</mi><msup><mi>C</mi><mo>&prime;</mo></msup></msubsup><mo>-</mo><msubsup><mi>&Omega;</mi><mi>L</mi><msup><mi>C</mi><mo>&prime;</mo></msup></msubsup><mo>}</mo></mtd></mtr></mtable></mfenced></math>]]></maths>(3)定义形状先验项E<sub>2</sub>(x<sub>i</sub>,x<sub>j</sub>)定义为:<maths num="0007"><![CDATA[<math><mrow><msub><mi>E</mi><mn>2</mn></msub><mrow><mo>(</mo><msub><mi>x</mi><mi>i</mi></msub><mo>,</mo><msub><mi>x</mi><mi>j</mi></msub><mo>)</mo></mrow><mo>=</mo><mfrac><msubsup><mi>d</mi><mrow><mi>i</mi><mo>-</mo><mi>j</mi></mrow><msup><mi>C</mi><mo>&prime;</mo></msup></msubsup><mi>&delta;</mi></mfrac><mo>|</mo><msub><mi>x</mi><mi>i</mi></msub><mo>-</mo><msub><mi>x</mi><mi>j</mi></msub><mo>|</mo></mrow></math>]]></maths>式中,<img file="FDA00003196491900032.GIF" wi="99" he="99" />表示像素i与j之间的子像素到C'的距离,<img file="FDA00003196491900033.GIF" wi="202" he="95" />在能量函数中,位于E<sub>2</sub>(x<sub>i</sub>,x<sub>j</sub>)前侧的ω<sub>i-j</sub>是在分割过程中动态调节形状先验的权重,定义为迭代的最新时刻像素i与j之间的子像素在C'上的法向距离最近的节点的宽度;图像上某点与C'上某节点之间的法向距离定义为该点到该节点法线的距离;|x<sub>i</sub>-x<sub>j</sub>|表示形状先验仅统计边界上的值;(4)定义梯度项E<sub>3</sub>(x<sub>i</sub>,x<sub>j</sub>)定义为:<maths num="0008"><![CDATA[<math><mrow><msub><mi>E</mi><mn>3</mn></msub><mrow><mo>(</mo><msub><mi>x</mi><mi>i</mi></msub><mo>,</mo><msub><mi>x</mi><mi>j</mi></msub><mo>)</mo></mrow><mo>=</mo><mfrac><mi>&lambda;</mi><mrow><mn>1</mn><mo>+</mo><msub><mi>D</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub></mrow></mfrac><mo>|</mo><msub><mi>x</mi><mi>i</mi></msub><mo>-</mo><msub><mi>x</mi><mi>j</mi></msub><mo>|</mo></mrow></math>]]></maths>式中,D<sub>i,j</sub>=(r<sub>i</sub>-r<sub>j</sub>)<sup>2</sup>+(g<sub>i</sub>-g<sub>j</sub>)<sup>2</sup>+(b<sub>i</sub>-b<sub>j</sub>)<sup>2</sup>表示像素i,j在RGB空间中的距离,r<sub>i</sub>、g<sub>i</sub>、b<sub>i</sub>分别表示像素i的RGB分量;λ是一个常量,用于平衡梯度项和初始的形状先验项;梯度项同样仅统计边界上的值;(5)求解能量函数本发明采用图割算法求解能量函数的最小值,得到局部分割结果;当形状曲线闭合后,如在“右侧-前景,左侧-背景”的假定下按照逆时针方向勾勒并形成的形状曲线,在分割后,被分割边界包含的部分将为前景,其它部分划为背景。
地址 100124 北京市朝阳区平乐园100号