web-dev-qa-db-ja.com

ハフ変換による長方形の検出

この論文 に基づいて ハフ変換 を使用して長方形検出を実装しようとしています。

Matlabを使用してプログラムしましたが、平行ペア線と直交ペアを検出した後、これらのペアの交差を検出する必要があります。私の質問は、ハフ空間での2線交叉の品質についてです。

4つの連立方程式を解いて交点を見つけました。これらの交点はデカルト座標空間または極座標空間にありますか?

26
Esamt

紙について疑問に思っている人のために、それは次のとおりです。

CláudioRositoJungとRodrigoSchrammによるウィンドウ化されたハフ変換に基づく長方形の検出。

論文によると、交点は極座標として表されており、明らかに実装が異なる場合があります(コードを表示することだけがわかります)。

あなたが彼の表記法と一致していると仮定すると、あなたのピークは次のように表現されるべきです:

Peaks

次に、セクション4.3の式(3)で与えられるピークペアリングを実行する必要があります。

equation 3

どこ - T_theta はangular平行線に対応するしきい値と enter image description here は、同様の長さの線に対応する正規化されたしきい値です。

7
tzenes

ハフ空間の精度は、2つの主な要因に依存する必要があります。

アキュムレータはハフ空間にマッピングされます。アキュムレータ配列をループするには、アキュムレータがハフ空間を個別のグリッドに分割する必要があります。

線形ハフ空間の精度の2番目の要素は、元の画像の原点の位置です。\rhoの特定の変更に対して\ thetaのスイープを実行するとどうなるかを少し見てください。原点の近くでは、これらのスイープの1つは、画像のエッジ近くのスイープよりもはるかに少ないピクセルをカバーします。これは、デカルトに戻すときに同じレベルの精度を達成するために、画像のエッジの近くでアキュムレータにはるかに高い\ rho\theta解像度が必要になるという結果をもたらします。

もちろん、解像度を上げることの問題は、解像度を上げるためにより多くの計算能力とメモリが必要になることです。また、アキュムレータの解像度を均一に上げると、原点付近の不要な解像度が無駄になります。

これを助けるためのいくつかのアイデア。

  1. 原点を画像の真ん中に配置します。コードで画像の自然な左下または左上を使用するのとは対照的です。
  2. 正方形に到達できる最も近い画像を使用してみてください。特定の領域の画像が長くなるほど、解像度トラップがエッジでより顕著になります
  3. 画像を4/9/16などの異なるアキュムレータに分割し、それぞれがそのサブ画像の中央に原点を配置してみてください。長方形を検出するために各アキュムレータの結果をリンクするには少しオーバーヘッドが必要ですが、解像度をより均等に広げるのに役立つはずです。
  4. 最終的な解決策は、原点からの距離に応じて解像度を直線的に上げることです。これは、

    (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
myk_raniu

参照されている論文へのリンクは機能しませんが、標準のハフ変換を使用した場合、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は、交点のデカルト座標を表す未知数です。

1
mrucci

私は数学者ではありません。私は正直に立つつもりです...
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)==。このことから、点は極座標空間にあると結論付けます。

0
gerard