1. 關于邊緣模式的算法
邊緣指的是圖像內出現的明部和暗部的邊界。邊緣檢測則是通過圖像處理檢測出該濃度變化的邊界。可通過以下
4 個流程檢測邊緣。
2. 關于邊緣模式的參數設置
想從傾斜邊緣或多個候補中檢測出任意邊緣時,光靠初始值可能無法順利進行。
此時調整設置參數,就可以穩定檢測。
接下來解說常用的 2 個參數。
3. 使邊緣檢測更加穩定的預處理濾波器
在測量區域內向指定方向掃描進行邊緣檢測的區段,然后測量各個區段的邊緣位置。在 1個 測量區域中可測量多個邊緣位置信息,因此除了整體平均、最大、最小之外,還可以檢測出以個別測量結果和全部測量結果為點群的圓形和直線。
4. 使邊緣檢測更加穩定的預處理濾波器
邊緣檢測中,如何抑制邊緣偏差成為關鍵所在。作為使邊緣檢測穩定的高效濾波器,“中值”和“平均化”最為人們所熟知。接下來對這些預處理濾波器的特征和高效選定方法進行說明。
.首先明白所謂“零交叉”的概念。
在求圖像邊緣的時候如果計算一階導數的邊緣檢測器如:(a) Roberts交叉算子(b)Sobel算子(c) Prewitt算子,會導致檢測的邊緣點太多;一種更好的方法就是求梯度局部最大值對應的點,并認定它們是邊緣點,如下圖所示,若用閾值來進行邊緣檢測,則在a和b之間的所有點都被記為邊緣點,這就是為什么計算一階導數的邊緣檢測器會導致檢測的邊緣點太多.但通過去除一階導數中的非局部最大值,可以檢測出更精確的邊緣.一階導數的局部最大值對應著二階導數的零交點這意味著在邊緣點處有一階導數的峰值,同樣地,有二階導數的零交叉點.這樣,通過找圖像強度的二階導數的零交叉點就能找到邊緣點。在二維空間,對應二階導數有兩種算子:拉普拉斯算子和二階方向導數。
以一維函數f(x)(階躍邊緣) 與f'(x)及f''(x)的對應關系來理解這個概念。
2.在零交叉點概念的基礎上明白Canny 邊緣檢測器處理的圖像的步驟:
step1.用高斯濾波器平滑圖像.
step2.用一階偏導的有限差分來計算梯度的幅值和方向.
step3.對梯度幅值應用非極大值抑制.
step4.用雙閾值算法檢測和連接邊緣.
3.Canny算子中特別之處在步驟3和步驟4中體現;
首先,步驟三中不是僅僅把圖像快速變化的問題轉化成求幅值陣列的局部最大值問題.為確定邊緣,增加了細化幅值圖像中的屋脊帶,即根據3*3領域中心點的扇區值決定的梯度方向,用領域中心點幅值與梯度方向上相鄰的2個元素進行比較,只保留幅值局部變化最大的點.這一過程叫非極大值抑制(Non-Maxima Suppression,NMS ),它會生成細化的邊緣.
另外,步驟4中用了雙閾值技術,雙閾值算法對非極大值抑制圖像作用雙閾值t1和t2,且t2約為t1的兩倍,得到兩個閾值邊緣圖像T1[i,j]和T2[i,j].由于圖像T2[i,j]是用高閾值得到的,因此它含有很少的假邊緣,但T2[i,j]可能在輪廓上有間斷(太多的假錯誤).雙閾值法要在T2[i,j]中把邊緣連接成輪廊,當到達輪廊的端點時,該算法就在T1[i,j]的8-鄰點位置尋找可以連接到輪廊上的邊緣,這樣,算法將不斷地在T1[i,j]中收集邊緣,直到將T2[i,j]中所有的間隙連接起來為止.這一算法是閾值化的副產物,并解決了閾值選擇的一些問題.