• 沒有找到結果。

紋路轉折處的分析

第三章 輪廓追蹤、紋路轉折與紋路分岔研究

3.2.1 紋路轉折處的分析

Baruch[3]與前面章節所討論,係數 d 都是呈 45 度的方式來擴展 Window,

也就是係數d 在對應到 X 軸的分量(dx)會等於對應到 Y 軸的分量(dy),如圖 3-22 所示。

圖 3-22 係數 d 呈現 45 度時,在 X 軸與 Y 軸上的分量示意圖。(a)當係數 d=1 時 (b)當係數 d=2 時 (c)當係數 d=3 時

需特別注意的是僅管圖形上為一個直角三角形,但係數d、dx 與 dy 的值,所 代表的是所經過的格子數的個數,並非一般數學上的所代表大小的值。由圖 3-22 可以理解出同一組的Left Point 與 Right Point 所架構出的 Window 大小只有與係數 d 有關,而 Chouinard and Plamondon[4]所提出的 Window 架構大小不僅與係數 d 有 關,而且和Left Point 與 Right Point 在 X 軸與 Y 軸的位置差距有關。

但這是應用在一般的手寫字(線條粗細均一)的狀況下才可行,因為每個筆劃和 筆劃之間的間隔大約會大於3 個 Pixel 的寬度,如果應用在某些指紋型態上,因為 其紋路的線條和線條之間有時僅僅相隔1 個 Pixel 的寬度(如圖 3-23 和圖 3-24 所 示)。

圖 3-23 指紋斜線條的間隔過小(實例 1)

圖 3-24 指紋斜線條的間隔過小(實例 2)

這裡值得一提的是,之前的RD、DD、LD 以及 UD 的 Window 中心點的公式,

都是使用 L、R、BMPWindow_Height、BMPWindow_Width 以及 d 等去計算出 Window 中心點。這樣套用在輪廓追蹤所架構出的 Window 是不可行的,理由是之 前的d 不再是單純的 d 了,而 L 與 R 的分佈位置的抓取難度較高與找法也更加繁

雜,所以才需要重新想一套 Window 中心點的計算方式來解決這問題,以下是從 BMP 動態線追隨圖像化擴展 Window 追蹤系統 V10.0 中的程式碼截取出來的新 Window 中心點的計算公式:

BMP_LPRP_Center = (BMP_i_y_start * BMPWidth + BMP_j_x_start) + Int((BMP_i_y_end - BMP_i_y_start) / 2) * BMPWidth + Int((BMP_j_x_end - BMP_j_x_start) / 2),

其思路是以BMP_j_x_start 和 BMP_i_y_start 為基準,再去擴展到整個 Window 的 中心點。也就是利用BMP_j_x_start 和 BMP_i_y_start 計算出 Window 的左下角,

之後再往上往右至Window 的中心。往上:加上(BMP_i_y_end - BMP_i_y_start) / 2 後再乘上 BMPWidth;往右:加上(BMP_j_x_end - BMP_j_x_start) / 2。

從圖 3-25 (a)可看出一個紋路的劇烈轉折且粗細不一,而圖 3-25 (b)是利用 Chouinard and Plamondon[4]且用 d 等於 1,方向為由下而上所模擬出的中心點(紫 色點)結果。如果是從下方開始使用 LF-UD 慢慢往上,由於線條急遽向右偏,將導 致 LF-RD 的演算法無法應付,所以才利用 Contour Tracing 來架構出 LF-CT(Line Following Contour Tracing)的產生。

圖 3-25 (a)劇烈轉折的紋路;(b)演算法模擬的中心點結果(d 等於 1)

分岔研究探討

在分岔的討論中,一直都是在處理線條或是指紋紋路一分為二時的分岔狀況,

如圖 3-26 所示,也就是當 Window 前邊界有偵測線條中有空白部分,如圖 3-27 所 示,即做分岔處理;但現在反過頭來,如果一開始是從分支線細線化回主幹線時,

如圖 3-28 所示,這時難度就增加很多。

圖 3-26 假設定義左邊為主幹線,右邊和下邊為分支線

圖 3-27 LF-RD 從左邊的主幹線由左往右執行細線化,遇到分岔情況(初始 d=2)

圖 3-28 LF-LD 從右邊的分支線由右往左執行細線化,遇到分岔情況(初始 d=2,

但最後因為L 落後 R,所以做自動補償 d,d=2+1=3)

接下來,從實際的分岔指紋紋路來分析Window 的擴展,如圖 3-29 所示為一

個典型的紋路一分二圖案(類似雙叉戟形狀),假定左邊為主幹,右邊分為在上方的 上分支,在下方的下分支。一般的Line Following 如果是從主幹開始細線化,採 RD 方式,是不會遇到太大的困難,但如果是從右邊的上分支或是下分支開始做 LF-LD 細線化的話,就可能遇到一些困難。

圖 3-29 指紋紋路的一分二圖型

從圖 3-30 就可看出困難的點,假定從上分支使用 LF-LD 由最右邊往左細線 化,當細線化接近到分岔點時,此時的Left Point 座標為(12,13),Rigth Point 的座 標為(12,17),而黑色矩形 Window 則是利用 Chouinard and Plamondon[4]所提出的 方法 架 出的 Window。之後再利用 Chouinard and Plamondon[4]所提出的計算 Window 的邊界數來判定是否為分岔,然而可以看出圖 3-30 的黑色 Window 的邊

界數為1,代表沒有分岔,是為直線的一部份。

圖 3-30 Chouinard and Plamondon[4]所提出的 Window 擴展方法

針對此問題,本研究提出一個新的Window 擴展方式來解決此問題,當 Window 形成後檢查Window 內的對角 2 個 Pixel 值是否為 0,如果不是 0 則向左方向或是 向右方向來擴展至為0 為止。以圖 3-30 為例,對角 2 個 Pixel 的座標分別為(8,11) 和(16,19),而座標(16,19)的 Pxiel 值為 0,但另一個對角座標(8,11)的 Pixel 值卻是 為1。因為對角座標(8,11)是靠近 Left Point,所以要往左方向來移動。注意,這邊 說的往左方向其實是往下,要以Window 的行進方向來看。可以知道一直往左方向 移動,最後會來到新的對角座標(8,5)的位置,如圖 3-31 所示為一個新架構出來的 Window。針對圖 3-31 再一次利用 Chouinard and Plamondon[4]所提出的計算 Window 的邊界數來判定是否為分岔,然而可以很清楚的看出 Window 的邊界數為 2,代表有分岔(分岔類型為 type T),如圖 3-33 所示。

如果圖 3-30 的對角座標(16,19)的值為 1,因為靠近 Right Point,所以要往右 方向來移動(也就是往上)至值為 0 的位置。如果兩個對角座標的 Pixel 值都為 1,

則依此類推。

圖 3-31 本研究提出一個改良的 Window 擴展方法

圖 3-32 圖 3-30 的 Window 邊界數結果為 1

圖 3-33 圖 3-31 的 Window 邊界數結果為 2

依照圖 3-33 共有 2 個分支,一個分支的 Left Point 座標設定為(8,6),Right Point 座標設定為(8,16);另一個分支的 Left Point 座標設定為(16,7),Right Point 座標設 定為(10,5)。

圖 3-34 多分岔的紋路

圖 3-35 圖 3-34 的 Window 邊界數結果為 3

而上述的如果不是 0 則向左方向或是向右方向來擴展至為 0 為止。並不是無

止盡的往同一個方向(左方向或右:向)擴展,如圖 3-36 所示,三個重要的座標依序 由三個虛線箭頭所標示出,(11,18)、(7,18)和(7,22)。因為 Left Point(15,14)與 Right Point(19,11)在 X 軸分量上相距 4 個 Pixel 的寬度,所以先由 Left Point 往上 4 個 Pixel 距離後,依照本研究的方法,向左方向擴展至 Pixel 為 0 的方法將會造成 Window 擴展太大,所以須設定向左方向擴展了 2 倍的寬度後,Pixel 還是為 1 的 話,就必須往上擴展4 個 Pixel 距離,再次檢查 Pixel 是否為 0,如果為 1,則再往 上擴展 4 個 Pixel 距離。如圖 3-36 所示,向左擴展了 2 倍的 Pixel 寬度後的座標 (7,18)的 Pixel 還是為 1,所以不能再往左繼續擴展了,必須往上擴展 4 個 Pixel 距 離後的座標(7,22)的 Pixel 為 0 則做為 Window 對角 Pixel。而另一個 Window 對角 Pixel,因為 Right Point 往下 4 個 Pixel 距離,再往右 3 個 Pixel 距離的座標(22,7)的 Pixel 為 0,所以就將該座標設定 Window 對角 Pixel。

圖 3-36 往左方向擴展 2 倍距離後還是 black pixel(1),則往上擴展

當把圖 3-36 執行計算 Window 邊界數時,可發現其結果為 3,如圖 3-37 所 示,這個結果跟預期的值2(線條一分二)是不符合的。

圖 3-37 圖 3-36 的計算 Window 邊界數為 3

所以針對Window 內的對角 2 個 Pixel 值會再多加上一個條件就是其對角 Pixel 所相鄰的2 個 Window 邊界上的值也必須為 0。如圖 3-38 所示,靠近 Left Point 座 標(15,14)的 Window 對角 Pixel 座標(7,24),其相鄰的 Window 邊界上的 Pixel 座標

分別為(7,23)和(8,24),這兩個 Pixel 的值為 0,所以新的 Window 對角 Pixel 座標設 定為(7,24);而另一個 Window 對角 Pixel 座標(22,7)還是不變。

圖 3-38 靠近 Left Point 的 Window 對角 Pixel 所相鄰的 2 個 Window 邊界上的 Pixel 值為 0

如圖 3-39 所示,靠近 Left Point 的 Window 對角 Pixel 為 0 且其所相鄰的 2 個 Window 邊界上的 Pixel 值也同時為 0 時,當執行計算 Window 邊界數後,值為 2,

這個值和圖形上是相符合的。

圖 3-39 圖 3-38 的計算 Window 邊界數為 2

第四章 BMP 動態線追隨圖像化擴展

相關文件