Hough變換檢測直線和圓

2021-07-15 03:28:03 字數 938 閱讀 5104

1 直線是如何表示的?

對於平面中的一條直線,在直角座標系中,常見的有點斜式,兩點式兩種表示方法。然而在hough變換中,考慮的是另外一種表示方式:使用極座標(r,theta)來表示一條直線。其中r為該直線到原點的距離,theta為該直線的垂線與x軸的夾角。如下圖所示。

2 如果座標系中有多個點,又怎樣識別出哪些點在一條直線上呢?

使用hough變換來檢測直線的思想就是:為每乙個點假設n個方向的直線,通常n=180,此時檢測的直線的角度精度為1°,分別計算這n條直線的(r,theta)座標,得到n個座標點。如果要判斷的點共有n個,最終得到的(r,theta)座標有n*n個。有關這n*n個(r,theta)座標,其中theta是離散的角度,共有180個取值。

最重要的地方來了,如果多個點在一條直線上,那麼必有這多個點在theta=某個值theta_i時,這多個點的r近似相等於r_i。也就是說這多個點都在直線(r_i,theta_i)上。

3 下面拿個例子說明:

如果空間中有3個點,如何判斷這三個點在不在乙個直線上,如果在,這條直線是的位置為?

這個例子中,對於每個點均求過該點的6條直線的(r,theta)座標,共求了3*6個(r,theta)座標。可以發現在theta=60時,三個點的r都近似為80.7,由此可判定這三個點都在直線(80.7,60)上。

通過 r0theta 座標系可以更直觀表示這種關係,如下圖:圖中三個點的(r,th

eta)曲線匯集在一起,該交點就是同時經過這三個點的直線。 

在實際的直線檢測情況中,如果超過一定數目的點擁有相同的(r,theta)座標,那麼就可以判定此處有一條直線。在r0theta 座標系圖中,明顯的交匯點就標示一條檢測出的直線。

如下圖,可以判定出平面上的點共構成了兩條直線,即檢測出兩條直線。

hough變換直線檢測 霍夫圓變換

霍夫圓變換的基本原理和霍夫線變換的原理類似,直線檢測中對應極座標點被三維的圓心點 x,y 以及半徑r即 x,y,r 所代替。對於圓來說,圓心點和半徑就可以確定乙個圓。三維空間中曲線相交於一點的邊緣點集越多,那麼它們經過的共同圓上的畫素點越多,那麼它們經過的共同圓上的畫素點就許多,設定相應的閾值相應的...

Hough 變換檢測直線

hough 變換檢測直線的基本原理是 對x y 座標系下的每一點 x,y 對應極座標下為 rho x cos theta y sin theta 1 因此,對x y平面內的每一點,對應到極座標系則為一條直線,如果直角座標系下的點共線,則在極座標的直線會相交於一點。因此,求得極座標下相交最多的點,rh...

Hough變換檢測直線

1 基本原理 hough變換是影象處理中從影象中識別幾何形狀的基本方法之一,即它可以檢測已知形狀的目標,而且受雜訊和曲線間斷的影響小。hough變換的基本思想是利用點 線的對偶性。如下圖1所示 從圖1中可看出,x y座標和k b座標有點 線的對偶性。x y座標中的點p1 p2對應於k b座標中的l1...