第三章 研究方法
3.2 直線偵測
我們採用下列式子將一整組的影像轉為灰階圖,其中R、G、B 各代表彩色 影像中紅色、綠色和藍色的值。
B G
R y
x
g( , )=0.299⋅ +0.587⋅ +0.114⋅ (3-1)
我們假設一組影像的總張數為Nframe,以g 來表轉為灰階的影像內的某一張t 影像,因此1≤t≤Nframe。我們對每張g 做邊緣偵測(使用 Sobel filter ),即t
) ( t
t SF g
e = 。並將每張e 做垂直的分割,分成數段,t et ={e1t,e2t,...,ets},s 為一固 定數用來指定每張圖g 要被分成幾段。相鄰的分段可以有重疊。我們採取的做t 法為每段 50 個 pixel,相鄰的分段重疊 25 個 pixel。如圖 3-5 所示。
圖3-5 將影像分段的示意圖
分段的目的是為了提升找出直線的效果。若直接對一整張影像做霍夫變換 (Hough transform),一些較短的直線很容易被忽略掉。相鄰分段有重疊是為了增 加準確度。
Hough transform:
在Hough space 裡每一點(d,θ)都代表平常2 維座標中的一條直線 y=ax+b,d 為直線與原點的最短距離,θ 為從原點到直線最短距離的點的向量的角度,如圖 3-6。如果我們掃過平常 2 維空間的每一條線的每一點就將可能通過此點的線都 算出並換算成(d,θ),然後存到相對應的Hough space 的計數器,整張圖掃完後 數值越高的(d,θ)就越可能是一條線,因為該條線上的每一點都會算出相同的
) ,
(d θ 。這時取出Hough space 中的所有區域最大值(local maximum)的座標 )
,
(d θ ,再換算回去得到平常2 維空間上的直線。
et
et1 et2 ets
……
圖3-6 Hough transform 的轉換圖
我們對每一分段e 分別做霍夫變換(Hough transform)。在事先觀察受測試錄it 像後,我們限制θ 在30° 149~ °,我們發現手術器械不會擺到接近垂直的方向,
做此限制不會影響到正確的結果,也能減少計算時間。當然在不同的訓練箱或在 實際手術上也許會有變動,此限制也要跟著改變。
我們將每一分段e 找出的所有直線各用一個集合來表示:it Lti ={lit1,lit2,...,likt},
≤10
k 。每一段找出直線數目並不一定一樣,通常靠近影像中間的分段的直線數
目都比影像兩端的分段直線的數目多。
有些直線實際上會跨過數個分段[eit,etj,ekt],因此會發生同一條直線被我們分 angle distance
傳統2 維空間
Hough space θ1
d1
θ2
d2
X Y
Y
X
.
(d2,θ2).
(d1,θ1)到數個分段去,然後被分別找出。所以必須將這些原本該是同一條直線的線段還 原成一條直線。還原的方法我們採用linear least square。
設組成兩直線的所有點的集合為{(x1,y1),(x2,y2),...,(xm,ym)}。我們定義
Algorithm 3.2.1 合併直線的演算法:
End
algorithm 3.2.2 截掉多餘的部分:
End
圖3-7 原圖與還原圖的差異 (a)原圖中該直線並無達到分段的邊緣。(b)該直線在 各分段的重建圖。(c)將各分段的片段直線組合起來。(d)組合結果,藍色虛線為 產生的多餘長度。
還原的直線過程中,不免會產生一些直線彼此相當接近,這可能歸因於將一 條直線做霍夫變換時(Hough Transform),產生兩組極為相似的(d1,θ2)和
) ,
(d2 θ2 ,然後又被我們分別還原,或是因為在將跨分段的直線組合起來而產生 的誤差。為了減少之後步驟的計算量,必須要將相近的直線合併。我們的作法是
(a)
(c)
… …
… …
(b)
(d)
… …
選擇留下較長的直線,底下為實作演算法。
Algorithm 3.2.3 直線的合併
End
同手術操作過程的錄像,也許會使用到不同種類的手術器械,此門檻值須事先調 整過。
條件(1)還可用來分辨此配對是屬於左邊或右邊的器械,配對中任一條直線 斜率小於0 即代表屬於左側器械,反之就屬於右側器械。
(a) (b)
(c) (d)
(e) (f)
(g) (h) 圖3-8 配對的條件 (a)兩直線的斜率乘積要大於 0。(b)此配對斜率乘積小於 0
不符合實際情況。(c)兩直線的夾角。(d)角度太寬,會包含到器械以外的區域。
(e)兩直線尾端的寬。(f)太細,無法包含到整個器械。(g)兩直線的交點往下延長 後可得。(h)交點要往上延長後可得,不符合現實情況,此配對須捨棄。
符合這些條件的所有配對都要記錄下來,但在這步驟我們尚無法決定哪個配 對是真的符合手術器械的上緣和下緣,必須等接下來的步驟做進一步的挑選。