edge 的重要性
- 大部分的形狀等資訊可以從邊緣分析出來
- 用edge來提取資訊、辨識物件
- 回復幾何形狀與消失點(vanishing point)
edge產生原因
- 表面法向不連續性(Surface normal discontinuity):區塊內看到多個不同角度的表面
- 深度不連續性 (Depth discontinuity):由物體前後距離不一所產生邊緣
- 表面顏色不連續性 (Surface color discontinuity):物體改變顏色,例如材質顏色改變
- 亮度不連續性 (Illumination discontinuity):陰影,光線亮度變化
邊緣檢測在一階微分應用
edge detection Using First/Second Derivative
透過一階微分找出亮度變化大的地方
First Derivative
1D function:
2D function:
轉換成2D mask/filter
- gradient vector:對x,y方向進行偏微分,也就是用上述兩個Gx, Gy的mask個別對影像進行convolution
- gradient magnitude:透過x,y方向梯度的加總得到最終梯度強度
- gradient direction:gradient vector中gradient變化量最大的角度
noise對edge detection的影響
- noise對邊緣檢測的影響不大
- 若有較大的影響可以考慮先對影像進行平滑運算
- Median filter
- Gaussian filter
- Bilateral filter
Tradeoff:影像模糊度越強,noise越少,但edge也會被模糊掉
edge detector
好的edge detector應避免這些事情發生
- Poor robustness to noise:對noise抵抗能力低
- Poor localization:與真實edge位置仍有小幅度差距
- Too many responses:檢出太多不必要edge
Sobel edge detector
Sobel Operator
由高斯平滑 + 一階微分
組成
gradient magnitude & gradient direction
缺點
- 準確率差,誤判率高
- 對noise敏感
Canny edge detector
Line Detection
直線是一個很常見的特徵,例如在建築物、道路、零件電路板等都看得到 從edge資訊更進一步找出直線
Naïve method
對影像中的edge點任取兩個點,檢查在此點形成的線上是否有其他edge點 當點數量大於一定值時,視為真正的直線 缺點:
- 時間複雜度為\(O(N^2)\) ,N為edge數量
Hough transform
與蠻力法相似,用投票的方式來找出合適的線段 但不同的地方在於使用hough space將直線透過另一種公式做轉換
#### Hough space 直線方程式 \(y=ax+b\)(1) 但這個方程式(1)不能表示垂直的線段
\(r = xcos \theta + ysin \theta\) (2)
因此由公式(2)可以簡單的改變\(\theta\) 值組合出多種不同角度的直線
單個edge點(x,y)在\([r,\theta]\) hough space下所呈現多條直線的結果為
可以看到單個點在\([r,\theta]\)空間下畫出一條彎曲線
加上不同edge座標點,可以在hough space下畫出多條彎曲線 並且有疊加交點,而此交點正好是兩點所形成的直線\([r, \theta]\)
可篩選交點數較多的點為真實直線,也可以篩選指定直線角度範圍
優點:
- 概念簡單,好實現
- 相同概念也可以用在檢測圓形
缺點:
- 只得到直線角度資訊,沒有直線長度資訊
補充
消失點 vanishing point
消失點是三維空間中所有平行線相交的交點。 消失點的應用在檢測道路上有很大的幫助,在二維影像中車道最終會在消失點相交,但真實空間的車道是平行的。 透過edge尋找消失點,進行道路檢測。