第三章 影像的合成-環境接圖
3.2 擷取角點特徵點
3.2.2 掃瞄線配合 PCA 方法
在本方法中,我們先利用掃瞄線的方式將停車標記的邊線點找出並分群,再 將分屬不同群(即不同直線)的影像點做 PCA,找出每群點的直線方程式。首 先我們利用(3.2)式將原始影像轉成一張只有明顯物體邊緣的二值化影像(binary image)。
⎪⎩
線,因此就會將該點保留下來,接著就直接跳到下一列,再由左往右掃瞄,不斷 重覆這些步驟,直到掃完整張影像為止。圖3-6為由左上角為起點水平掃瞄的最 後結果之示意圖,圖中黑色和灰色的點皆為物體的邊界,但我們掃瞄完後只會保 留左側的外圍邊界點,即黑色點的區域。
圖3-6 由左上角開始水平掃瞄的結果示意圖。
當我們分別完成由四個頂點開始的水平掃瞄和垂直掃瞄,即可得到停車格中 間標記的外圍邊界點。但因為影像中可能會混雜著些許雜訊,所以我們要對找到 的邊界點進行篩選,過濾掉一些雜訊的點。我們使用的過濾機制是檢查線段上的 每點位置的差異值,如果是以左上角開始水平掃瞄的方式,那麼每兩列間的邊界 點的x座標值差異(如圖 3-7中的Δx)就必須要很小,在此我們設定兩列間的Δx 值最多只能差1,即設定 xΔ <2 這個條件,符合這個條件的邊界點才保留下來,
否則就視其為一個雜訊點。圖3-7為簡單的示意圖,黑色區域為我們掃瞄出來的 邊線點,每列旁的Δx說明了每兩列間各點的水平距離,圖 3-7中藍色圓框圈的點,
其|Δx|=3,所以會被視為是雜訊點。因為如果是一條連續的線段,那麼該線段上 的每點,其列與列之間的水平距離都是相近的,所以使用Δx來判斷是合理的。
Δx
Δx= 1 Δx= 1 Δx= 0 Δx=-1 Δx=-1 Δx= 1 Δx= 1 Δx=-3 Δx= 3
|Δx|=3 所以會 被視為 是雜訊 點。
圖3-7 水平掃瞄的過濾雜點機制之簡單示意圖。
使用上述的過濾雜點的方法刪除一些可能存在的雜點後,我們即可得到較正 確的標記邊界。雖然標記本身是矩形的樣式,但由於受到車後攝影機角度和位置 的影響,拍攝到的標記在影像中可能會呈現梯形或平行四邊形,所以我們就必須 判斷掃瞄到的邊界點是由一個邊組成或是二個邊組成,如圖 3-8所示。在圖 3-8 中,圖(a)表示掃到的邊界點只屬於一條線上的點,圖(b)則表示掃到的邊界 點分別屬於二條不同的線上的點。如果掃到的邊界點是由二條邊組成,就必須找 出二條邊的交界處,將這些掃瞄到的邊界點分群成二條邊上的點,進而找出標記 的四個邊。
(a) (b)
圖3-8 水平掃瞄到的邊界點之分布情況。
因此我們需要先判斷掃到的點是由一條直線或是二條線組成。所使用的方法
是以斜率來判斷,如果掃瞄到的邊界點只是屬於一條線,則這條線上的點不論從
交界點就是第i+5 個點( ))。找出交界點後,我們就可以把掃瞄到的點 分群到二條線上,也就是說,我們已經找出了矩形停車標記外框的二條邊線。
5
5, +
+ i
i y
x
做完以影像左上角為起始點的水平掃瞄後,我們會再以相同起點(左上角)
開始做垂直掃瞄,掃瞄最後的結果,同樣的也會得到停車標記的一條邊或二條 邊。這麼一來,我們最多可以得到停車標記的四條邊線(其中有二條是重覆)。
如圖 3-9中,因為圖(a)和圖(b)中的停車標記為不同的角度,所以掃瞄出來 的結果也會有所不同。在圖(a)中做水平掃瞄及垂直掃瞄的結果都會各得一條 邊,但是在圖(b)中,垂直掃瞄和水平掃瞄的就會各得到二條邊,但是其中一 條是重複的,即圖中虛線框出的邊,就是用水平掃瞄和垂直掃瞄都能掃瞄到的停 車標記的框線。因此,影像在經水平掃瞄和垂直掃瞄後最多可以得到三條邊,但 是為了之後利用邊的交界找角點特徵點時可以較為精確且快速,我們需要篩選掃 瞄到的邊。
(a) (b)
圖3-9 不同角度停車標記由左上角開始水平掃瞄和垂直掃瞄的結果。(a)對影像中的停車標記 做水平和垂直掃瞄後,最後各得到一條邊的結果,(b)對影像中的停車標記使用水平和 垂直掃瞄後,最後各得到二條邊的結果。
篩選邊的方式很簡單,因為我們希望最後得到的邊界點可以較完整,意即在 一條線上要有足夠多的點,而且各點之間,其座標值不要差太多。若是線上的每 個點彼此間y 座標值或 x 座標值都差距到 3~4 個像素,就表示掃到的這些點可能
並不是很穩定,之後當我們要進一步利用這些點找出跟這些點座標值最小的一條 直線時,誤差就會相對變大。所以整體而言,我們會將掃瞄到的每一條邊的點,
先做點數的篩選,我們在此是假設每條邊上的點數需大於30 個點,這是依據停 車標記在影像中的大小衡量估計出的最小邊線長度。接著再使用(3.4)式來評 估線的穩定度(stability)。
Sp = number of the line points (yn −y0)/ (3.4)
在(3.4)式中, 表示我們掃瞄到的這條邊上的點中最大的y座標值, 則表 示這條邊上的點最小的y座標值。利用(3.4)式算出來的結果,如果值愈近似 1 的話,就表示這條線上的點應該是平均分布且密集的,不會有零落的分散情況。
這裡我們設定的範圍是和 1 差距在
yn y0
3 .
±0 之內,只要掃瞄到的邊上的點計算結果 在此範圍內,我們就判定這群邊線點是穩定的,圖3-10是篩選邊的流程圖。若是 最後水平掃瞄和垂直掃瞄篩選出來的結果超過二條線的話,我們就利用穩定度篩 選出穩定度最好的二群邊線點(即利用(3.4)式算出來的結果和 1 最相近的前 兩條線),過程如圖3-11所示。
Line point set P
No
Yes
Discard P
Compute Stability Sp of P
Select P Yes |Sp- 1 | < 0.3 ?
No
Discard P Length of P > 30 ?
圖3-10 篩選邊流程圖。
Yes
Select P and R |Sp- 1 | < |SQ- 1 | ? Line point sets P, Q and R
P>Q
|SR- 1 | < |Sp- 1 | ?
|SQ- 1 | < |SR- 1 | ?
Yes
Yes
|SP- 1 | < |SR- 1 | ?
Select R and Q No
No
Select P and Q No Yes
圖3-11 選出最後二群線上點之流程圖。
在我們分別完成左上角、右上角、左下角及右下角為起點的水平掃瞄和垂直 掃瞄後,共可以得到八條邊(其中至少四條以上是重覆的邊)。但一般在追蹤的 過程中,只需要追蹤幾個較具有意義的特徵點即可,不需要一次追蹤一大群點,
因此我們希望利用掃瞄得到的八條邊找出停車標記的四個角點,並從中選出兩個 角點來進行追蹤。但由於掃瞄出來的八條邊是由八群點組成的(其中四群以上是 重覆的點),所以要找出停車標記的四個角點,就必須先找出這群點各自對應的 直線的交點。因此我們就針對這八群點,以line fitting 的方法,找出與這些座標 點誤差最小的八條直線。這個問題(即line fitting)有很多數學上的解法,在我 們的系統中,是使用主成分分析法(principal components analysis)[11]。
主成分分析法(PCA)是一種將資訊從高維度降低至低維度的統計方法,此 技巧利用線性轉換將資料點轉換至一新座標系,在此新座標系內,所有原座標系 內的點座標,其最大變異量會沿著第一象限軸方向(稱為第一主成分,first principal component),而次大變異量會沿著第二象限軸方向(稱為第二主成分,
second principal component),依此類推。在將資訊從高維度降到低維度的過程
(covariance matrix),此矩陣的計算方式如下:
(3.7)
(covariance)的算法為:
Y xi yi
下一步就是對C 做特徵向量分解(eigenvector decomposition),可求得兩個特徵 值(eigenvalue)及其對應的特徵向量(eigenvector)。其中,值較大的特徵值對 應的特徵向量,稱為是第一主成分向量,而值較小的特徵值所對應的特徵向量稱 為是第二主成分向量,則我們選取數值最大的特徵值所對應的特徵向量(即第一 主成分向量)作為這些資料點的朝向線。 圖3-12為利用PCA得出的主成分
(principal components)的示意圖。
圖3-12 利用 PCA 得出 Principal Components 之示意圖。
假設我們選取的特徵向量為V =
[
v1 v2]
T,則此向量即可表示為這些資料點 的朝向。若需進一步求出此朝向線的直線方程式l: y=ax+b,則將 、 相除 可得此線的斜率,又知(3.5)式中求得的資料點的重心必在此線上,因此有了 斜率及直線通過的點,便可以用點斜式表示出此線的方程式,如(3.9)式:v2 v1
l : [ ( ) ]
1 2 1
2 x
v y v v x
y=v + − (3.9)
我們可以用此方程式來表示掃瞄到的八群邊線點。
這一小節所介紹的掃瞄線配合 PCA 方法,步驟看起來繁複,但每個步驟的 計算都很單純,所以運算量很小,因此總共花費的執行時間平均只須0.3 秒,即 為 Hough 轉換的三分之一。
3.2.3 擷取角點特徵點
當我們對由左上角、左下角、右上角與右下角開始的水平與垂直掃瞄得到的 八群點分別做完PCA後,可以得到每一群點所表示之直線的直線方程式。根據每 二條線的直線方程式,用高斯消去法解聯立方程式,即可求出二條直線的交點。
在此需要注意的是,因為八群點中至少有四群以上是重複的邊上點,也就是說,
至少會有四條以上相同的直線方程式,而且有些線可能會是平行的狀況,就會沒 有交點,因此需要先對這些線做平行的判斷。我們是根據(3.10)式,使用角度
方法來判斷:
b a
b sin a
⋅
= × v v
θ (3.10)
在(3.10)式,av和b 表示二條直線的向量(在此即為每群點用PCA算出來的第 一主成分向量表示),如果二個向量求出來的
v
≅0 θ
sin ,表示二條直線是互相平 行的。
求出八條邊每兩條間各自的交點之後,最多可以得到四個不同的交點(因為 停車標示只有四條邊),則我們就擷取出矩形停車標示的角點特徵點了。本節所 介紹的擷取角點特徵點的簡單流程圖如圖3-13所示。
Find Edge Points of the Parking Marker
Use PCA to Get Line Equations of Edges Points
Compute the Corners of the Parking Marker
圖3-13 擷取角點特徵點的簡略流程圖。