天天看點

圖像分區算法

在圖像處理當中經常會遇到,把相近顔色的區域提取出來的問題

如果是互動操作,指定圖像上的一個點,找到該點對應的顔色區域的方法已經很成熟了——種子填充或者是掃描線填充等算法,這裡就不贅述了。

問題是,如何對于給定的一個圖像,自動找到所有的獨立的顔色區域呢,為了簡化問題,可以假定這個圖像是黑白二值的,如何找到這個圖像上所有的黑色的連通區域,并且給每個區域一個獨立的區号呢

我們假定連通關系是8連通

可以這樣來解決這個問題

為了形象的說明問題,我們假定圖像的掃描從下向上,從左向右

在掃描第一行的時候,為每個獨立的連通的黑色區域(線段)賦予一個不同的區域數值,這個隻是一個掃描填充

在以後掃描每一行的時候,對于每個黑色點,檢查它所在位置的前一行上的相鄰點所歸屬的區域有幾個,『注意:雖然有3個相鄰點(8連通)但是最多歸屬兩個黑色區域』,如果隻有一個區域,那麼把目前點也歸屬其中;如果有兩個區域,那麼把目前點歸屬第一個區域,并且從這裡開始回填第二個區域的所有的點;如果掃描到的黑點的上一行沒有黑區域和它連通,還要檢測它左側點是否是黑點,是就歸屬其中;否這就是一個全新區域的開始。

直到所有的圖像掃描處理完畢,分區也同步完成

在掃描到一個點,它同時歸屬兩個獨立的區域的時候是處理的關鍵

好比一個h形狀的區域,從下向上掃描的時候,剛開始,h的兩個腿是不同的區域,這個時候就好比兩個管道,左邊用紅色墨水灌入,右邊用清水灌入,當到達h的中間部位的時候,兩個管道相通了,那麼左側的紅色墨水迅速的把右側的清水區域染成了紅色。

這種區域重新歸屬的現象發生的次數和區域的形狀有關系

繼續閱讀