多值連通地區標記演算法

來源:互聯網
上載者:User

 二值映像的連通地區標記過程:從僅由”1”像素(前景點)和”0”像素(背景點)組成的一幅點陣映像中,將相互鄰接的”1”值像素組合成地區,並用邊界資訊來描述每個連通地區。

傳統的連通地區標記方法通常要對二值映像執行兩次掃描。第一次掃描通過逐行逐列掃描像素。判斷像素之間的相鄰關係,對屬於同一連通地區的像素賦予相同的連通標號,實現連通標識。這種逐行逐列的次序掃描的結果,通常會產生同一像素點被重複標記的現象,同一連通地區的不同子領域被賦予了不同的標記號。因此,需要執行第二次掃描來消除重複的標記,合并屬於同一連通地區但是具有不同標記號的子領域。

傳統方法的效率比較低,尤其是在重複性標記發生率高的情況下。本文方法受“並查集”(Union-Find Set)思想的啟發,設計了一種高效的演算法,該演算法只需要一次掃描便能完成二值映像的連通地區標記過程。

等價類別和並查集

UnionFind(合并尋找)集可以實現等價類別描述。假設一組元素,其中元素分為等價類別。等價類別滿足以下性質:

(1)每一個元素只能屬於一個等價類別;

(2)等價類別的同屬關係具有傳遞性。

對於第二個性質,設頂點vi與vk屬於同一等價類別,頂點vk與vr屬於同一等價類別,則頂點vi和vk與vr都屬於同一等價類別。

這裡我們關心等價類別的合并(Union)和任意元素所屬等價類別名稱的返回(Find)這兩個操作。定義等價類別的名稱為類中某個特定的元素,由於每個元素只可能屬於一個等價類別,所以每個等價類別的名稱一定是唯一的,我們稱之為這個等價類別的根(Root)。

除等價類別根以外的每個元素都有一個父節點元素(表示為Parent),同一等價類別中元素(除根外)的根節點相同,根的父節點標註為-1。合并兩個等價類別時,可以分別指定兩個等價類別中任意元素與,首先返回這兩個等價類別的根, ,然後重設其中一個根節點的父節點,如Parent,將對應的等價類別中元素合并至對應的等價類別中。

3-7所示為以和為根節點的兩個等價類別,分別指定等價類別中和,合并這兩個等價類別Union()。(a)所示。首先分別尋找(Find)到和的根節點和,並對集合的結構做調整,從而降低樹結構的深度,提高尋找節點的效率,(b)所示;最後將的根節點重設為,完成兩個集合的合并,(c)所示。

         

圖中x表示節點為,其父節點y

連通地區標記演算法描述

 

    本文中藉助並查集設計二值圖的連通地區標記演算法,其中, 。初始化階段,將二值圖每個像素點視為單獨的連通地區,並分別對應一個等價類別,形成等價類別,。例如,位置對應等價類別,該等價類別對應連通地區的邊界資訊為:
    (top, down, left, right)=(y, y, x, x).

經過一次掃描,實現二值圖中連通地區標記的演算法流程如下:

   
    Step1 初始設定變數 i=1;

    Step2 尋找二值圖中第一個位於背景中的像素位置,對應等價類別記為背景等價類別;

    Step3 遍曆第個位置;

    Step4 若位於背景中,則將其對應等價類別與背景等價類別歸併,跳轉至Step9;否則,繼續Step5;

    Step5 若位於前景中,則檢測其左上、正上、右上和正左方四個位置,分別對應等價類別的標號:,對應等價類別,選擇其中位於前景中的位置對應的等價類別,組成集合:

    

    Step6 若為空白,則跳至Step9;否則繼續Step7;

    Step7 將中等價類別歸併為一個等價類別,對應連通地區的邊界資訊:

    Step8 將對應等價類別與歸併,利用與Step7中相同的方法更新歸併後的等價類別對應的連通地區的邊界資訊;

    Step9 i=i+1,若i<=k,則跳轉至Step3,否則演算法結束。



      除了背景等價類別外,最終留下的等價類別對應二值圖中的連通地區。演算法流程中Step5中對當前位置的四個鄰點對應的連通地區進行合并。例如(a, b),當前位置的左上點和正左點同屬於等價類別,對應地區邊界資訊為;正上點屬於背景等價類別;右上點屬於等價類別,對應邊界資訊為。首先由位於前景中的等價類別組成集合,歸併中等價類別和等價類別,形成等價類別,然後歸併當前位置對應的等價類別與,並等價類別對應邊界地區資訊更新。

                                       

從流程圖中可以發現,演算法通過一次掃描便完成了連通地區標記過程。在合并像素點與其相鄰地區時該演算法只關心四個相鄰點的所在的地區,這極大地提高了演算法執行效率,演算法複雜度為線性。

PS:1、原帖地址:http://www.cnblogs.com/luweiseu/archive/2012/07/14/2591477.html

 
 2、matlab代碼請見我的下一篇文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.