基於曲率的圖像處理

基於幾何流的傳統圖像處理方法雖然在理論上比較完善,但這些方法都忽略了一個重要的客觀事實,即所要處理的圖像並不是可導(光滑)的。針對這一問題,高斯曲率濾波提出一種新的濾波算法來優化圖像的曲率。曲率濾波不要求圖像可導,因此可以保持圖像的邊緣。此外,曲率濾波具有保持分段可展曲面的良好特性,不會產生artifacts。最後,曲率濾波的處理速度是最新的幾何流算法的一千多倍,可以滿足絕大多數的應用需求。


首先,這篇文章基於早前寫的英文短文《Curvature Based Image Processing》但是也包含了一些最新的想法。謹以此文與圖像處理同行共勉。正式學術論文:

曲率濾波期刊論文鏈接

(https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7835193)

(曲率濾波算法比傳統的幾何流算法快1000到10000倍)


代碼:曲率濾波代碼

(https://github.com/YuanhaoGong/CurvatureFilter)(所有實驗均可重複)


給定一個圖像

優化 | 基於曲率的圖像處理

,我們可以把它當作一個三維曲面

優化 | 基於曲率的圖像處理

。這樣,我們就可以利用經典的微分幾何工具來處理該三維曲面。假設我們處理後的曲面是

優化 | 基於曲率的圖像處理

,那麼我們可以從中提取出處理後的圖像

優化 | 基於曲率的圖像處理

,也就是我們處理後的圖像。整個過程如標題圖片所示。

優化 | 基於曲率的圖像處理

基於曲面的圖像處理流程


以這種方式進行圖像處理的論文非常多,基本的思路都是把圖像嵌入三維空間、計算各種曲率(高斯曲率、平均曲率、主曲率等等),然後根據曲率的大小進行各向異性擴散。而且這種擴散方程在數學上是非常完善的,也就是經典的幾何流,如下圖所示。這麼做看起來順理成章,理論基礎也非常紮實,但其實是忽略了一個非常重要的問題:

我們的數字圖像通常是離散的

優化 | 基於曲率的圖像處理

傳統的幾何流算法


很多讀者會問:離散的圖像有什麼問題?我們還是可以照樣計算它的梯度、曲率、方向導數、張量?只不過計算公式被離散化罷了。事實上,真的是公式離散化這麼簡單嗎?離散的數字圖像的本質問題在於它的不光滑性。數學上來說,

我們的原始圖像可能屬於

優化 | 基於曲率的圖像處理

而不屬於

優化 | 基於曲率的圖像處理

。也就是說它本身就是不可導的。對於本身不可導的函數求二階導數(曲率)的意義是什麼呢?


曲率濾波博士論文試圖利用圖像的離散特性來隱式地優化曲率,即減小曲率而不需要計算曲率。這樣就不要求最終的結果二次可導,從而對圖像邊緣進行更好的保護。一方面,它利用圖像的離散特性; 另一方面,它利用連續的微分幾何導出一些有用的結論來保證方法的正確性。如何把兩者完美地結合起來就非常有挑戰性。


接下來就讓我們以高斯曲率濾波為例來說明如何利用數據的離散性和微分幾何的連續性。一般來說,我們可以把曲面分為可展曲面和不可展曲面兩類,如下圖所示。

優化 | 基於曲率的圖像處理

不可展曲面與可展曲面


可展曲面可以沿某個基線剪開,然後沒有任何拉伸或者扭曲就可以完全平攤在一個平面上(可以展開)。這樣的曲面有良好的性質,而且在數學中已經被研究得很透徹。這樣的曲面上每一點的高斯曲率為零。我們可以利用這一點來構造麴率濾波,以達到優化曲率的目的。


在連續的微分幾何理論中,我們知道高斯曲率處處為零的曲面是可展曲面,而可展曲面只有三類:柱面、錐面和切向可展面。如下圖所示,我們可以證明一個定理:

優化 | 基於曲率的圖像處理

高斯曲率濾波的數學理論基礎


該定理說明:對於任何一個可展曲面上的點(如上圖紅色球所示),它都位於它鄰域內某一個點(如上圖藍色球所示)的切面上(如上圖綠色三角形所示)。那麼,我們怎麼樣利用這個定理來減小高斯曲率呢?


這就需要利用圖像的離散性來構造切面(上圖所示的綠色三角形)。在3X3的小窗口內,我們可以枚舉所有可能的切面。如下圖所示,三個柱面和紅色球表示圖像的灰度值,綠色三角形表示來自天藍色三角柱的切面。顯然,我們只需要增加或者減小紅色球的高度就可以讓它位於綠色三角形(切面)上。

優化 | 基於曲率的圖像處理

離散圖像的切面構造


利用數據的離散性,我們可以遍歷所有可能的切面(部分切面見下圖),然後找到到當前灰度值最小的變化來進行更新,這就完成了一次高斯曲率濾波。我們可以多次重複這一過程,直到收斂。收斂性證明在曲率濾波博士論文第六章第一節。

優化 | 基於曲率的圖像處理

3X3鄰域內可能的幾種切面示意圖


曲率濾波簡單到什麼程度呢?下圖是高斯曲率濾波的算法偽代碼(計算太簡單了,而且優化效果比state of the art還要快三個數量級,也就是1000倍,推導過程見論文

優化 | 基於曲率的圖像處理

高斯曲率濾波的最小投影算法


以上過程充分利用了圖像的離散特徵,也利用了微分幾何的連續理論,從而避免了計算曲率和複雜的幾何流(數值穩定性,步長,時間離散化等等問題)。更重要的是,這種方式構造的濾波器非常簡單,計算速度非常快,比傳統的幾何流快1000到10000倍(優化效果差不多的情況下)。下圖是一個例子。左邊是原圖,中間是經典的高斯曲率幾何流,最右邊是曲率濾波的結果。視覺上,三者沒有太大的差別。但是它們對應的高斯曲率能量分別為246.98, 115.4, 97.15 。傳統幾何流和曲率濾波的計算時間分別為4246ms 和 18ms。曲率濾波的高效性可見一斑。

優化 | 基於曲率的圖像處理

原圖(左邊),傳統的幾何流算法(中間),高斯曲率濾波算法(右邊)


簡單、高效、通用,是曲率濾波的三個特徵。曲率濾波可以單獨存在,也可以跟數據擬合項(成像模型)一起工作。而且它可以不要求計算成像模型的梯度。這使得它非常通用,可以求解任意成像模型(black box)。這是全局算法(global method)做不到的。


當單獨使用曲率濾波時,高斯曲率濾波跟其他常見的圖像平滑算法有何不同?下表把它和其他經典方法做了簡單的對比:

優化 | 基於曲率的圖像處理

高斯曲率濾波與幾種濾波算法的對比


顯然,如果輸入圖像是一個可展曲面,高斯曲率濾波並不會對圖像做任何改動。換句話說,高斯曲率濾波保持可展曲面(類似的,平均曲率濾波保持最小曲面)。由於假設的不同和計算方式的不同,這些方法平滑的結果是有些區別的:

優化 | 基於曲率的圖像處理

優化 | 基於曲率的圖像處理

高斯曲率濾波與保邊濾波算法的對比


簡單來說,曲率濾波在平滑和細節保持方面平衡得比較好。這是因為高斯曲率濾波保持分段可展曲面,而其他的只是保持分段線性或者分段常值曲面。後兩者是前者的子集,也就意味著曲率

濾波的結果產生最少的人工雕琢痕跡(artifacts)


我們為什麼要在曲率域做圖像處理而不是在梯度域?梯度域不是直接導為Poisson方程嗎?有很多高效的解法可以用,而且有很多經典的論文作為基礎。我自己也做過梯度域的圖像處理,比如 基於梯度分佈的圖像增強,基於梯度分佈的光學顯微鏡圖像處理。梯度雖然是很好的工具,可以很好地保持sharp edges,但是在實際應用中也有侷限性。比如,可不可積就是一個大問題。因為它有多個分量,各個分量之間可能不一致。而曲率是一個標量場,不存在這樣的問題。這就是為什麼曲率域比梯度域更為理想的原因之一。另外一個原因是曲率是曲面本身的度量,而梯度與座標系有關。當然,兩者也不是完全沒有關係。平均曲率就是歸一化梯度方向變化的度量。


在曲率濾波提出之前,傳統的基於曲率的幾何流不能很好地保持sharp edges是因為假設了曲面二次光滑

優化 | 基於曲率的圖像處理

。而曲率濾波只要求

優化 | 基於曲率的圖像處理

,從而能很好地保持梯度(保護邊緣,跟梯度等效)。曲率濾波的梯度保持本質上來自於數據的離散性,而光滑性來自於微分幾何。這種邊緣保持特性可以從上圖(與多種濾波算法比較)和下圖(除噪實驗)中看出。下圖最左邊為原始圖像,中間為噪聲圖像,右邊為高斯曲率濾波後結果。顯然,濾波結果在邊緣處並不是二次光滑的,而肩膀處的光滑曲面也得到了恢復和保持,沒有產生像TV那樣的階梯效應。

優化 | 基於曲率的圖像處理

高斯曲率濾波可以保持某些彎曲的曲面


曲率濾波博士論文詳細解釋了為什麼曲率比梯度在理論和實踐中更有優勢,對很多已知的現象做了理論上的解釋和闡述,從本質上開闢了一個優化曲率的新途徑(利用數據的離散性和微分幾何的連續性)。這必將促進平均曲率在各種圖像處理問題當中的應用。


最後,希望基於曲率的圖像處理能夠繁榮昌盛!

再貼一次代碼鏈接:曲率濾波代碼

(https://github.com/YuanhaoGong/CurvatureFilter)


希望喜歡的朋友能在github上賞賜一顆星星!

期刊論文鏈接在 這裡

(http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7835193)


分享到:


相關文章: