opencv筆記(一):邊緣檢測的4種運算元
阿新 • • 發佈:2019-02-04
邊緣檢測:可以用導數來檢測
1.canny運算元:採用一階偏導的有限差分來計算梯度幅值和方向,方向導數達到區域性最大則為邊緣候選點;
創新點在於試圖將邊緣畫素拼接成輪廓,輪廓的形成即使用滯後性閾值:通過高低兩個閾值的設定,高閾值用來控制強邊緣的初始段,低閾值用來邊緣連線。
高閾值求的邊緣一般斷斷續續,斷開的地方如果低閾值求的邊緣存在,就用低閾值的邊緣接上去,目的讓邊緣儘量都連在一起。兩閾值間的點為疑似邊緣點,根據 連 通性確定,如果疑似點的鄰接畫素中有邊緣點則認為是邊緣點。
2.sobel運算元
Gx = |(P3+2P6+P9)-(P1+2P4+P7)|
Gy = |(P1+2P2+P3) - (P7+2P8+P9)|
假如中間為邊緣,那麼邊緣兩側的亮度差距就會變大,乘以符號相反的係數,會使得最終的結果達到很大的值,在影象上來看就是白色;而不是邊緣的區域,左右兩 邊或者上下兩邊就會抵消,在影象上看就是黑色。
3.scharr濾波器:對小的核來說,sobel運算元的精度低,例如3*3的核,可以用scharr代替sobel,速度一樣,精度高。
4.拉普拉斯運算元:利用sobel運算元算出影象上x,y方向的導數,帶入到公式中。拉普拉斯求2階導,邊緣位於拉普拉斯值為0的地方,2階導數為0,即一階導為極大或極小值。