映像幾何特性分析
一、物體邊界計算和記數
(一)鄰接和連通
鄰接和連通是映像的基本幾何特性之一,主要研究象素或由象素構成的目標物之間的關係.對數位影像來講首先要搞清楚映像陣列的結構形式.下面均以方格陣為基礎來討論分析.
1.鄰點
對映像中一點 ,稱它的上下左右四點為4—鄰點定義的鄰點.若再加上兩個對角線的四個端點(左上、右上、左下、右下)則稱這八個點為8—鄰點定義的臨點。見圖 8-6-1。
圖 8-6-1 臨點的概念
2.鄰接
設A和B為映像的兩個子集,若A中至少有一點,其臨點在B內,稱A和B鄰接。顯然有和8—鄰點鄰接兩個概念。兩個子集是8—鄰點鄰接不一定是4—鄰點鄰接。 8-6-2所示。
圖 8-6-2 8—鄰點鄰接而4—鄰點不鄰接樣本
3.路徑(道路)
一條從點 到點 的路徑是滿足下列關係的點的序列。 其中彼此靠近的兩點鄰接。 為路徑的長度。同樣存在4-鄰點路徑和8-鄰點路徑。 8-6-3
圖 8-6-3 路徑樣本
4.連通
若點 和 為映像子集 中的點,且存在一條從 到 的完全由 中點構成的路徑,則稱 和 是連通的。對於 中的任一點,所有連通到它的 中點的集合稱為 中的連通分量。若 只有一個連通分量,稱 是連通的。顯然也有4-鄰點連通和8-鄰點連通的區別。 8-6-4所示。
圖 8-6-4 連通樣本
5.背景和孔
設 為 的補集,凡是連通到映像邊緣的 中所有點都屬於 的同一連通分量,稱這個分量為 的背景B。而 中所有其他分量稱為 的孔。若 中沒有孔,稱此 為單連通。要注意,在 和 中採用不同的鄰點概念來定義其連通性可以避免一些不合理的現象。如 這樣一個圖案,對角兩個1是連通的,而另一個對角兩個0就不能連通,反之亦然。但若對1和0即 和 都採用8-鄰點連通,那麼它們兩者都連通,這就產生了矛盾。因此,必須對 和 用不同的鄰點概念來分析研究其連通特性。
6.包圍
設 和 是映像中兩個不相交的子集,若從 中的任一點到達映像邊緣的任一條路徑必須與 相遇,則稱 包圍 ,或稱 在 內。
(二)邊界和邊界的計算
的邊界 是指在 中有鄰點的 中點的集合。 中去掉 的其餘部分點的集合稱其為 的內部,即為差集 。邊界研究同樣有4-鄰點和8-鄰點兩種定義方法。
1.邊界的並行計算
(1)設有一幅映像見8-6-5(a),其中1的集合代表物體 。對映像進香邏輯非運算獲得圖8-6-5(b)。
(2)將圖 8-6-5(b)在上下左右四個方向上移動一個點的位置,獲得圖 8-6-5(c)中四個映像。(對8-鄰點定義,還要在四個角方向上移動四次,得出8個映像)。
(3)將圖 8-6-5(c)中四個映像進行邏輯或運算得到圖8-6-5(d)。
(4)將圖 8-6-5(d)和圖 8-6-5(a)進行邏輯與運算即可以獲得物體邊界 。見圖 8-6-5(e)。
圖 8-6-5 邊界並行計算樣本
2.邊界的跟蹤演算法
這裡要介紹的邊界跟蹤演算法比映像分割中用掃描方式進行界線跟蹤方法要簡單得多。因為這兒主要是對二值映像,擷取邊界的目的是在需要時用簡單的鏈碼形式表示,以便於實際應用。
設 為物體 的一個連通分量, 為 的一個連通分量, 和 的邊界即為鄰接到 的 中點的集合。現在約定對 用8-鄰點連通, 用4-鄰點連通。給定一對初始點 , 。 在 中, 在 中。邊界跟蹤演算法(簡稱為BF演算法)步驟如下:
(1)將 和 的值分別變為3和2。
(2)將 點作為 點的第一個鄰點 ,按順時針方向搜尋所有鄰點 , ,………, 。一但遇到鄰點值為1,3和4即停止。並記此點為 。
①在搜尋過程中,若 , ,對於 時, 時變3為4,變2為0並結束。
②否則,(設 中點值均為1)取 作為新的 ,且變 值為4。取 作為新的 ,重複第(2)步。
(3)當BF演算法結束時,圖中所有值為4的點的集合即為 和 的邊界。
應用BF演算法跟蹤檢測映像中給定子集的全部界線點的步驟如下:
(1)應用電視光柵方式掃描映像,若發現有1或2出現在緊靠0的右邊,或者是發現1或2出現在一行的最左端時停止,則此點一定是尚未跟蹤過的 的邊界點(譬如說 邊界)假定為 點。
(2)應用BF演算法跟蹤這個邊界 ,並且按下列約定給它們標誌。
①若它們有 的點作為左鄰點,則變這些點為3(原來為1或2)
②若它們沒有 的點作為左鄰點,則變這些點位(原來為1)
③若它們原來標誌是3的不變。
(3)當BF演算法完成後,回到 點繼續向下掃,並再用BF演算法。直到掃描完成後,所有的邊界均被標誌以2或3。
有以下幾點需要說明:
首先,若 是單連通,只用一個標誌3就可以了。但若 是複連通(其中有孔)只用一個標誌,會使其中的孔丟失。 8-6-6所示(未標值處為0)
圖 8-6-6 S為複連通的邊界跟蹤演算法
若只使用一個標誌3將得到圖 8-6-6(b)的結果,作為孔 的邊界點(圖 8-6-6(b)中 點)將絕不可能被發現。因為按跟蹤檢測步驟①規定,緊靠 的左邊必須有0才能被檢測到。但是若用兩種標誌時,在跟蹤背景邊界後就會獲得圖 8-6-6(c)的結果。繼續掃描到帶*號的2點時,以為它的左邊是0,即可以停止掃描而進行BF演算法,從而找到這個孔 的邊界點 (孔H僅有這一點在H邊界上,而不在背景邊界上)。
其次,將跟蹤檢測演算法略加改進後,可以使用於未被分割的灰階映像。只要知道映像 中哪些點是屬於感興趣的目標 ,哪些不屬於即可。
再次,如果應用BF演算法來跟蹤檢測弧和曲線,要根據情況做一些改進,過分複雜的改進,要考慮到實際應用的可能性和有效性。
(三)目標物體的標定和計數
在實際應用中,往往需要將映像子集 的每一個分量作為單獨目標物來處理,因此除了給它們以不同的標誌外,還要能夠給予正確的計數,達到這目標的基本方法就是搜尋擴充法和掃描方法。
1.搜尋擴充法
設映像經分割後 的每一個分量中點全都是1。進行系統的掃描搜尋,若碰到1,將1改變為尚未使用過的標誌符號如 。進而將 的鄰點中為1的點全部改變成標誌 ,如此擴充到整個分量。這樣這個分量全部以 標誌。依此類推使全圖搜尋擴充完畢,此時 中不同分量將給予不同的標誌。顯然這樣做是很費時間的。
2.掃描法
應用掃描方式給映像中目標物體標誌有很多方法,現介紹一種簡單方法。
設映像經分割後 的每一個分量中的點全為1。首先掃描映像,若在某一行遇有一段或不相同的若干段1,則先給予不同的標誌 , ,……。接著掃描一行,在遇到1時,若此1和上行相鄰段相同標誌如 。若此1和上行幾段相鄰,則將它們都改用統一標誌。若與上一行各段均不相鄰,給予未使用的標誌如 ,如此類推掃完全圖。
3.計數
這裡僅介紹一種最簡單的計數方法——跟蹤法。就是在開始出1的段的那一行,記下出現不相鄰的1的段數。以下逐行計算,凡是遇到有1的段,若和前面一行1的段不相鄰,則總數加1,若和前面一行 段相鄰,則總數減去 。掃描完成後所的的總數就是 的分量個數。當然這個分量的個數包括單連通和複連通(即有孔的連通分量)。
二、大小和距離的計算
(一)面積計算
定義數位影像中某一個子集 的面積就是 中的點數(象素數)。可見映像子集 的面積計算很簡單.例像中有 個 分量, , ,……, ,……, 。
設定 個計數器分別和 , ,……, 對應,掃描遇到1時,判定屬於哪個分量,即在哪個計數器上加1。掃描結束, 個計數器內容即為對應分量面積。映像面積計算方法也很多,可以根據映像特點、應用要求,以及你所擁有的電腦能力來自行制定。例如對於已劃分好連通分量的映像,可以採用一次掃描來完成起面積計算。其方法步驟如下:
(1)在掃描到有1的段數第一行時,將各段中1的個數存入對應的計數器,並且建立對應的指標(如地址)。
(2)在以下各行掃描過程中,遇到含1的段 ,進行下列判決和操作。
①若 段和前一行中各個1的段都不連通,建立一個新的計數器,並把 的長度(即含1個數)計入此計數器。
②若 段和前一行中 段相連通,則將 的長度計入 的計數器,同時將指標由 移到 。
③若 段和前一行若干段 , ,……, 相連通。則將 , ,……, 的計數器中數和 的長度一起加到 計數器中,並且把指標由 移到 。
(3)掃描完全圖計數器中存數即對應的分量面積
映像面積計算的精度直接依賴於數字化過程中取樣間隔的大小,顯然,取樣間隔越小,計算出來的數字面積就越接近於真實面積。另外面積計算與雜訊大小也有關係。為了減少雜訊影響,常通過設定面積門限來解決,在面積門限以下的少數幾個1,可以不計入連通分量面積。
(二)周長的計算
數位影像子集 的周長定義有不同的概念,因此計算的方法也就不同,通常有以下三種:
(1)周長定義一:把 的點和 的點分割開來的“裂縫”長度之總和,也就是 , 點對數。( , 相鄰,且 在 中, 在 中)
(2)周長的定義二:BF邊界演算法的步數。
(3)周長定義三: 的邊界 的面積,即 的點數。
數位影像子集 周長計算精度,受取樣間隔大小和雜訊影響更嚴重,常常隨取樣間隔減少呈指數增加。實際應用中要特別注意。
例8-5 計算下列子集 的周長(圖 8-6-7)
圖 8-6-7 周長計算樣本
根據不同的周長定義,其計算結果見表8-6-1。
| |
a |
b |
c |
| 定義一周長 |
8 |
10 |
16 |
| 定義二周長 |
4 |
6 |
6 |
| 定義三周長 |
4 |
4 |
4 |
表 8-6-1 周長樣本計算結果
(三)距離的定義和計算方法
1.距離的定義
設 為對每一個點對均為非負數的函數。若對所有點對 、 、 滿足下列三個條件的函數形式均可作為距離定義。
①若且唯若 時
②
③
常用的有三種距離定義:
圖 8-6-8 三種距離定義
(1)歐幾裡德距離,以 表示。見圖 8-6-8(a)
對一幅 數位影像,其對角距離 。
(2)市區街道距離,以 表示,見圖 8-6-8(b).
對一幅 數位影像,其對角距離 .因為對 點距離為1點,就是4-鄰點定義域,所以用 表示。
(3)棋盤距離,以 表示,見圖 8-6-8(c)
對一幅 數位影像,其對角距離 ,同樣對 點距離為1點就是8-鄰點定義域,所以用 表示。
2.距離計算
距離演算法有以下幾種:
(1)距離的並行演算法簡稱PD演算法
(2)距離的序貫演算法
(四)對稱中軸(骨架)和收縮擴充以及減弱(細化)運算
1.對稱中軸
從一般概念上講,“對稱中軸”是指物體 上到 的距離為局部最大的點的集合。也可以簡稱為“中軸”或“對稱軸”。它好象是物體的中心骨架,所以常常直接稱其為“骨架”。如果給定物體的對稱中軸和它上面各點到 的距離。那麼就可以重建這個物體。因此也可以用它來描述物體。但常沒有用邊界描述物體節省位元數多,而且對雜訊敏感,還會受到連通性的影響。因此只在一些特殊場合下應用。
令 為物體 的對稱中軸,則 是 中到 的距離為局部最大的點集。即若且唯若滿足下式:
式中 為 中的點, 為 的鄰點。
從這個式子可見, 的對稱中軸 上任一點到 的距離大於這個點所有鄰點到 的距離。
2.擴充和收縮
對於任意映像子集 ,其距離為 範圍內的點集,可以通過將 向 擴充而獲得。 其辦法是:若 中點的鄰點有0也有1,則將這些鄰點中的0全部改成1,並且重複 次就可獲得。其結果用 表示。同樣,不在到 的距離為 之內的點集,可由 收縮而獲得。其辦法是:若 上的點的鄰點中有0也有1,則將這些鄰點中的1全部改成0,並且重複 次就可以獲得。其結果記為 。在收縮擴充運算過程中要注意以下幾點:
(1)收縮擴充過程中“鄰點”和“距離”定義要保持一致,即對 用4-鄰點定義,而對 用8-鄰點定義。
(2)收縮 相當於擴充 。擴充 相當於收縮 。而且收縮和擴充可以組合運算,如 表示對 先擴充 次再收縮 次的結果。但 , 和 三者並不一定相同。 8-6-13所示。此處採用 和8-鄰點定義。
圖 8-6-9 收縮和擴充運算
一般情況下式成立
對某一個常數 ,下式成立
(3)收縮和擴充運算在並行電腦中能夠有效地進行操作運行。收縮和擴充運算在許多映像技術中都可以運用。例如通過收縮擴充可以獲得映像子集 的對稱中軸(骨架)。這種方法好象在一塊乾草地四周同時放火,火不斷地向中心方向燃燒,最後熄火線即為對稱中軸,因此也有人稱其為“火燒草地”法。也可以用來檢測映像中某些部分是孤立的,還是成團聚集的,因為這些部分經過擴充幾次,再收縮幾次,孤立點將保持不變,而成團聚集的部分將匯成塊。還可以用來填充邊界的不連續和不完整地區。在某些情況下,先收縮在擴充還可以去除雜訊。。應該說明的是收縮對分析映像的拓撲性質很有用處,如將連通分量收縮一點,對於計數運算就很方便了。所謂映像的拓撲性質概念就是將映像劃在橡皮上,當橡皮變形時而映像中的某些不變的幾何性質。如相鄰、連通、交叉、包圍等等。都是映像的拓撲性質。而角度、面積、周長等就不是映像的拓撲性質了。
3.減薄(細化)
收縮可以使物體縮小,但不能保持其形狀特性,因此在下面形狀分析中採用細化演算法,可以使物體仍保持其曲線形狀。細化演算法和收縮演算法基本相同。只是在運算過程中只消去那些至少有兩個1鄰接的象素。因此物體的端點不會被消除,從而保留了曲線形狀。細化運算可以分為兩步,即先左右後上下。當然先上下後左右也是可以的。
三、物體形狀分析
用映像子集 的形狀來描述物體,可以更接近人們的視覺習慣。但形狀本身的概念是很複雜的。它不是指子集 的某一個單一性質,而是一族性質的綜合,不但是多維的而且與人們的視覺心理有關。因此目前還不能作出確切的分析研究,只能對其某些方面加以分析,作為一些場合下的初級應用。
(一)曲線分析
1.一些基本概念
曲線和弧,若一個映像子集 ,它的大多數點只有兩個鄰點在 內,則稱 是弧狀或曲線狀。這些點稱為曲線上普通點 , 8-6-10中 。
圖 8-6-10 一些有關曲線概念
曲線的端點: 上只有一個鄰點在 內的點,稱其為端點, 8-6-10中 。
曲線的支點:具有二個以上的鄰點在 內的點,稱其為支點。 8-6-10中 。
簡單曲線(弧):有端點無支點的曲線(弧)稱為簡單弧。 8-6-10(b)。
簡單封閉曲線:無端點也無支點的弧稱為簡單封閉曲線。 8-6-10(c)。
所有上述概念都存在4-鄰點和8-鄰點的兩種不同定義方法。在採用鏈碼錶示曲線時,4-鄰點定義用4向鏈碼,8-鄰點定義用8向鏈碼。
2.曲線長度(弧長)斜率和曲率
曲線的長度,斜率和曲率可以採用幾何學中連續曲線的長度,斜率和曲率定義概念結合數字曲線的特點加以定義。例如求圖 8-6-11中曲線 的長度。顯然 是 點的集合,即 。
圖 8-6-11 曲線S及八向鏈碼
設有一個數字弧 見圖 8-6-11所視。定義 和 間的弧長為:由 沿曲線