通俗易懂放入Hough變換原理

2021-10-08 01:21:42 字數 2274 閱讀 1559

hough

變換是影象處理中從影象中識別幾何形狀的基本方法之一。

hough變換的基本原理在於利用點與線的對偶性,將原始影象空間的給定的曲線通過曲線表達形式變為引數空間的乙個點。這樣就把原始影象中給定曲線的檢測問題轉化為尋找引數空間中的峰值問題。也即把檢測整體特性轉化為檢測區域性特性。比如直線、橢圓、圓、弧線等。

設已知一黑白影象上畫了一條直線,要求出這條直線所在的位置。我們知道,直線的方程可以用

y=k*x+b 

來表示,其中k和

b是引數,分別是斜率和截距。過某一點

(x0,y0)

的所有直線的引數都會滿足方程

y0=kx0+b

。即點(x0,y0)

確定了一族直線。方程

y0=kx0+b

在引數k--b

平面上是一條直線,

(你也可以是方程

b=-x0*k+y0

對應的直線

)。這樣,影象

x--y

平面上的乙個前景畫素點就對應到引數平面上的一條直線。我們舉個例子說明解決前面那個問題的原理。設影象上的直線是

y=x, 

我們先取上面的三個點:

a(0,0), b(1,1), c(22)

。可以求出,過

a點的直線的引數要滿足方程

b=0, 過b

點的直線的引數要滿足方程

1=k+b, 過c

點的直線的引數要滿足方程

2=2k+b, 

這三個方程就對應著引數平面上的三條直線,而這三條直線會相交於一點

(k=1,b=0)

。 同理,原影象上直線

y=x上的其它點(如

(3,3),(4,4)等)

對應引數平面上的直線也會通過點

(k=1,b=0)

。這個性質就為我們解決問題提供了方法,就是把影象平面上的點對應到引數平面上的線,最後通過統計特性來解決問題。假如影象平面上有兩條直線,那麼最終在引數平面上就會看到兩個峰值點,依此類推。

簡而言之,

hough

變換思想為:在原始影象座標系下的乙個點對應了引數座標系中的一條直線,同樣引數座標系的一條直線對應了原始座標系下的乙個點,然後,原始座標系下呈現直線的所有點,它們的斜率和截距是相同的,所以它們在引數座標系下對應於同乙個點。這樣在將原始座標系下的各個點投影到引數座標系下之後,看引數座標系下有沒有聚集點,這樣的聚集點就對應了原始座標系下的直線。

在實際應用中,

y=k*x+b

形式的直線方程沒有辦法表示

x=c形式的直線

(這時候,直線的斜率為無窮大

)。所以實際應用中,是採用引數方程

p=x*cos(theta)+y*sin(theta)

。這樣,影象平面上的乙個點就對應到引數

p---theta

平面上的一條曲線上,其它的還是一樣。

1、已知半徑的圓

其實hough

變換可以檢測任意的已知表達形式的曲線,關鍵是看其引數空間的選擇,引數空間的選擇可以根據它的表達形式而定。比如圓的表達形式為

,所以當檢測某一半徑的圓的時候,可以選擇與原影象空間同樣的空間作為引數空間。那麼圓影象空間中的乙個圓對應了引數空間中的乙個點,引數空間中的乙個點對應了影象空間中的乙個圓,圓影象空間中在同乙個圓上的點,它們的引數相同即a,

b相同,那麼它們在引數空間中的對應的圓就會過同乙個點(a,

b),所以,將原影象空間中的所有點變換到引數空間後,根據引數空間中點的聚集程度就可以判斷出影象空間中有沒有近似於圓的圖形。如果有的話,這個引數就是圓的引數。

2、未知半徑的圓

對於圓的半徑未知的情況下,可以看作是有三個引數的圓的檢測,中心和半徑。這個時候原理仍然相同,只是引數空間的維數公升高,計算量增大。影象空間中的任意乙個點都對應了引數空間中的一簇圓曲線。

,其實是乙個圓錐型。引數空間中的任意乙個點對應了影象空間中的乙個圓。

3、橢圓

橢圓有5

個自由引數,所以它的引數空間是

5維的,因此他的計算量非常大,所以提出了許多的改進演算法。

影象空間中的在同乙個圓,直線,橢圓上的點,每乙個點都對應了引數空間中的乙個圖形,在影象空間中這些點都滿足它們的方程這乙個條件,所以這些點,每個投影後得到的影象都會經過這個引數空間中的點。也就是在引數空間中它們會相交於一點。所以,當引數空間中的這個相交點的越大的話,那麼說明元影象空間中滿足這個引數的圖形越飽滿。越象我們要檢測的東西。

hough變換能夠查詢任意的曲線,只要你給定它的方程。hough變換在檢驗已知形狀的目標方面具有受曲線間斷影響小和不受圖形旋轉的影響的優點,即使目標有稍許缺損或汙染也能被正確識別。

numpy bincount 通俗易懂

bincount的用途很簡單,就是統計出乙個列表的各個元素的出現次數。例如輸入是 1,0,2,2,1,2,3,5 那麼輸出就是 1,2,3,1,0,1 這樣的結果可能並不是很直觀,可能依然會有同學會問為什麼會輸出這樣的結果。我們看看 假如我們把輸入的列表中的數字都統計一遍,形成乙個字典 key是列表...

通俗易懂講解迴圈佇列原理

迴圈佇列 環形佇列 顧名思義,為了能夠重複利用佇列,將佇列看作環形,迴圈使用,為什麼判斷隊滿的時候是 rear 1 maxsize呢?我們來簡單理解一下。1,隊空的時候 rear代表能寫入的位置,front代表能讀的位置 當rear front的時候隊列為空 想象當隊列為空的時候,能寫入是第乙個位置...

Hough變換原理

hough變換原理 一 簡單介紹 hough變換是影象處理中從影象中識別幾何形狀的基本方法之一。hough變換的基本原理在於利用點與線的對偶性,將原始影象空間的給定的曲線通過曲線表達形式變為引數空間的乙個點。這樣就把原始影象中給定曲線的檢測問題轉化為尋找引數空間中的峰值問題。也即把檢測整體特性轉化為...