圖割論文閱讀筆記:Implementing GrabCut

Implementing GrabCut

這篇論文介紹了GrabCut的實現方法,並說了原GrabCut論文的一些弊端。其實也就是一種實現,而且這裏說的弊端我覺得有些不妥。

GrabCut Summary

1.用戶用矩形框創造一個初始Trimap,框裏邊被標記爲未知區域,框外邊被標記爲已知背景。
2.由此計算出一個初始圖像分割,其中所有未知像素暫時放置在前景類中,並且所有已知的背景像素被放置在背景類中。
3.GMMs由初始的前背景類求得。
4.前景類中的每個像素被分配給前景GMM中最可能的高斯分量。類似地,背景中的每個像素被分配給最可能的背景高斯分量。
5.當前GMMs被丟棄,並且從在先前集合中創建的像素集中學習新的GMMs。
6.構建圖並運行圖切割以找到像素的新的暫時前景和背景分類。
7.重複步驟4-6,直到分類收斂。

Data structures

在GrabCut中,每個像素需要有4種不同的信息。在我們的實現中,每種信息都存在一個數組中,每個數組都和原始圖像一樣大。原論文中出現的變量名在解釋後邊的括號裏:

  • 顏色:一個RGB值(z)
  • Trimap:背景Trimap、前景Trimap和未知Trimap的一種
  • Matte:在初始硬分割那一步中,不是背景Matte就是前景Matte
  • 分量標號:1到K之間,K是GMM中高斯分量數目(k)

除此之外,GrabCut也需要前景和背景GMMs中的K個高斯分量。對每要個高斯分量:
這裏寫圖片描述

Initialization

初始化步驟包括1-3。1.由矩形框初始化Trimap,這是給算法的初始信息。2.掩碼被初始化,背景爲Trimap背景,前景爲Trimap未知區域。Trimap和掩碼的區別有效的把正確的用戶輸入和GrabCut得出的分割分離開來,但這可能是不正確的。3.在初始化的掩碼中,分別給前景掩碼和背景掩碼有K個分量的GMM,也就是說必須創建2K個分量。我們先把兩個區域劃分爲K個像素集,然後由每個像素集的顏色初始化高斯分量。

Learning GMM components

隨着我們迭代的進行算法的學習部分(4-6),掩碼將會被改變。一些像素將從前景移到背景,反之亦然。
高斯聚類算法由兩個步驟(4和5)組成。 首先,將MatteForeground集中的每個像素分配給最匹配(像素顏色相似的概率最高)的前景GMM分量。 這通過簡單地評估以像素的顏色作爲輸入的高斯方程來找到。 類似地,我們將MatteBackground集中的像素分配給背景GMM的最可能的分量。 分量標籤記錄像素對應的分量。 注意,前景像素僅被分配給前景GMM的分量,反之亦然。 因此,Matte(MatteForeground或MatteBackground)和Component Index(1 - K)中的值對唯一地標識2K個組件之一。 然後,像素分類好後,丟棄當前高斯分量,並創建新的Matte/Component標籤對。

Performing Graph Cut

我們接下來創建一個圖,用於Graph Cut算法。 在Graph Cut中,有兩種類型的links。 N-links連接8鄰域中的像素。 這些鏈接描述了在相鄰像素之間放置分割邊界的代價。 我們希望在低梯度區域懲罰非常高而高梯度(邊緣)區域的懲罰低。 N-links權重在算法的整個執行期間是恆定的。 因此,它們可以被計算一次並重復使用。 T鏈接將每個像素連接到前景和背景節點。 這些描述了每個像素屬於前景或背景的概率。 在GrabCut中,這個概率包含在GMM中。 當我們遍歷步驟4-6時,GMM更新並且概率相應地改變。 這意味着在每次迭代期間必須更新T鏈路權重。
對於N鏈路,像素m和n之間合適的鏈路權重是:
這裏寫圖片描述
這是與原論文不一樣的地方之一,刪除了求和,因爲它隱含的包含在了圖割的計算當中。但我覺得原論文也是對的,因爲原論文只是針對總的能量來列的公式,而不是針對每一項來寫公式的。
每個像素有兩個T-links。 背景的T-links將像素連接到背景節點。 前景T-links將像素連接到前景節點。 這些鏈接的權重取決於trimap的狀態。 如果用戶已經指示特定像素肯定是前景或肯定的背景,則通過對T-link加權來反映這個事實,使得像素被強制進入適當的組。 對於未知像素,我們使用從GMM獲得的概率來設置權重。
這裏寫圖片描述
這裏的常數K取所有相鄰邊的權重最大的那個。

User Touchup

用戶通過對Trimap的改變來糾正分割,trimap改變影響了T-links,每次糾正,都會更新trimap並重新計算最小圖割。
用戶修正後,我們將trimap背景區域初始化掩碼背景,而其他地方設置爲掩碼前景。(trimap有三部分,而掩碼只有兩個值)

Color clustering details

這裏寫圖片描述
對於高斯分量,我們必須計算平均值,協方差矩陣的逆,協方差矩陣的行列式和加權值π。
平均值和協方差矩陣由像素顏色計算。 由協方差矩陣計算行列式及協方差矩陣的逆。
權重π就是通過步驟4分配給該高斯分量的前景(或背景)像素的比重。

雖然這篇論文介紹了方法,但我也沒找到代碼……

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