映像分割之(五)活動輪廓模型之Snake模型簡介
zouxy09@qq.com
http://blog.csdn.net/zouxy09
在“映像分割之(一)概述”中咱們簡單瞭解了目前主流的映像分割方法。下面咱們主要學習下基於能量泛函的分割方法。這裡學習下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模型的基本思想很簡單,它以構成一定形狀的一些控制點為模板(輪廓線),通過模板自身的彈性形變,與映像局部特徵相匹配達到調和,即某種能量函數極小化,完成對映像的分割。再通過對模板的進一步分析而實現映像的理解和識別。
簡單的來講,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就停在映像的邊緣位置了,也就完成了分割。那麼這個的前提就是目標在映像中的邊緣比較明顯了,否則很容易就越過邊緣了。)
彈效能量和彎曲能量合稱內部能量(內部力),用於控制輪廓線的彈性形變,起到保持輪廓連續性和平滑性的作用。而第三項代表外部能量,也被稱為映像能量,表示變形曲線與映像局部特徵吻合的情況。內部能量僅僅跟snake的形狀有關,而跟映像資料無關。而外部能量僅僅跟映像資料有關。在某一點的α和β的值決定曲線可以在這一點伸展和彎曲的程度。
最終對映像的分割轉化為求解能量函數Etotal(v)極小化(最小化輪廓的能量)。在能量函數極小化過程中,彈效能量迅速把輪廓線壓縮成一個光滑的圓,彎曲能量驅使輪廓線成為光滑曲線或直線,而映像力則使輪廓線向映像的高梯度位置靠攏。基本Snakes模型就是在這3個力的聯合作用下工作的。
因為映像上的點都是離散的,所以我們用來最佳化能量函數的演算法都必須在離散域裡定義。所以求解能量函數Etotal(v)極小化是一個典型的變分問題(微分運算中,自變數一般是座標等變數,因變數是函數;變分運算中,自變數是函數,因變數是函數的函數,即數學上所謂的泛函。對泛函求極值的問題,數學上稱之為變分法)。
在離散化條件(數位影像)下,由歐拉方程可知最終問題的答案等價於求解一組差分方程:(歐拉方程是泛函極值條件的微分運算式,求解泛函的歐拉方程,即可得到使泛函取極值的駐函數,將變分問題轉化為微分問題。)
記外部力 F = −∇ P, Kass等將上式離散化後,對x(s)和y(s)分別構造兩個五對角陣的線性方程組,通過迭代計算進行求解。在實際應用中一般先在物體周圍手動點出控制點作為Snakes模型的起始位置,然後對能量函數迭代求解。
以上只是對snake簡單的理解,如要深入,請參考其他更多專業文獻。水平有限,錯誤在所難免,還望不吝指正。
Reference:
李天慶等,Snake模型綜述,電腦工程,2005,第31卷
第9期