圖像切割之(五)活動輪廓模型之Snake模型簡單介紹
在“圖像切割之(一)概述”中咱們簡單了解了眼下主流的圖像切割方法。以下咱們主要學習下基於能量泛函的切割方法。這里學習下Snake模型簡單的知識,Level Set(水平集)模型會在后面的博文中說到。
基於能量泛函的切割方法:
該類方法主要指的是活動輪廓模型(active contour model)以及在其基礎上發展出來的算法,其基本思想是使用連續曲線來表達目標邊緣,並定義一個能量泛函使得其自變量包含邊緣曲線,因此切割過程就轉變為求解能量泛函的最小值的過程,一般可通過求解函數相應的歐拉(Euler.Lagrange)方程來實現,能量達到最小時的曲線位置就是目標的輪廓所在。
主動輪廓線模型是一個自頂向下定位圖像特征的機制,用戶或其它自己主動處理過程通過事先在感興趣目標附近放置一個初始輪廓線,在內部能量(內力)和外部能量(外力)的作用下變形外部能量吸引活動輪廓朝物體邊緣運動,而內部能量保持活動輪廓的光滑性和拓撲性,當能量達到最小時,活動輪廓收斂到所要檢測的物體邊緣。
一、曲線演化理論
曲線演化理論在水平集中運用到,但我感覺在主動輪廓線模型的切割方法中,這個知識是公用的,所以這里我們簡單了解下。
曲線能夠簡單的分為幾種:
曲線存在曲率,曲率有正有負,於是在法向曲率力的推動下,曲線的運動方向之間有所不同:有些部分朝外擴展,而有些部分則朝內運動。這樣的情形例如以下圖所看到的。圖中藍色箭頭處的曲率為負,而綠色箭頭處的曲率為正。
簡單曲線在曲率力(也就是曲線的二次導數)的驅動下演化所具有的一種很特殊的數學性質是:一切簡單曲線,不管被扭曲得多么嚴重,僅僅要還是一種簡單曲線,那么在曲率力的推動下終於將退化成一個圓,然后消逝(能夠想象下,圓的全部點的曲率力都向着圓心,所以它將慢慢縮小,以致最后消逝)。
描寫敘述曲線幾何特征的兩個重要參數是單位法矢和曲率,單位法矢描寫敘述曲線的方向,曲率則表述曲線彎曲的程度。曲線演化理論就是僅利用曲線的單位法矢和曲率等幾何參數來研究曲線隨時間的變形。曲線的演變過程能夠覺得是表示曲線在作用力 F 的驅動下,朝法線方向 N 以速度 v 演化。而速度是有正負之分的,所以就有假設速度 v 的符號為負,表示活動輪廓演化過程是朝外部方向的,如為正,則表示朝內部方向演化,活動曲線是單方向演化的,不可能同一時候往兩個方向演化。
所以曲線的演變過程,就是不同力在曲線上的作用過程,力也能夠表達為能量。世界萬物都趨向於能量最小而存在。由於此時它是最平衡的,消耗最小的(不知理解對不?)。那么在圖像切割里面,我們目標是把目標的輪廓找到,那么在目標的輪廓這個地方,整個輪廓的能量是最小的,那么曲線在圖像不論什么一個地方,都能夠由於力朝着這個能量最小的輪廓演變,當演變到目標的輪廓的時候,由於能量最小,力平衡了,速度為0了,也就不動了,這時候目標就被我們切割出來了。
那如今關鍵就在於:1)這個輪廓我們怎么表示;2)這些力怎么構造,構造哪些力才干夠讓目標輪廓這個地方的能量最小?
這兩個問題的描寫敘述和解決就衍生出了非常多的基於主動輪廓線模型的切割方法。第一個問題的回答,就形成了兩大流派:假設這個輪廓是參數表示的,那么就是參數活動輪廓模型(parametric active contour model),典型為snake模型,假設這個輪廓是幾何表示的,那么就是幾何活動輪廓模型(geometric active contour model),即水平集方法(Level Set),它是把二維的輪廓嵌入到三維的曲面的零水平面來表達的(能夠理解為一座山峰的等高線,某個等高線把山峰切了,這個高度山峰的水平形狀就出來了,也就是輪廓了),所以低維的演化曲線或曲面,表達為高維函數曲面的零水平集的間接表達形式(這個輪廓的變化,直觀上我們就能夠調整山峰的形狀或者調整登高線的高度來得到)。
那對於第二個問題,是兩大流派都遇到的問題,是他們都須要解決的最關鍵的問題。哪些力才干夠達到切割的目標呢?這將在后面聊到。
二、Snakes模型
自1987年Kass提出Snakes模型以來,各種基於主動輪廓線的圖像切割理解和識別方法如雨后春筍般蓬勃發展起來。Snakes模型的基本思想非常easy,它以構成一定形狀的一些控制點為模板(輪廓線),通過模板自身的彈性形變,與圖像局部特征相匹配達到調和,即某種能量函數極小化,完畢對圖像的切割。再通過對模板的進一步分析而實現圖像的理解和識別。
簡單的來講,SNAKE模型就是一條可變形的參數曲線及對應的能量函數,以最小化能量目標函數為目標,控制參數曲線變形,具有最小能量的閉合曲線就是目標輪廓。
構造Snakes模型的目的是為了調和上層知識和底層圖像特征這一對矛盾。不管是亮度、梯度、角點、紋理還是光流,全部的圖像特征都是局部的。所謂局部性就是指圖像上某一點的特征僅僅取決於這一點所在的鄰域,而與物體的形狀無關。可是人們對物體的認識主要是來自於其外形輪廓。怎樣將兩者有效地融合在一起正是Snakes模型的好處。Snakes模型的輪廓線承載了上層知識,而輪廓線與圖像的匹配又融合了底層特征。這兩項分別表示為Snakes模型中能量函數的內部力和圖像力。
模型的形變受到同一時候作用在模型上的很多不同的力所控制,每一種力所產生一部分能量,這部分能量表示為活動輪廓模型的能量函數的一個獨立的能量項。
Snake模型首先須要在感興趣區域的附近給出一條初始曲線,接下來最小化能量泛函,讓曲線在圖像中發生變形並不斷逼近目標輪廓。
Kass等提出的原始Snakes模型由一組控制點:v(s)=[x(s), y(s)] s∈[0, 1] 組成,這些點首尾以直線相連構成輪廓線。當中x(s)和y(s)分別表示每一個控制點在圖像中的坐標位置。 s 是以傅立葉變換形式描寫敘述邊界的自變量。在Snakes的控制點上定義能量函數(反映能量與輪廓之間的關系):
當中第1項稱為彈性能量是v的一階導數的模,第2項稱為彎曲能量,是v的二階導數的模,第3項是外部能量(外部力),在基本Snakes模型中一般僅僅取控制點或連線所在位置的圖像局部特征比如梯度:
也稱圖像力。(當輪廓C靠近目標圖像邊緣,那么C的灰度的梯度將會增大,那么上式的能量最小,由曲線演變公式知道該點的速度將變為0,也就是停止運動了。這樣,C就停在圖像的邊緣位置了,也就完畢了切割。那么這個的前提就是目標在圖像中的邊緣比較明顯了,否則非常easy就越過邊緣了。)
彈性能量和彎曲能量合稱內部能量(內部力),用於控制輪廓線的彈性形變,起到保持輪廓連續性和平滑性的作用。而第三項代表外部能量,也被稱為圖像能量,表示變形曲線與圖像局部特征吻合的情況。內部能量只跟snake的形狀有關,而跟圖像數據無關。而外部能量只跟圖像數據有關。在某一點的α和β的值決定曲線能夠在這一點伸展和彎曲的程度。
終於對圖像的切割轉化為求解能量函數Etotal(v)極小化(最小化輪廓的能量)。在能量函數極小化過程中,彈性能量迅速把輪廓線壓縮成一個光滑的圓,彎曲能量驅使輪廓線成為光滑曲線或直線,而圖像力則使輪廓線向圖像的高梯度位置靠攏。基本Snakes模型就是在這3個力的聯合作用下工作的。
由於圖像上的點都是離散的,所以我們用來優化能量函數的算法都必須在離散域里定義。所以求解能量函數Etotal(v)極小化是一個典型的變分問題(微分運算中,自變量通常是坐標等變量,因變量是函數;變分運算中,自變量是函數,因變量是函數的函數,即數學上所謂的泛函。對泛函求極值的問題,數學上稱之為變分法)。
在離散化條件(數字圖像)下,由歐拉方程可知終於問題的答案等價於求解一組差分方程:(歐拉方程是泛函極值條件的微分表達式,求解泛函的歐拉方程,就可以得到使泛函取極值的駐函數,將變分問題轉化為微分問題。)
記外部力 F = −∇ P, Kass等將上式離散化后,對x(s)和y(s)分別構造兩個五對角陣的線性方程組,通過迭代計算進行求解。在實際應用中一般先在物體周圍手動點出控制點作為Snakes模型的起始位置,然后對能量函數迭代求解。
以上僅僅是對snake簡單的理解,如要深入,請參考其它很多其它專業文獻。水平有限,錯誤在所難免,還望不吝指正。
Reference:
李天慶等,Snake模型綜述,計算機project,2005,第31卷 第9期