天天看點

圖像處理08 邊緣檢測與直線檢測與圓圈檢測

Scharr 算子

Scharr 算子和 Sobel 算子基本一樣. 隻是卷積核系數不同. Scharr 算子對邊界更加敏感, 也更容易誤判.

卷積核參數:

圖像處理08 邊緣檢測與直線檢測與圓圈檢測
圖像處理08 邊緣檢測與直線檢測與圓圈檢測

Laplacian 算子

拉普拉斯算子 (Laplacian) 是圖像二階空間導數的二維向同性測度. 拉普拉斯算子可以突出圖像中強度發生快速變化的區域, 是以常用在邊緣檢測任務當中.

 進行 Laplacian 操作之前通常需要先用高斯平滑濾波器 (Gaussian Blur) 降低 Laplacian 算子對于噪聲的敏感性.

圖像處理08 邊緣檢測與直線檢測與圓圈檢測

霍夫直線變換

霍夫變換 (Hough Line Transform) 是圖像進行中的一種特征提取技術. 通過平面空間到極值坐标空間的轉換, 可以幫助我們實作直線檢測.

HoughLines

格式:

cv2.HoughLines(image, rho, theta, threshold, lines=None, srn=None, stn=None, min_theta=None, max_theta=None)

參數:

image: 輸入圖像

rho: 線性搜尋半徑步長, 以像素為機關

theta: 線性搜尋步長, 以弧度為機關

threshold: 累計門檻值

HoughLinesP

此函數在 HoughLines 的基礎上末尾加了一個代表機率 (Probabilistic) 的 P, 表明它可以采用累計機率霍夫變換, 來找出二值圖像中的直線.

HoughLinesP(image, rho, theta, threshold, lines=None, minLineLength=None, maxLineGap=None)

1

minLineLength: 最短直線長度

maxLineGap: 最大孔隙距離

圖像處理08 邊緣檢測與直線檢測與圓圈檢測
圖像處理08 邊緣檢測與直線檢測與圓圈檢測

霍夫圓變換

霍夫圓變換 (Hough Circle Transform) 的原理和霍夫直線變換類似. 對于一條直線, 我們可以用參數 (r, θ) 表示, 對于圓我們需要三個參數 (x, y, r), 分别代表三個參數 x 圓心, y 圓心, r, 半徑.

因為霍夫圓檢測對噪聲比較敏感, 是以首先要對圖像做中值濾波.

基于效率考慮, Opencv 中實作的霍夫變換圓檢測是基于圖像梯度實作, 分為兩步:

檢測變換, 發現可能的圓心

基于第一步的基礎上從候選圓心開始計算最佳半徑大小

cv2.HoughCircles(image, method, dp, minDist, circles=None, param1=None, param2=None, minRadius=None, maxRadius=None)

圖像處理08 邊緣檢測與直線檢測與圓圈檢測

繼續閱讀