この論文に基づいて 、ハフ変換を使用して長方形検出を実装しようとしています。
Matlab を使用してプログラムしましたが、平行ペア線と直交ペア線を検出した後、これらのペアの交点を検出する必要があります。私の質問は、ハフ空間における 2 つの線の交点の質についてです。
4 つの方程式系を解いて交点を見つけました。これらの交点はデカルト座標空間または極座標空間にありますか?
紙について疑問に思っている人のために、それは次のとおりです。
Cláudio Rosito Jung と Rodrigo Schramm によるウィンドウ処理されたハフ変換に基づく四角形の検出。
紙によると、交点は極座標として表されますが、明らかに実装が異なる場合があります (唯一の方法は、コードを表示することです)。
彼の表記法と一致していると仮定すると、ピークは次のように表現されます。
次に、セクション 4.3 の式 (3) で与えられるピーク ペアリングを実行する必要があります。
ハフ空間の精度は、2つの主な要因に依存する必要があります。
アキュムレータはハフ空間にマッピングされます。アキュムレータ配列をループするには、アキュムレータがハフ空間を個別のグリッドに分割する必要があります。
線形ハフ空間の精度の2番目の要素は、元の画像の原点の位置です。\ rhoの特定の変更に対して、\ thetaのスイープを実行すると、何が起こるかを確認してください。原点の近くでは、これらのスイープの1つは、画像のエッジ近くのスイープよりもはるかに少ないピクセルをカバーします。これは、デカルトに戻すときに同じレベルの精度を達成するために、画像のエッジの近くでアキュムレータにはるかに高い\ rho\theta解像度が必要になるという結果をもたらします。
もちろん、解像度を上げることの問題は、解像度を上げるためにより多くの計算能力とメモリが必要になることです。また、アキュムレータの解像度を均一に上げると、必要のない原点付近の解像度が無駄になります。
これを助けるためのいくつかのアイデア。
(x-a)^2 + (y-b)^2 = \rho^2
circle equation where
- x,y are the current pixel
- a,b are your chosen origin
- \rho is the radius
once the radius is known adjust your accumulator
resolution accordingly. You will have to keep
track of the center of each \rho \theta bin.
for transforming back to Cartesian
参照されている論文へのリンクは機能しませんが、標準のハフ変換を使用した場合、4 つの交点はデカルト座標で表されます。実際、ハフ変換で検出された 4 本の線は、「通常のパラメーター化」を使用して表現されます。
rho = x cos(theta) + y sin(theta)
したがって、4 つの線を識別する 4 つのペア (rho_i、theta_i) ができます。直交性をチェックした後 (たとえば、角度 theta_i を比較するだけで)、次の形式の 4 つの方程式系を解きます。
rho_j = x cos(theta_j) + y sin(theta_j)
rho_k = x cos(theta_k) + y sin(theta_k)
ここで、x と y は交点のデカルト座標を表す未知数です。
私は数学者ではありません。私は正直に立って喜んでいます...ハフから2)... xy平面上の任意の線は、 p = x cos theta + ysintheta
として記述できます。この表現では、pは法線距離、thetaは直線の法線角度です。実際のアプリケーションでは、角度thetaと距離pが量子化され、配列C(p、theta)が得られます。
CRC標準数学テーブルから解析幾何学、平面セクションの極座標...このような順序付けられた数のペア(r、theta)は、点pの極座標と呼ばれます。直線:p = Oからの線の距離、w=OXからOから線への垂線までの反時計回りの角度とします。正規形:r cos(theta --w)= p
。このことから、点は極座標空間にあると結論付けます。