天天看點

自己動手寫一個霍夫變換檢測直線(線段)

霍夫變換最簡單的使用就是檢測直線了。

原理:

對于x-y坐标中的一條直線y=kx+b,任取其上兩點(x1,y1)與(x2,y2),在參數坐标k-b中分别對應兩條直線L1與L2,兩者相交與一點(b,k)。原直線上所有點在參數平面中對應的直線都相交于這一點。

對于x=c這類直線無法用y=kx+b處理,一般使用參數方程rho=xcos(theta)+ysin(theta)表示,則參數平面中為衆多三角函數曲線相交與一點(theta,rho)

對于參數平面細分(因為程式處理時候資料不會連續,是離散的),分别統計每個點挂載的曲線數量,即“有多少條直線在這一點相交”,取數量最多的那個點,對應原有的待檢測直線

先用霍夫變換檢測直線,确定“僞直線”,然後取原圖中點,用最小二乘法求出“真直線”。

說明:

OpenCV中自帶HoughLines和HoughLinesP等函數用于檢測直線。

代碼

  

自己動手寫一個霍夫變換檢測直線(線段)

繼續閱讀