2011-09-30 70 views
6

我想知道爲什麼霍夫變換使用rho=xcos(theta) + ysin(theta)表示直線(y=mx+b)。我試圖解決這個問題(並且去了wikipedia article這個問題),但是找不到從另一箇中派生出一個方法的方法。Hough變換公式

有誰知道如何從另一個派生一個?

預先感謝您。

回答

12

推導:

方程式x/a + y/b = 1

  • 限定線
  • 具有x截距=一個
  • 具有y截距= B

從三角,回想一下角度爲t的光線如何投射到x軸和y軸上ccording到(angle=t, radius=1) -> (x=cos(t), y=sin(t)) *

http://en.wikipedia.org/wiki/File:Unit_circle.svg

戰平標記點的切線。三角函數(或甚至具有類似三角形的幾何體)告訴我們切線在x=1/cos(t)y=1/sin(t)處相交。因此距離1的線路將具有a=1/cos(t)b=1/sin(t),因此由x/(1/cos(t)) + y/(1/sin(t)) = 1描述...

...這僅僅是cos(t) x + sin(t) y = rho其中rho=1

你可以看到,rho對應於行多遠是從原點(通過與方程玩耍,或指出的是,這裏的乘法只是縮放所有值相同,有效地縮放網格)。


*參見http://en.wikipedia.org/wiki/File:Unit_circle.svg信貸

+0

感謝您的解釋。 – Vignesh

0

每對rho, theta涉及一種x,y一對用於從所述原點,所述距離rho一個給定的線以角度就行theta地方,你在x,y座標。

rho, theta方程來代替y=mx+b使得rho, theta值的序列可以被放入方程而不與所述y=mx+b方法,其中所述斜率是未定義出現的計算問題(即,行是垂直的)。

+0

Downvoter,關心幫助我改進的答案嗎? –

5

這只是從線性座標系轉換爲旋轉座標系的轉換。這樣做的原因是維基百科的文章中概述:

在Hough變換,一個主要的想法是考慮直線的特徵不是像點(X1,Y1),(X2,Y2),而是取決於其參數,即斜率參數m和截距參數b。基於這個事實,直線y = mx + b可以表示爲參數空間中的點(b,m)。然而,人們面臨的問題是垂直線引起參數m和b的無限值。出於計算原因,因此對於Hough變換中的線,使用不同的一對參數(表示爲r和θ(theta))是更好的。

以及兩者之間轉換,使用公式y = -(cos(theta)/sin(theta))x + r/sin(theta)。因此m = -(cos(theta)/sin(theta))b = r/sin(theta)。當sin(theta)=0theta=0時,這些顯然會失效,這就是爲什麼旋轉座標系是首選(斜線無限長的線條沒有任何問題)。

+1

我得到了休息,但我沒有看到m = - (cos(theta)/ sin(theta))和b = r/sin(theta)...(相當尷尬地說),其他一切都有意義 – Cenoc

+0

Shouldn '它是'sin(theta)/ cos(theta)',因爲斜率在運行時上升? –

+0

@JonathanM:如果你正在測量從原點到'y = mx + b'線的斜率。然而,你並不是這樣,並且'y = mx + b'線的斜率等於從該線到原點的切線的負倒數。如果你看看ninjagecko的答案,你可以看到這意味着'm = - (cos(θ)/ sin(θ))'。 – CanSpice