OpenCV邊緣檢測(cè)
一头遭、基本步驟
1.平滑圖像:通過使用合適的模糊半徑執(zhí)行高斯模糊來減少圖像內(nèi)的噪聲寓免。
2.計(jì)算圖像的梯度:這里計(jì)算圖像的梯度,并將梯度分類為垂直计维、水平和斜對(duì)角。這一步的輸出用于在下一步中計(jì)算真正的邊緣撕予。
3.非最大值抑制:利用上一步計(jì)算出來的梯度方向鲫惶,檢測(cè)某一像素在梯度的正方向和負(fù)方向上是否是局部最大值,如果是实抡,則抑制該像素(像素不屬于邊緣)欠母。這是一種邊緣細(xì)化技術(shù),用最急劇的變換選出邊緣點(diǎn)吆寨。
4.用滯后閾值化選擇邊緣:最后一步赏淌,檢查某一條邊緣是否明顯到足以作為最終輸出,最后去除所有不明顯的邊緣啄清。
API介紹
// Canny邊緣檢測(cè)器檢測(cè)圖像邊緣
Imgproc.Canny(grayMat, cannyEdges, 10, 100);
- 第一個(gè)參數(shù)表示圖像輸入
- 第二個(gè)參數(shù)表述圖像輸出
- 第三個(gè)參數(shù)表示低閾值
- 第四個(gè)參數(shù)表示高閾值
在Canny邊緣檢測(cè)算法中六水,將圖像中的點(diǎn)歸為三類:
1. 被抑制點(diǎn)
灰度梯度值<低閾值
2.弱邊緣點(diǎn)
低閾值 <= 灰度梯度值 <= 高閾值
3.強(qiáng)邊緣點(diǎn)
高閾值 < 灰度梯度值