本文提出一種新的活動輪廓算法,即層次的上下文活動輪廓(HCAC),并將其應用于三維CT肝臟全自動分割。HCAC是一種基于機器學習的算法,可以分為兩個階段:第一階段,即學習階段,給定一套腹部三維CT訓練圖像以及對應的手動肝臟分割結果,利用上下文特征將每次的自動分割結果向手動參考分割結果映射,迭代學習得到一組糾錯分類器;第二階段,即分割階段,首先將待分割圖像用基本的活動輪廓進行分割,分割結果輸入第一個糾錯分類器,輸出第一個形狀模型,然后結合圖像信息和當前形狀模型,采用上下文活動輪廓(CAC)進行再一次分割,得到的分割結果輸入第二個糾錯分類器,輸出第二個形狀模型,結合圖像信息和當前形狀模型,再次采用CAC進行分割。如此迭代分割,隨著形狀模型的逐步精確,最終我們可以取得準確的肝臟分割。本文實驗結果表明,隨著迭代的深入,我們取得越來越好的分割結果。在三維CT肝臟圖像分割中,我們通過6次迭代,就可以取得較好的肝臟分割。
引用本文: 吉宏偉, 何江萍, 楊新. 基于層次上下文活動輪廓的三維CT肝臟圖像分割. 生物醫學工程學雜志, 2014, 31(2): 405-412. doi: 10.7507/1001-5515.20140076 復制
引言
肝臟分割是計算機輔助手術規劃的基礎,比如腫瘤切除、活體肝移植、微創手術等[1-2]。同時肝臟分割也用于計算機輔助診斷[3-4]。在CT圖像中,肝臟相鄰器官和組織的亮度跟肝臟本身的亮度是非常接近的,比如心臟和胃,在這些區域,僅僅依靠灰度值進行自動肝臟分割,其結果往往不準確。比如,單一的區域生長方法會產生周邊組織的泄漏,需要后續的手動校正[5]。還有一個問題就是,大多數的臨床影像有嚴重的病變,比如大的腫瘤、肝硬化等。它們是肝臟的一部分,但是它們的亮度跟正常肝臟組織的亮度有明顯的差異。此外,由于肝臟具有高度的形狀差異,用基于模型的方法描述肝臟結構是具有挑戰性的。由于以上提到的困難,目前臨床應用的系統普遍采用手動分割,這樣的工作是相當乏味且耗時的[6-9]。因此,適合臨床應用、快速準確的三維CT(three-dimeusional CT,3D-CT)肝臟全自動分割或交互式分割方法的研究非常有意義。
目前已有一些3D-CT肝臟分割方法的研究。Ruskó等[10]采用改進的區域生長技術,加上一些前處理和后處理來分割肝臟,展示了用區域生長這類低層次的圖像處理技術也能取得具有可比性的分割結果。Schmidt等[11]使用一個專用的腳本語言定義一套規則,成功地從圖像中提取出不同的結構。提取的順序依次為:背景空氣、肺和其他的體內空氣、皮下脂肪、肌肉層、肌肉層里面的骨骼、主動脈、脊柱、心臟、肝。在每個提取階段,系統充分利用已經提取出來的結構去輔助分割。基于規則的方法是最通用的分割方法,可以用來檢測各種對象。Heimann等[12]使用變形網格的方法去分割肝臟。網格變形的內力基于關鍵特征點(landmarks)構成的統計形狀模型(statistical shape model,SSM)[13],外力基于圖像數據。Zhang等[14]提出結合SSM和基于圖論的最優表面檢測進行自動肝臟分割,其中肝臟的初始定位采用3D廣義霍夫變換。Saddi等[15]采用levelset構造SSM,不涉及landmarks,因此landmarks之間的對應是不需要的。Badakhshannoory等[16]提出采用SSM驗證一組候選肝臟分割,從中選擇最好的分割結果。以上幾種方法都是全自動的分割方法,實驗表明,自動分割方法中,基于SSM的方法效果較好。盡管大的肝臟形狀差異不能用基于模型的方法完全捕獲,但是采用形狀先驗對分割確實是有幫助的。
此外,還有一些交互式的分割方法。Beichel等[17]提出了一個高度交互性的分割方法,這個方法基于graph cut分割[18]和兩個校正步驟。Beck等[19]也提出了一個高度交互性的分割算法。算法的核心是一個3D區域生長算子。通常,這個區域生長算子在肝臟內部的不同位置被反復使用,直到整個肝臟被分割出來。至于泄露的區域,可以采用“虛擬手術刀”進行手動校正。
本文提出一種新的活動輪廓算法,即層次的上下文活動輪廓(hierarchical contextual active contour,HCAC),并將其應用于3D-CT肝臟全自動分割。本文活動輪廓我們采用經典的Chan-Vese(CV)分割模型[20],HCAC即HCCV。HCCV是一個迭代的算法,通過引入糾錯機制,不斷地糾正分割結果,最終得到準確的分割結果。在學習階段,給定一套腹部3D-CT訓練圖像以及對應的手動肝臟分割結果,第一次迭代,首先對訓練集中的每一幅腹部圖像直接用CV模型進行分割,然后在CV模型分割結果與手動肝臟分割之間用上下文特征建立映射,學習得到第一個糾錯分類器;第二次迭代,首先將訓練集中每一幅腹部圖像的CV模型分割結果輸入第一個糾錯分類器,得到糾錯后分割結果(作為形狀模型),然后結合圖像信息與形狀模型,我們對訓練集中的每一幅腹部圖像用上下文CV (contextual CV,CCV) 模型進行分割,最后在CCV模型分割結果與手動肝臟分割之間用上下文特征建立映射,學習得到第二個糾錯分類器。接下來的迭代過程(第三次、第四次等)類似于第二次迭代,更新形狀模型(上次迭代中,訓練集中每一幅腹部圖像的CCV模型分割結果輸入上一個糾錯分類器,得到新的形狀模型),采用CCV模型進行分割,繼而學習得到新的糾錯分類器。最終,我們得到一系列糾錯分類器(迭代直至分割結果收斂)。在分割階段,給定一待分割腹部3D-CT圖像,第一次迭代對待分割腹部圖像直接用CV模型進行分割,得到第一次分割結果,第二次迭代,首先將第一次分割結果輸入第一個糾錯分類器,得到糾錯后分割結果(作為形狀模型),然后結合圖像信息與形狀模型,對待分割腹部圖像用CCV模型進行分割,得到第二次分割結果。算法迭代(更新形狀模型,CCV模型進行分割)直至分割結果收斂。本文方法是一種層次的學習方法,所采用的層次分類器學習能力強,只要訓練樣本足夠多,就可以很好地適應肝臟CT數據的復雜性(如正常肝臟與疾病肝臟,增強與未增強,肝臟大小、位置不同,圖像分辨率、層間分辨率不同等)。當然也可以先進行恰當的圖像配準工作,然后再采用我們的方法。但是考慮到3D-CT圖像的配準較為耗時,我們還是直接采用原始圖像作為輸入,讓分類器本身去學習這種差異。本文采用MICCAI 2007肝臟分割挑戰賽的訓練和測試數據評估算法性能。
1 活動輪廓
本文算法的基礎是活動輪廓,因此本節介紹所使用的活動輪廓以及單一的基于圖像信息的活動輪廓肝臟分割。
本文采用的活動輪廓是CV模型[20]。CV模型公式如下。
CV模型能量函數為
$\begin{align} & F(C,{{c}_{1}},{{c}_{2}})=\mu L\left( C \right)+vS\left( inside\left( C \right) \right)+ \\ & {{\lambda }_{1}}{{\int_{inside(C)}{\left| I\left( x,y \right)-{{c}_{1}} \right|}}^{2}}dxdy+ \\ & {{\lambda }_{2}}{{\int_{outside(C)}{\left| I\left( x,y \right),{{c}_{2}} \right|}}^{2}}dxdy\text{ }, \\ \end{align}$ |
其中L(C)是閉合輪廓的C長度,S(inside(C))是C的內部區域面積,I是原始圖像,c1是C的內部區域平均灰度,c2是C的外部區域平均灰度;μ,v≥0,λ1,λ2>0是各個能量項的權重系數。令v=0,λ1=λ2=λ,且考慮3D情況,本文用于3D圖像分割的CV模型能量函數為
$\begin{align} & F(C,{{c}_{1}},{{c}_{2}})=\mu L\left( C \right)+\lambda (\int_{inside(C)}{\left| I\left( x,y,z \right)- \right.} \\ & {{\left. {{c}_{1}} \right|}^{3}}dxdydz+\int_{outside(C)}{\left| I\left( x,y,z \right)- \right.} \\ & {{\left. {{c}_{2}} \right|}^{2}}dxdydz) \\ \end{align}$ |
水平集框架下上述能量函數重寫為
$\begin{align} & F(\Phi ,{{c}_{1}},{{c}_{2}})=\mu \int_{\Omega }{\delta }\left( \Phi \left( x,y,z \right) \right)\left| \nabla \Phi \left( x,y,z \right) \right| \\ & dxdydz+\int_{\Omega }{{{\left| I\left( x,y,z \right)-{{c}_{1}} \right|}^{2}}}H\left( \Phi \right. \\ & \left( x,y,z \right)dxdydz+\int_{\Omega }{{{\left| I\left( x,y,z \right)-{{c}_{2}} \right|}^{2}}} \\ & \left( 1-H\left( \Phi \left( x,y,z \right) \right)dxdydz \right), \\ \end{align}$ |
其中Φ為閉合輪廓C的水平集函數,即{C|Φ(x,y,z)=0},并設Φ為內正外負型的符號距離函數,即Φ(inside(C))>0,Φ(outside(C))<0。Ω為圖像函數和水平集函數的定義域,δ( )為Dirac函數,H( )為Heaviside函數,即。
最小化能量函數,以歐拉-拉格朗日方法推導出的偏微分方程(曲面演化方程)為
$\left\{ \begin{align} & {{c}_{1}}\left( \Phi \right)=\frac{\int_{\Omega }{I\left( x,y,z \right)H\left( \Phi \right)dxdydz}}{\int_{\Omega }{H\left( \Phi \right)dxdydz}}, \\ & {{c}_{2}}\left( \Phi \right)=\frac{\int_{\Omega }{I\left( x,y,z \right)\left( 1-H\left( \Phi \right) \right)dxdydz}}{\int_{\Omega }{\left( 1-H\left( \Phi \right) \right)dxdydz}} \\ & \frac{\partial \Phi }{\partial t}=\delta \left( \Phi \right)\left[ \mu \centerdot div \right.\left( \frac{\nabla \Phi }{\left| \nabla \Phi \right|} \right)+ \\ & \lambda \left( {{\left( I\left( x,y,z \right)-{{c}_{2}} \right)}^{2}} \right.-\left. \left. {{\left( I\left( x,y,z \right)-{{c}_{1}} \right)}^{2}} \right) \right] \\ & \Phi \left( 0,x,y,z \right)={{\Phi }_{0}}\left( x,y,z \right) \\ \end{align} \right.,$ |
其中為水平集函數的曲率,Φ0為初始水平集函數。
采用CV模型分割肝臟時,首先在3D-CT腹部圖像中肝臟附近選取一球面作為初始輪廓,球心以及半徑手動確定,確保球大致在肝臟部位。CV模型曲面演化方程(公式4)驅動輪廓演化,最終得到分割結果。由于單一的基于圖像信息的CV模型只采用了亮度信息,沒有結合肝臟的形狀信息,因此這樣的分割往往是不準確的,有可能會出現泄漏等現象,如圖 1所示。

2 基于上下文特征的糾錯分類器
如上文所述,單一的基于圖像信息的CV模型由于只采用了亮度信息,通常得到的分割結果是不夠準確的(泄漏或過分割現象時有發生)。本節我們考慮用學習的方法糾正上文所述的分割錯誤模式。由于人體腹部解剖結構的相對固定性,在分割CT肝臟時,錯誤模式基本一致,大同小異,因此可以考慮用學習的方法進行校正。給定一套腹部3D-CT訓練圖像以及對應的手動肝臟分割結果。我們將訓練集中每一幅腹部圖像的當前分割結果作為輸入,手動肝臟分割結果作為學習目標,構造糾錯分類器。輸入的分割結果可以是二值分割,也可以直接用水平集函數。學習目標采用二值的手動肝臟分割結果。分類器采用Adaboost分類器。特征我們采用上下文特征(context features)[21]。上下文特征定義:上下文特征是從當前的分割結果(二值分割或水平集函數)中提取的。對于每個像素,以它為中心,向外引出若干條等角度間隔的射線(對于3D情況,我們沿著當前體素的26鄰域方向,引出26條射線),我們在這些射線上稀疏地采樣上下文位置(使用一個固定的徑向序列)。對于每個上下文位置,對應的二值標記以及二值標記均值(或水平集函數值以及水平集函數均值)作為上下文特征,如圖 2和圖 3所示。利用錯誤輪廓的上下文關系,學習構造糾錯分類器,進行自我校正,盡可能將錯誤輪廓向正確輪廓映射。

這僅僅是一個2D的展示,事實上,提取上下文特征時,我們采用3D上下文特征
Figure2. Correction procedure and results using a self-correcting classifierJust a 2D illustration,in fact,we adopt 3D context features

學習得到糾錯分類器后,給定一待分割腹部3D-CT圖像,我們將待分割腹部圖像當前分割結果(二值分割或水平集函數)輸入糾錯分類器,輸出得到校正后的分割結果(分類概率映射),如圖 2所示。當然,這樣的分類概率映射并不能作為最終的分割結果。糾錯分類器并不能保證將錯誤輪廓變為正確輪廓,只是盡可能將錯誤輪廓向正確輪廓映射。
3 層次上下文活動輪廓
本節介紹提出的HCAC算法,并將其應用于3D-CT肝臟分割,包括學習過程與分割過程。
3.1 學習過程
給定一套腹部3D-CT訓練圖像以及對應的手動肝臟分割結果。
(1) 對訓練集中的每一幅腹部圖像直接用CV模型進行分割。在肝臟附近選取一球面作為初始輪廓,球心以及半徑手動確定,確保球大致在肝臟部位。CV模型驅動輪廓演化,最終得到分割結果。當然,這樣的分割是不準確的。
(2) 我們將訓練集中每一幅腹部圖像的當前分割結果作為輸入,手動肝臟分割結果作為學習目標,構造糾錯分類器(基于上下文特征),具體見第二節。利用錯誤輪廓的上下文關系,學習構造糾錯分類器,進行自我校正,盡可能將錯誤輪廓向正確輪廓映射。
(3) 學習得到糾錯分類器后,我們將訓練集中每一幅腹部圖像當前分割結果(水平集函數)輸入糾錯分類器,輸出得到校正后的分割結果(分類概率映射)。當然,這樣的分類概率映射并不能作為最終的分割結果。
(4) 我們將得到的分類概率映射作為形狀模型,與CV模型結合,命名為CCV模型。對訓練集中的每一幅腹部圖像用CCV模型進行再一次分割。本文用于3D圖像分割的CCV模型能量函數為
$\begin{align} & F(C,{{c}_{1}},{{c}_{2}})=\mu L\left( C \right)+\lambda \left( {{\int_{inside(C)}{\left| I\left( x,y,z \right)-{{c}_{1}} \right|}}^{2}} \right.dxdydz \\ & +\left. {{\int_{outside(C)}{\left| I\left( x,y,z \right)-{{c}_{2}} \right|}}^{2}}dxdydz \right)+ \\ & \alpha \left( {{\int_{inside(C)}{\left| M\left( x,y,z \right)-{{c}_{3}} \right|}}^{2}} \right.dxdydz \\ & +\left. {{\int_{outside(C)}{\left| M\left( x,y,z \right)-{{c}_{4}} \right|}}^{2}}dxdydz \right) \\ \end{align}$ |
水平集框架下上述能量函數重寫為
$\begin{align} & F(\Phi ,{{c}_{1}},{{c}_{2}})=\mu \int_{\Omega }{\delta \left( \Phi \left( x,y,z \right) \right)}\left| \Phi \left( x,y,z \right) \right|dxdydz+ \\ & \lambda \left( \int_{\Omega }{{{\left| I\left( x,y,z \right)-{{c}_{1}} \right|}^{2}}} \right.H\left( \Phi \left( x,y,z \right) \right)dxdydz+ \\ & \int_{\Omega }{{{\left| I\left( x,y,z \right)-{{c}_{2}} \right|}^{2}}}\left. \left( 1-H\left( \Phi \left( x,y,z \right) \right) \right)dxdydz \right)+ \\ & \alpha \left( \int_{\Omega }{{{\left| M\left( x,y,z \right)-{{c}_{3}} \right|}^{2}}} \right.H\left( \Phi \left( x,y,z \right) \right)dxdydz+ \\ & \int_{\Omega }{{{\left| M\left( x,y,z \right)-{{c}_{4}} \right|}^{2}}}\left. \left( 1-H\left( \Phi \left( x,y,z \right) \right) \right)dxdydz \right) \\ \end{align}$ |
最小化能量函數,以歐拉-拉格朗日方法推導出的偏微分方程(曲面演化方程)為
$\left\{ \begin{align} & {{c}_{1}}\left( \Phi \right)=\frac{\int_{\Omega }{I\left( x,y,z \right)H\left( \Phi \right)dxdydz}}{\int_{\Omega }{H\left( \Phi \right)dxdydz}}, \\ & {{c}_{2}}\left( \Phi \right)=\frac{\int_{\Omega }{I\left( x,y,z \right)\left( 1-H\left( \Phi \right) \right)dxdydz}}{\int_{\Omega }{\left( 1-H\left( \Phi \right) \right)dxdydz}} \\ & {{c}_{3}}\left( \Phi \right)=\frac{\int_{\Omega }{M\left( x,y,z \right)H\left( \Phi \right)dxdydz}}{\int_{\Omega }{H\left( \Phi \right)dxdydz}}, \\ & {{c}_{4}}\left( \Phi \right)=\frac{\int_{\Omega }{M\left( x,y,z \right)\left( 1-H\left( \Phi \right) \right)dxdydz}}{\int_{\Omega }{\left( 1-H\left( \Phi \right) \right)dxdydz}} \\ & \frac{\partial \Phi }{\partial t}=\delta \left( \Phi \right)\left[ \mu \centerdot div\left( \frac{\nabla \Phi }{\left| \nabla \Phi \right|} \right)+\lambda \left( {{\left( I\left( x,y,z \right)-{{c}_{2}} \right)}^{2}} \right.- \right. \\ & \left. {{\left( I\left( x,y,z \right)-{{c}_{1}} \right)}^{2}} \right)+\alpha \left( {{\left( M\left( x,y,z \right)-{{c}_{4}} \right)}^{2}}-\left. {{\left( M\left( x,y,z \right)-{{c}_{3}} \right)}^{2}} \right] \right. \\ & \Phi \left( 0,x,y,z \right)={{\Phi }_{0}}\left( x,y,z \right) \\ \end{align} \right.$ |
公式(5-7)中M為分類概率映射,即形狀模型,c3為輪廓曲面內部區域(目標)的平均分類概率映射,c4為輪廓曲面外部區域(背景)的平均分類概率映射,α為形狀項權重參數(可調整)。采用上一次的分割結果(水平集函數)作為初始輪廓。輪廓在平滑項、圖像項和形狀項的共同作用下演化,得到新的分割結果。當然,這樣的分割結果也不能作為最終的分割結果,因為形狀模型可能不夠準確。我們希望通過迭代的方法,更新形狀模型M,如下所述。
(5) 我們采用循序漸進的方法,逐步得到精確的分割結果,即采用HCAC,在這里就是hierarchical contextual CV(HCCV)模型。我們期望通過迭代進行2~4步驟,逐步得到精確的形狀模型,從而逐步得到準確的最終分割。迭代到最后分割結果將收斂,也可以設置最大迭代次數或最大誤差。注意HCCV模型每次迭代中形狀項權重參數的調整,一開始的時候形狀模型不夠精確,設置較小的參數,隨著迭代的深入,形狀模型越來越精確,可設置較大的參數。在整個HCCV執行過程中,I(x,y,z)固定不變,而M(x,y,z)每一輪都會更新一次。
(6) 最終,在學習階段,我們得到的是一系列糾錯分類器。
3.2 分割過程
給定一待分割腹部3D-CT圖像。
(1) 對待分割腹部圖像直接用CV模型進行分割。在圖像中肝臟附近確定一球面作為初始輪廓,球心以及半徑手動確定,確保球大致在肝臟部位。CV模型驅動輪廓演化,得到第一次分割結果。
(2) 將第一次分割結果(水平集函數)輸入第一個糾錯分類器,輸出得到第一個形狀模型(分類概率映射)。
(3) 對待分割腹部圖像用CCV模型進行再一次分割。形狀項采用上一步中得到的形狀模型,初始輪廓采用上一次的分割結果。輪廓在平滑項、圖像項和形狀項的共同作用下演化,得到新的分割結果。當然,這樣的分割結果也不能作為最終的分割結果,因為形狀模型可能不夠準確
(4) 將新的分割結果(水平集函數)輸入下一個糾錯分類器,輸出得到新的形狀模型(分類概率映射)。新的形狀模型比上次的形狀模型更為準確。
(5) 重復(3)、(4) 步驟,直到分割結果收斂,也可以設置最大迭代次數或最大誤差。我們采用HCCV模型,逐步得到準確的形狀模型,從而逐步得到精確的最終分割。流程如圖 4所示。HCCV模型每次迭代中形狀項權重參數的調整同訓練過程。

4 實驗結果
實驗采用MICCAI 2007肝臟分割挑戰賽(http://www.sliver07.org)的訓練和測試數據。訓練集中有20幅增強型腹部3D-CT圖像,測試集中有10幅增強型×腹部3D-CT圖像。所有圖像橫向切片的大小為512×512;圖像切片間距不盡相同,范圍為0.5~5.0 mm。在訓練和測試階段,無論是CV模型,還是CCV模型,我們設置平滑項權重參數μ=1、圖像項權重參數λ=1。CCV模型中的形狀項權重參數α隨迭代的深入逐步增加,本文我們設置α(0)=0,α(1)=1/3,α(2)=1/2,α(3)=1,α(4)=2,α(5)=3(注意,當α=0時,CCV模型簡化為CV模型)。

(a)比較容易的例子;(b)比較難的例子。紅色代表自動分割結果,藍色代表手動分割結果
Figure5. Transversal view of segmentation results on two test images(a) a relatively easy case; (b) a relatively difficult case. The contour of the manual reference segmentation is in blue,while the contour of the automatic segmentation is in red
觀察圖 5(b),我們發現最終的自動分割結果與手動分割結果仍有一定差距。究其原因,我們認為可能有兩點:第一,我們的方法是一種基于機器學習的方法,需要大樣本訓練才能取得較好的泛化能力,實驗中訓練樣本偏少導致糾錯分類器適應能力不強;第二,我們觀察了MICCAI 2007肝臟分割挑戰賽的訓練數據,發現有部分訓練圖像的參考分割結果本身不夠精確,從而可能導致糾錯分類器也不夠精確。
為了進一步證明本文分割算法的有效性,我們采用下面四個overlap準則來衡量肝臟分割的準確性:precision(P),recall(R),relative overlap(RO),similarity index(SI)。
$\begin{align} & P=\frac{V\left( A\cap B \right)}{V\left( B \right)},R=\frac{V\left( A\cap B \right)}{V\left( A \right)},RO=\frac{V\left( A\cap B \right)}{V\left( A\cup B \right)}, \\ & SI=\frac{V\left( A\cap B \right)}{0.5\times \left( V\left( A \right)+V\left( B \right) \right)} \\ \end{align}$ |
其中:V(A)為手動分割結果中肝臟的體積;V(B)是采用本文算法進行分割得到的肝臟體積。表 1展示了本文算法不同階段的分割結果比較(針對測試集中的10幅CT圖像,結果求平均)。實驗結果表明,我們的方法在3D-CT肝臟圖像分割中取得了很好的效果。

5 結論
本文提出了一種新的活動輪廓算法HCAC,并將其應用于3D-CT肝臟分割。HCAC是一種全自動的肝臟分割方法,不需要手動干預。學習過程中,HCAC利用上下文特征將每次的錯誤輪廓向正確輪廓映射,學習構造糾錯分類器組。分割過程中,當前的分割結果輸入對應的糾錯分類器,輸出形狀模型。HCAC結合圖像信息和形狀模型(迭代更新)分割圖像,解決單一的基于圖像的活動輪廓過分割和泄漏問題。HCAC是一個迭代的算法,形狀模型可不斷更新,隨著迭代的深入,形狀模型逐步精確,最終我們可以取得準確的肝臟分割。本文采用MICCAI 2007肝臟分割挑戰賽的訓練和測試數據評估算法性能。實驗結果表明,在3D-CT肝臟圖像分割中,我們通過六次迭代,就可以取得較好的肝臟分割。
引言
肝臟分割是計算機輔助手術規劃的基礎,比如腫瘤切除、活體肝移植、微創手術等[1-2]。同時肝臟分割也用于計算機輔助診斷[3-4]。在CT圖像中,肝臟相鄰器官和組織的亮度跟肝臟本身的亮度是非常接近的,比如心臟和胃,在這些區域,僅僅依靠灰度值進行自動肝臟分割,其結果往往不準確。比如,單一的區域生長方法會產生周邊組織的泄漏,需要后續的手動校正[5]。還有一個問題就是,大多數的臨床影像有嚴重的病變,比如大的腫瘤、肝硬化等。它們是肝臟的一部分,但是它們的亮度跟正常肝臟組織的亮度有明顯的差異。此外,由于肝臟具有高度的形狀差異,用基于模型的方法描述肝臟結構是具有挑戰性的。由于以上提到的困難,目前臨床應用的系統普遍采用手動分割,這樣的工作是相當乏味且耗時的[6-9]。因此,適合臨床應用、快速準確的三維CT(three-dimeusional CT,3D-CT)肝臟全自動分割或交互式分割方法的研究非常有意義。
目前已有一些3D-CT肝臟分割方法的研究。Ruskó等[10]采用改進的區域生長技術,加上一些前處理和后處理來分割肝臟,展示了用區域生長這類低層次的圖像處理技術也能取得具有可比性的分割結果。Schmidt等[11]使用一個專用的腳本語言定義一套規則,成功地從圖像中提取出不同的結構。提取的順序依次為:背景空氣、肺和其他的體內空氣、皮下脂肪、肌肉層、肌肉層里面的骨骼、主動脈、脊柱、心臟、肝。在每個提取階段,系統充分利用已經提取出來的結構去輔助分割。基于規則的方法是最通用的分割方法,可以用來檢測各種對象。Heimann等[12]使用變形網格的方法去分割肝臟。網格變形的內力基于關鍵特征點(landmarks)構成的統計形狀模型(statistical shape model,SSM)[13],外力基于圖像數據。Zhang等[14]提出結合SSM和基于圖論的最優表面檢測進行自動肝臟分割,其中肝臟的初始定位采用3D廣義霍夫變換。Saddi等[15]采用levelset構造SSM,不涉及landmarks,因此landmarks之間的對應是不需要的。Badakhshannoory等[16]提出采用SSM驗證一組候選肝臟分割,從中選擇最好的分割結果。以上幾種方法都是全自動的分割方法,實驗表明,自動分割方法中,基于SSM的方法效果較好。盡管大的肝臟形狀差異不能用基于模型的方法完全捕獲,但是采用形狀先驗對分割確實是有幫助的。
此外,還有一些交互式的分割方法。Beichel等[17]提出了一個高度交互性的分割方法,這個方法基于graph cut分割[18]和兩個校正步驟。Beck等[19]也提出了一個高度交互性的分割算法。算法的核心是一個3D區域生長算子。通常,這個區域生長算子在肝臟內部的不同位置被反復使用,直到整個肝臟被分割出來。至于泄露的區域,可以采用“虛擬手術刀”進行手動校正。
本文提出一種新的活動輪廓算法,即層次的上下文活動輪廓(hierarchical contextual active contour,HCAC),并將其應用于3D-CT肝臟全自動分割。本文活動輪廓我們采用經典的Chan-Vese(CV)分割模型[20],HCAC即HCCV。HCCV是一個迭代的算法,通過引入糾錯機制,不斷地糾正分割結果,最終得到準確的分割結果。在學習階段,給定一套腹部3D-CT訓練圖像以及對應的手動肝臟分割結果,第一次迭代,首先對訓練集中的每一幅腹部圖像直接用CV模型進行分割,然后在CV模型分割結果與手動肝臟分割之間用上下文特征建立映射,學習得到第一個糾錯分類器;第二次迭代,首先將訓練集中每一幅腹部圖像的CV模型分割結果輸入第一個糾錯分類器,得到糾錯后分割結果(作為形狀模型),然后結合圖像信息與形狀模型,我們對訓練集中的每一幅腹部圖像用上下文CV (contextual CV,CCV) 模型進行分割,最后在CCV模型分割結果與手動肝臟分割之間用上下文特征建立映射,學習得到第二個糾錯分類器。接下來的迭代過程(第三次、第四次等)類似于第二次迭代,更新形狀模型(上次迭代中,訓練集中每一幅腹部圖像的CCV模型分割結果輸入上一個糾錯分類器,得到新的形狀模型),采用CCV模型進行分割,繼而學習得到新的糾錯分類器。最終,我們得到一系列糾錯分類器(迭代直至分割結果收斂)。在分割階段,給定一待分割腹部3D-CT圖像,第一次迭代對待分割腹部圖像直接用CV模型進行分割,得到第一次分割結果,第二次迭代,首先將第一次分割結果輸入第一個糾錯分類器,得到糾錯后分割結果(作為形狀模型),然后結合圖像信息與形狀模型,對待分割腹部圖像用CCV模型進行分割,得到第二次分割結果。算法迭代(更新形狀模型,CCV模型進行分割)直至分割結果收斂。本文方法是一種層次的學習方法,所采用的層次分類器學習能力強,只要訓練樣本足夠多,就可以很好地適應肝臟CT數據的復雜性(如正常肝臟與疾病肝臟,增強與未增強,肝臟大小、位置不同,圖像分辨率、層間分辨率不同等)。當然也可以先進行恰當的圖像配準工作,然后再采用我們的方法。但是考慮到3D-CT圖像的配準較為耗時,我們還是直接采用原始圖像作為輸入,讓分類器本身去學習這種差異。本文采用MICCAI 2007肝臟分割挑戰賽的訓練和測試數據評估算法性能。
1 活動輪廓
本文算法的基礎是活動輪廓,因此本節介紹所使用的活動輪廓以及單一的基于圖像信息的活動輪廓肝臟分割。
本文采用的活動輪廓是CV模型[20]。CV模型公式如下。
CV模型能量函數為
$\begin{align} & F(C,{{c}_{1}},{{c}_{2}})=\mu L\left( C \right)+vS\left( inside\left( C \right) \right)+ \\ & {{\lambda }_{1}}{{\int_{inside(C)}{\left| I\left( x,y \right)-{{c}_{1}} \right|}}^{2}}dxdy+ \\ & {{\lambda }_{2}}{{\int_{outside(C)}{\left| I\left( x,y \right),{{c}_{2}} \right|}}^{2}}dxdy\text{ }, \\ \end{align}$ |
其中L(C)是閉合輪廓的C長度,S(inside(C))是C的內部區域面積,I是原始圖像,c1是C的內部區域平均灰度,c2是C的外部區域平均灰度;μ,v≥0,λ1,λ2>0是各個能量項的權重系數。令v=0,λ1=λ2=λ,且考慮3D情況,本文用于3D圖像分割的CV模型能量函數為
$\begin{align} & F(C,{{c}_{1}},{{c}_{2}})=\mu L\left( C \right)+\lambda (\int_{inside(C)}{\left| I\left( x,y,z \right)- \right.} \\ & {{\left. {{c}_{1}} \right|}^{3}}dxdydz+\int_{outside(C)}{\left| I\left( x,y,z \right)- \right.} \\ & {{\left. {{c}_{2}} \right|}^{2}}dxdydz) \\ \end{align}$ |
水平集框架下上述能量函數重寫為
$\begin{align} & F(\Phi ,{{c}_{1}},{{c}_{2}})=\mu \int_{\Omega }{\delta }\left( \Phi \left( x,y,z \right) \right)\left| \nabla \Phi \left( x,y,z \right) \right| \\ & dxdydz+\int_{\Omega }{{{\left| I\left( x,y,z \right)-{{c}_{1}} \right|}^{2}}}H\left( \Phi \right. \\ & \left( x,y,z \right)dxdydz+\int_{\Omega }{{{\left| I\left( x,y,z \right)-{{c}_{2}} \right|}^{2}}} \\ & \left( 1-H\left( \Phi \left( x,y,z \right) \right)dxdydz \right), \\ \end{align}$ |
其中Φ為閉合輪廓C的水平集函數,即{C|Φ(x,y,z)=0},并設Φ為內正外負型的符號距離函數,即Φ(inside(C))>0,Φ(outside(C))<0。Ω為圖像函數和水平集函數的定義域,δ( )為Dirac函數,H( )為Heaviside函數,即。
最小化能量函數,以歐拉-拉格朗日方法推導出的偏微分方程(曲面演化方程)為
$\left\{ \begin{align} & {{c}_{1}}\left( \Phi \right)=\frac{\int_{\Omega }{I\left( x,y,z \right)H\left( \Phi \right)dxdydz}}{\int_{\Omega }{H\left( \Phi \right)dxdydz}}, \\ & {{c}_{2}}\left( \Phi \right)=\frac{\int_{\Omega }{I\left( x,y,z \right)\left( 1-H\left( \Phi \right) \right)dxdydz}}{\int_{\Omega }{\left( 1-H\left( \Phi \right) \right)dxdydz}} \\ & \frac{\partial \Phi }{\partial t}=\delta \left( \Phi \right)\left[ \mu \centerdot div \right.\left( \frac{\nabla \Phi }{\left| \nabla \Phi \right|} \right)+ \\ & \lambda \left( {{\left( I\left( x,y,z \right)-{{c}_{2}} \right)}^{2}} \right.-\left. \left. {{\left( I\left( x,y,z \right)-{{c}_{1}} \right)}^{2}} \right) \right] \\ & \Phi \left( 0,x,y,z \right)={{\Phi }_{0}}\left( x,y,z \right) \\ \end{align} \right.,$ |
其中為水平集函數的曲率,Φ0為初始水平集函數。
采用CV模型分割肝臟時,首先在3D-CT腹部圖像中肝臟附近選取一球面作為初始輪廓,球心以及半徑手動確定,確保球大致在肝臟部位。CV模型曲面演化方程(公式4)驅動輪廓演化,最終得到分割結果。由于單一的基于圖像信息的CV模型只采用了亮度信息,沒有結合肝臟的形狀信息,因此這樣的分割往往是不準確的,有可能會出現泄漏等現象,如圖 1所示。

2 基于上下文特征的糾錯分類器
如上文所述,單一的基于圖像信息的CV模型由于只采用了亮度信息,通常得到的分割結果是不夠準確的(泄漏或過分割現象時有發生)。本節我們考慮用學習的方法糾正上文所述的分割錯誤模式。由于人體腹部解剖結構的相對固定性,在分割CT肝臟時,錯誤模式基本一致,大同小異,因此可以考慮用學習的方法進行校正。給定一套腹部3D-CT訓練圖像以及對應的手動肝臟分割結果。我們將訓練集中每一幅腹部圖像的當前分割結果作為輸入,手動肝臟分割結果作為學習目標,構造糾錯分類器。輸入的分割結果可以是二值分割,也可以直接用水平集函數。學習目標采用二值的手動肝臟分割結果。分類器采用Adaboost分類器。特征我們采用上下文特征(context features)[21]。上下文特征定義:上下文特征是從當前的分割結果(二值分割或水平集函數)中提取的。對于每個像素,以它為中心,向外引出若干條等角度間隔的射線(對于3D情況,我們沿著當前體素的26鄰域方向,引出26條射線),我們在這些射線上稀疏地采樣上下文位置(使用一個固定的徑向序列)。對于每個上下文位置,對應的二值標記以及二值標記均值(或水平集函數值以及水平集函數均值)作為上下文特征,如圖 2和圖 3所示。利用錯誤輪廓的上下文關系,學習構造糾錯分類器,進行自我校正,盡可能將錯誤輪廓向正確輪廓映射。

這僅僅是一個2D的展示,事實上,提取上下文特征時,我們采用3D上下文特征
Figure2. Correction procedure and results using a self-correcting classifierJust a 2D illustration,in fact,we adopt 3D context features

學習得到糾錯分類器后,給定一待分割腹部3D-CT圖像,我們將待分割腹部圖像當前分割結果(二值分割或水平集函數)輸入糾錯分類器,輸出得到校正后的分割結果(分類概率映射),如圖 2所示。當然,這樣的分類概率映射并不能作為最終的分割結果。糾錯分類器并不能保證將錯誤輪廓變為正確輪廓,只是盡可能將錯誤輪廓向正確輪廓映射。
3 層次上下文活動輪廓
本節介紹提出的HCAC算法,并將其應用于3D-CT肝臟分割,包括學習過程與分割過程。
3.1 學習過程
給定一套腹部3D-CT訓練圖像以及對應的手動肝臟分割結果。
(1) 對訓練集中的每一幅腹部圖像直接用CV模型進行分割。在肝臟附近選取一球面作為初始輪廓,球心以及半徑手動確定,確保球大致在肝臟部位。CV模型驅動輪廓演化,最終得到分割結果。當然,這樣的分割是不準確的。
(2) 我們將訓練集中每一幅腹部圖像的當前分割結果作為輸入,手動肝臟分割結果作為學習目標,構造糾錯分類器(基于上下文特征),具體見第二節。利用錯誤輪廓的上下文關系,學習構造糾錯分類器,進行自我校正,盡可能將錯誤輪廓向正確輪廓映射。
(3) 學習得到糾錯分類器后,我們將訓練集中每一幅腹部圖像當前分割結果(水平集函數)輸入糾錯分類器,輸出得到校正后的分割結果(分類概率映射)。當然,這樣的分類概率映射并不能作為最終的分割結果。
(4) 我們將得到的分類概率映射作為形狀模型,與CV模型結合,命名為CCV模型。對訓練集中的每一幅腹部圖像用CCV模型進行再一次分割。本文用于3D圖像分割的CCV模型能量函數為
$\begin{align} & F(C,{{c}_{1}},{{c}_{2}})=\mu L\left( C \right)+\lambda \left( {{\int_{inside(C)}{\left| I\left( x,y,z \right)-{{c}_{1}} \right|}}^{2}} \right.dxdydz \\ & +\left. {{\int_{outside(C)}{\left| I\left( x,y,z \right)-{{c}_{2}} \right|}}^{2}}dxdydz \right)+ \\ & \alpha \left( {{\int_{inside(C)}{\left| M\left( x,y,z \right)-{{c}_{3}} \right|}}^{2}} \right.dxdydz \\ & +\left. {{\int_{outside(C)}{\left| M\left( x,y,z \right)-{{c}_{4}} \right|}}^{2}}dxdydz \right) \\ \end{align}$ |
水平集框架下上述能量函數重寫為
$\begin{align} & F(\Phi ,{{c}_{1}},{{c}_{2}})=\mu \int_{\Omega }{\delta \left( \Phi \left( x,y,z \right) \right)}\left| \Phi \left( x,y,z \right) \right|dxdydz+ \\ & \lambda \left( \int_{\Omega }{{{\left| I\left( x,y,z \right)-{{c}_{1}} \right|}^{2}}} \right.H\left( \Phi \left( x,y,z \right) \right)dxdydz+ \\ & \int_{\Omega }{{{\left| I\left( x,y,z \right)-{{c}_{2}} \right|}^{2}}}\left. \left( 1-H\left( \Phi \left( x,y,z \right) \right) \right)dxdydz \right)+ \\ & \alpha \left( \int_{\Omega }{{{\left| M\left( x,y,z \right)-{{c}_{3}} \right|}^{2}}} \right.H\left( \Phi \left( x,y,z \right) \right)dxdydz+ \\ & \int_{\Omega }{{{\left| M\left( x,y,z \right)-{{c}_{4}} \right|}^{2}}}\left. \left( 1-H\left( \Phi \left( x,y,z \right) \right) \right)dxdydz \right) \\ \end{align}$ |
最小化能量函數,以歐拉-拉格朗日方法推導出的偏微分方程(曲面演化方程)為
$\left\{ \begin{align} & {{c}_{1}}\left( \Phi \right)=\frac{\int_{\Omega }{I\left( x,y,z \right)H\left( \Phi \right)dxdydz}}{\int_{\Omega }{H\left( \Phi \right)dxdydz}}, \\ & {{c}_{2}}\left( \Phi \right)=\frac{\int_{\Omega }{I\left( x,y,z \right)\left( 1-H\left( \Phi \right) \right)dxdydz}}{\int_{\Omega }{\left( 1-H\left( \Phi \right) \right)dxdydz}} \\ & {{c}_{3}}\left( \Phi \right)=\frac{\int_{\Omega }{M\left( x,y,z \right)H\left( \Phi \right)dxdydz}}{\int_{\Omega }{H\left( \Phi \right)dxdydz}}, \\ & {{c}_{4}}\left( \Phi \right)=\frac{\int_{\Omega }{M\left( x,y,z \right)\left( 1-H\left( \Phi \right) \right)dxdydz}}{\int_{\Omega }{\left( 1-H\left( \Phi \right) \right)dxdydz}} \\ & \frac{\partial \Phi }{\partial t}=\delta \left( \Phi \right)\left[ \mu \centerdot div\left( \frac{\nabla \Phi }{\left| \nabla \Phi \right|} \right)+\lambda \left( {{\left( I\left( x,y,z \right)-{{c}_{2}} \right)}^{2}} \right.- \right. \\ & \left. {{\left( I\left( x,y,z \right)-{{c}_{1}} \right)}^{2}} \right)+\alpha \left( {{\left( M\left( x,y,z \right)-{{c}_{4}} \right)}^{2}}-\left. {{\left( M\left( x,y,z \right)-{{c}_{3}} \right)}^{2}} \right] \right. \\ & \Phi \left( 0,x,y,z \right)={{\Phi }_{0}}\left( x,y,z \right) \\ \end{align} \right.$ |
公式(5-7)中M為分類概率映射,即形狀模型,c3為輪廓曲面內部區域(目標)的平均分類概率映射,c4為輪廓曲面外部區域(背景)的平均分類概率映射,α為形狀項權重參數(可調整)。采用上一次的分割結果(水平集函數)作為初始輪廓。輪廓在平滑項、圖像項和形狀項的共同作用下演化,得到新的分割結果。當然,這樣的分割結果也不能作為最終的分割結果,因為形狀模型可能不夠準確。我們希望通過迭代的方法,更新形狀模型M,如下所述。
(5) 我們采用循序漸進的方法,逐步得到精確的分割結果,即采用HCAC,在這里就是hierarchical contextual CV(HCCV)模型。我們期望通過迭代進行2~4步驟,逐步得到精確的形狀模型,從而逐步得到準確的最終分割。迭代到最后分割結果將收斂,也可以設置最大迭代次數或最大誤差。注意HCCV模型每次迭代中形狀項權重參數的調整,一開始的時候形狀模型不夠精確,設置較小的參數,隨著迭代的深入,形狀模型越來越精確,可設置較大的參數。在整個HCCV執行過程中,I(x,y,z)固定不變,而M(x,y,z)每一輪都會更新一次。
(6) 最終,在學習階段,我們得到的是一系列糾錯分類器。
3.2 分割過程
給定一待分割腹部3D-CT圖像。
(1) 對待分割腹部圖像直接用CV模型進行分割。在圖像中肝臟附近確定一球面作為初始輪廓,球心以及半徑手動確定,確保球大致在肝臟部位。CV模型驅動輪廓演化,得到第一次分割結果。
(2) 將第一次分割結果(水平集函數)輸入第一個糾錯分類器,輸出得到第一個形狀模型(分類概率映射)。
(3) 對待分割腹部圖像用CCV模型進行再一次分割。形狀項采用上一步中得到的形狀模型,初始輪廓采用上一次的分割結果。輪廓在平滑項、圖像項和形狀項的共同作用下演化,得到新的分割結果。當然,這樣的分割結果也不能作為最終的分割結果,因為形狀模型可能不夠準確
(4) 將新的分割結果(水平集函數)輸入下一個糾錯分類器,輸出得到新的形狀模型(分類概率映射)。新的形狀模型比上次的形狀模型更為準確。
(5) 重復(3)、(4) 步驟,直到分割結果收斂,也可以設置最大迭代次數或最大誤差。我們采用HCCV模型,逐步得到準確的形狀模型,從而逐步得到精確的最終分割。流程如圖 4所示。HCCV模型每次迭代中形狀項權重參數的調整同訓練過程。

4 實驗結果
實驗采用MICCAI 2007肝臟分割挑戰賽(http://www.sliver07.org)的訓練和測試數據。訓練集中有20幅增強型腹部3D-CT圖像,測試集中有10幅增強型×腹部3D-CT圖像。所有圖像橫向切片的大小為512×512;圖像切片間距不盡相同,范圍為0.5~5.0 mm。在訓練和測試階段,無論是CV模型,還是CCV模型,我們設置平滑項權重參數μ=1、圖像項權重參數λ=1。CCV模型中的形狀項權重參數α隨迭代的深入逐步增加,本文我們設置α(0)=0,α(1)=1/3,α(2)=1/2,α(3)=1,α(4)=2,α(5)=3(注意,當α=0時,CCV模型簡化為CV模型)。

(a)比較容易的例子;(b)比較難的例子。紅色代表自動分割結果,藍色代表手動分割結果
Figure5. Transversal view of segmentation results on two test images(a) a relatively easy case; (b) a relatively difficult case. The contour of the manual reference segmentation is in blue,while the contour of the automatic segmentation is in red
觀察圖 5(b),我們發現最終的自動分割結果與手動分割結果仍有一定差距。究其原因,我們認為可能有兩點:第一,我們的方法是一種基于機器學習的方法,需要大樣本訓練才能取得較好的泛化能力,實驗中訓練樣本偏少導致糾錯分類器適應能力不強;第二,我們觀察了MICCAI 2007肝臟分割挑戰賽的訓練數據,發現有部分訓練圖像的參考分割結果本身不夠精確,從而可能導致糾錯分類器也不夠精確。
為了進一步證明本文分割算法的有效性,我們采用下面四個overlap準則來衡量肝臟分割的準確性:precision(P),recall(R),relative overlap(RO),similarity index(SI)。
$\begin{align} & P=\frac{V\left( A\cap B \right)}{V\left( B \right)},R=\frac{V\left( A\cap B \right)}{V\left( A \right)},RO=\frac{V\left( A\cap B \right)}{V\left( A\cup B \right)}, \\ & SI=\frac{V\left( A\cap B \right)}{0.5\times \left( V\left( A \right)+V\left( B \right) \right)} \\ \end{align}$ |
其中:V(A)為手動分割結果中肝臟的體積;V(B)是采用本文算法進行分割得到的肝臟體積。表 1展示了本文算法不同階段的分割結果比較(針對測試集中的10幅CT圖像,結果求平均)。實驗結果表明,我們的方法在3D-CT肝臟圖像分割中取得了很好的效果。

5 結論
本文提出了一種新的活動輪廓算法HCAC,并將其應用于3D-CT肝臟分割。HCAC是一種全自動的肝臟分割方法,不需要手動干預。學習過程中,HCAC利用上下文特征將每次的錯誤輪廓向正確輪廓映射,學習構造糾錯分類器組。分割過程中,當前的分割結果輸入對應的糾錯分類器,輸出形狀模型。HCAC結合圖像信息和形狀模型(迭代更新)分割圖像,解決單一的基于圖像的活動輪廓過分割和泄漏問題。HCAC是一個迭代的算法,形狀模型可不斷更新,隨著迭代的深入,形狀模型逐步精確,最終我們可以取得準確的肝臟分割。本文采用MICCAI 2007肝臟分割挑戰賽的訓練和測試數據評估算法性能。實驗結果表明,在3D-CT肝臟圖像分割中,我們通過六次迭代,就可以取得較好的肝臟分割。