1. 程式人生 > >影象分割-活動輪廓模型之Snake模型簡介

影象分割-活動輪廓模型之Snake模型簡介

轉自:http://blog.csdn.net/zouxy09/article/details/8712287

基於能量泛函的分割方法:

       該類方法主要指的是活動輪廓模型(active contour model)以及在其基礎上發展出來的演算法,其基本思想是使用連續曲線來表達目標邊緣,並定義一個能量泛函使得其自變數包括邊緣曲線,因此分割過程就轉變為求解能量泛函的最小值的過程,一般可通過求解函式對應的尤拉(EulerLagrange)方程來實現,能量達到最小時的曲線位置就是目標的輪廓所在。

       主動輪廓線模型是一個自頂向下定點陣圖像特徵的機制,使用者或其他自動處理過程通過事先在感興趣目標附近放置一個初始輪廓線,在內部能量(內力)和外部能量(外力)

的作用下變形外部能量吸引活動輪廓朝物體邊緣運動,而內部能量保持活動輪廓的光滑性和拓撲性,當能量達到最小時,活動輪廓收斂到所要檢測的物體邊緣。

一、曲線演化理論

       曲線演化理論在水平集中運用到,

曲線可以簡單的分為幾種:

       曲線存在曲率,曲率有正有負,於是在法向曲率力的推動下,曲線的運動方向之間有所不同:有些部分朝外擴充套件,而有些部分則朝內運動。這種情形如下圖所示。圖中藍色箭頭處的曲率為負,而綠色箭頭處的曲率為正。

       簡單曲線在曲率力(也就是曲線的二次導數)的驅動下演化所具有的一種非常特殊的數學性質是:一切簡單曲線,無論被扭曲得多麼嚴重,只要還是一種簡單曲線,那麼在曲率力的推動下最終將退化成一個圓,然後消逝(可以想象下,圓的所有點的曲率力都向著圓心,所以它將慢慢縮小,以致最後消逝)。



描述曲線幾何特徵的兩個重要引數是單位法矢和曲率,單位法矢描述曲線的方向,曲率則表述曲線彎曲的程度。曲線演化理論就是僅利用曲線的單位法矢和曲率等幾何引數來研究曲線隨時間的變形。曲線的演變過程可以認為是表示曲線在作用力 F 

的驅動下,朝法線方向 N 以速度 v 演化。而速度是有正負之分的,所以就有如果速度 v 的符號為負,表示活動輪廓演化過程是朝外部方向的,如為正,則表示朝內部方向演化,活動曲線是單方向演化的,不可能同時往兩個方向演化。

       所以曲線的演變過程,就是不同力在曲線上的作用過程,力也可以表達為能量。世界萬物都趨向於能量最小而存在。因為此時它是最平衡的,消耗最小的(不知理解對不?)。那麼在影象分割裡面,我們目標是把目標的輪廓找到,那麼在目標的輪廓這個地方,整個輪廓的能量是最小的,那麼曲線在影象任何一個地方,都可以因為力朝著這個能量最小的輪廓演變,當演變到目標的輪廓的時候,因為能量最小,力平衡了,速度為0了,也就不動了,這時候目標就被我們分割出來了。

那現在關鍵就在於:1)這個輪廓我們怎麼表示;2)這些力怎麼構造,構造哪些力才可以讓目標輪廓這個地方的能量最小?

這兩個問題的描述和解決就衍生出了很多的基於主動輪廓線模型的分割方法。第一個問題的回答,就形成了兩大流派:如果這個輪廓是引數表示的,那麼就是引數活動輪廓模型(parametric active contour model),典型為snake模型,如果這幾個輪廓是幾何表示的,那麼就是幾何活動輪廓模型(geometric active contour model),即水平集方法(Level Set),他是把二維的輪廓嵌入到三維的曲面的零水平面來表達的(可以理解為一座山峰的等高線,某個等高線把山峰切了,這個高度山峰的水平形狀就出來了,也就是輪廓了),所以低維的演化曲線或曲面,表達為高維函式曲面的零水平集的間接表達形式(這個輪廓的變化,直觀上我們就可以調整山峰的形狀或者調整等高線的高度來得到)。

那對於第二個問題,是兩大流派都遇到的問題,是他們都需要解決的最關鍵的問題。哪些力才可以達到分割的目標呢?

二、Snake模型

自1987年kass提出Snakes模型以來,各種基於主動輪廓線的影象分割理解和識別方法如雨後春筍般蓬勃發展起來。Snakes模型的基本思想很簡單,他以構成一定形狀的一些控制點為模板(輪廓線),通過模板自身的彈性形變,與影象區域性特徵相匹配達到調和,即某種能量函式極小化,完成對影象的分割。再通過對模板的進一步分析而實現影象的理解和識別。

簡單的來講,SNAKE模型就是一條可變形的引數曲線及相應的能量函式,以最小化能量目標函式為目標,控制引數曲線變形,具有最小能量的閉合曲線就是目標輪廓。

構造Snakes模型的目的是為了調和上層指示和底層影象特徵這一對矛盾。無論是亮度、梯度、交點、紋理還是光流,所有的影象特徵都是區域性的。所謂區域性性就是指影象上某一點的特徵只取決於這一點所在的鄰域,而與物體的形狀無關。但是人們對物體的認識主要是來自其外形輪廓。如何將兩者有效地融合在一起正是Snakes模型的長處。Snakes模型的輪廓線承載了上層知識,而輪廓線與影象的匹配又融合了底層特徵。這兩項分別表示為Snakes模型中能量函式的內部力和影象力

模型的形變受到同時作用在模型上的許多不同的力所控制,每一種力所產生一部分能量,這部分能量表示為活動輪廓模型的能量函式的一個獨立的能量項。

Snakes模型首先需要在感興趣區域的附近給出一條初始曲線,接下來最小化能量泛函,讓曲線在影象中發生變形並不斷逼近目標輪廓。

kass等提出的原始Snakes模型由一組控制點:v(s)=[x(s),y(s)]  s組成,這些點首尾以直線相連構成輪廓線。其中x(s)和y(s)分別表示每個控制點在影象中的座標位置。s以傅立葉變換形式描述邊界的自變數。在snakes的控制點上定義能量函式(反映能量與輪廓之間的關係):


其中第一項稱為彈效能量是v的一階導數的模,第二項稱為彎曲能量,是v的二階導數的模,第三項是外部能量(外部力),在基本Snakes模型中一般只取控制點或連線所在位置的影象區域性特徵例如梯度:


也稱影象力。(當輪廓C靠近目標影象邊緣,那麼C的灰度的梯度將會增大,那麼上式的能量最小,由曲線演變公式知道該點的速度將變為0,也就是停止運動了。這樣,C就停在影象的邊緣位置了,也就完成了分割。那麼這個的前提就是目標在影象中的邊緣比較明顯了,否則很容易就越過邊緣了。)

彈效能量和彎曲能量合稱內部能量(內部力),用於控制輪廓線的彈性形變,起到保持輪廓連續性和平滑性的作用。而第三項代表外部能量,也被稱為影象能量,表示變形曲線與影象區域性特徵吻合的情況。內部能量僅僅跟snake的形狀有關,而跟影象資料無關。而外部能量僅僅跟影象資料有關。在某一點的a和b值決定曲線可以在這一點伸展和彎曲的程度。

最終對影象的分割轉化為求解能量函式Etotal(v)極小化(最小化輪廓的能量)。在能量函式極小化過程中,彈效能量迅速把輪廓線壓縮成一個光滑的圓,彎曲能量驅使輪廓線稱為光滑曲線或直線,而影象力則使輪廓線向影象的高梯度位置靠攏。基本Snakes模型就是在這3個力的聯合作用下工作的。

因為影象上的點都是離散的,所以我們用來優化能量函式的演算法都必須在離散域裡定義。所以求解能量函式Etotal(v)極小化是一個典型的變分問題(微分運算中,自變數一般是座標等變數,因變數是函式;變分運算中,自變數是函式,因變數是函式的函式,即數學上所謂的泛函。對泛函求極值的問題,數學上稱之為變分法)。

在離散化條件(數字影象)下,由尤拉方程可知最終問題的答案等價於求解一組差分方程:(尤拉方程是泛函極值條件的微分表示式,求解泛函的尤拉方程,即可得到使泛函取極值的駐函式,將變分問題轉化為微分問題。)


記外部力F= P,kass等將上式離散化後,對x(s)和y(s)分別構造兩個五對角陣的線性方程組,通過迭代計算進行求解。在實際應用中一般先在物體周圍手動點出控制點作為Snakes模型的起始位置,然後對能量函式迭代求解。