この論文 に基づいて ハフ変換 を使用して長方形検出を実装しようとしています。
Matlabを使用してプログラムしましたが、平行ペア線と直交ペアを検出した後、これらのペアの交差を検出する必要があります。私の質問は、ハフ空間での2線交叉の品質についてです。
4つの連立方程式を解いて交点を見つけました。これらの交点はデカルト座標空間または極座標空間にありますか?
ハフ空間の精度は、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は、交点のデカルト座標を表す未知数です。
私は数学者ではありません。私は正直に立つつもりです...
Hough 2)から... xy平面上の任意の線はp = x cos theta + y sinthetaとして記述できます。この表現では、pは法線距離、シータは直線の法線角度です。実際のアプリケーションでは、角度シータと距離pが量子化され、配列C(p、theta )。
CRC標準数学表から解析幾何学、平面セクションの極座標...このような順序付けられた数のペア(r、シータ)は点pの極座標と呼ばれます。直線:p = Oからの線の距離、w = OXからOから線への垂線までの反時計回りの角度とします。正規形:r cos(theta --w p)==。このことから、点は極座標空間にあると結論付けます。