基於變換不變低秩紋理(TILT)的圖像校正(附代碼)

原理簡介

事實上,對於未加旋轉的圖像,由於圖像的對稱性與自相似性,我們可以將其看作是一個帶噪聲的低秩矩陣。當圖像由端正發生旋轉時,圖像的對稱性和規律性就會被破壞,也就是說各行像素間的線性相關性被破壞,因此矩陣的秩就會增加。

 低秩紋理映射算法(TransformInvariant Low-rank Textures,TILT)是一種用低秩性與噪聲的稀疏性進行低秩紋理恢復的算法。它的思想是通過幾何變換把D所代表的圖像區域校正成正則的區域,如具有橫平豎直、對稱特性,這些特性可以通過低秩性來進行刻畫。通過計算圖像透視變換各種角度之後的矩陣對應的秩,找到矩陣的秩最小的情況,利用透視變換的角度對原圖像進行處理,即可將圖片變爲正則。當圖像由端正發生旋轉時,規律性被破壞矩陣的秩相應的就會增加。本文提出了變化不變紋理,用低秩性與噪聲的稀疏性進行低秩恢復,通過幾何變換把不規則的區域校正成端正的,如具有橫平豎直、對稱等特性,進而通過低秩來刻畫這些特性。如下面的例子:

紅色窗口代表着原始的輸入,綠色窗口則是通過我們模型校正過的紋理。可以這樣理解,在綠色窗口中的圖像一般都變成對稱的了,因此圖像具有低秩性。可以發現,校正過圖像的秩要明顯的低一些了。

低秩紋理的定義

現在開始進入核心部分。在這篇文章中,我們將二維紋理表示爲一個定義在實數二維空間上的一個函數I0(x,y),我們稱I0爲低秩紋理當且僅當一維函數張成一個有限維的線性空間,也就是有下式成立

如果r是一個有限數,我們就稱I0爲秩爲r的紋理。容易發現,如果函數I0(x,y)的秩爲1,那麼函數一定是g(x).h(y)的形式。(這裏我不知道該怎麼解釋,原文是這樣說的,但是下面緊跟着給出的式子可以從分塊矩陣相乘的角度進行類似理解)推廣一下,一個秩爲r的函數I0(x,y)可以顯式地分解爲r個秩爲1函數的組合,即

下面幾幅圖像具有理想的低秩紋理

上面可以看出,一個水平或者豎直的邊(e)可以看成秩爲1的紋理,一個角(f)可以看成秩爲2的紋理。可以這樣說,低秩紋理整合了很多傳統的局部特徵(邊、角)。通過上述定義可以發現,規則對稱的樣式(pattern)更容易形成低秩紋理。所以,低秩紋理這一概念包含了一更爲寬泛的“特徵”或者區域,而不僅僅侷限於邊角之類的。然而,需要指出的是,現實場景中並非所有的對稱紋理或形狀具有低秩性,我們僅考慮那些產生低秩矩陣的對稱紋理。

給定一低秩紋理(對應一函數),顯然將函數擴大多少倍或者對座標進行線性變換其秩並不會發生改變,也就是說按照我們的定義,通過變換得到的新的低秩紋理(對應一個新的函數)的與最初的低秩紋理具有相同的秩。在現實應用中,觀測到的往往是變換得到的I(x,y)而希望復原原始的I0(x,y)。在本文中,無特別聲明,我們認爲可通過scale和transform得到彼此的兩個低秩紋理等價,即成立,這個等價羣衆的元素具有如下形式

公式3可理解爲人工地將(x,y)拓展爲(x,y,1),1有單位截距的意味。

現實中,二維紋理圖像函數並非連續的,我們通常都是離散採樣將連續函數I0(x,y)表示爲一個m*n的矩陣。對低秩紋理,我們總是假設採樣窗口的大小顯著大於紋理固有的秩,即成立。

容易得知,只要採樣率不致使由公式(2)定義的函數失真,那麼得到的矩陣的秩同連續函數的秩一樣。方便起見,我們將採樣得到的矩陣同樣記作I0(x,y),相對其自身的維度,i0(x,y)有較低的秩。

通過迭代凸優化算法求解模型

通過適當的鬆弛模型可轉化爲

注意到儘管上面的目標函數是凸的,但是其約束是非線性的,因此整個額外難題依然是非凸的。解決該問題的一個通用的技術是在當前估計和迭代中線性化其約束條件,其線性版本爲

至此變爲線性問題且易於求解。

不斷更新

用低秩紋理這個性質來校正圖像,直接從圖像中的不變特徵出發,在原始的輸入圖像上選取變換區域進行處理,並且在該算法的模型構建過程中,加入對噪聲圖像的估計和約束,使得模型對圖像中少量的噪聲具有魯棒性,其校正效果也比傳統的方法有很大的改善,但在出現如下兩種情況時,該方法的校正結果依然是誤差較大或者完全失敗。一個是平面問題,當輸入圖像的變換區域不在同一平面時,如側面與側面相接、側面和地面相接,則TILT校正失敗。如下圖

使用方式

選擇一張圖片,點擊選擇左上角和右下角

對圖片進行處理

計算透視變換後各種情況的矩陣的秩:

找出矩陣的秩最小的旋轉角度

得到最後結果:

通過TILT可以做一些場景下的圖像校正。如車牌校正、身份證照片校正、交通標誌牌校正、人臉校正等。從而提高識別的準確率。

作者提供了代碼可以下載,鏈接如下:http://perception.csl.illinois.edu/matrix-rank/tilt.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章