私はただ冒険的であり、コンピューター ビジョンへの最初の赤ちゃんの一歩を踏み出しています。ハフ変換を自分で実装しようとしましたが、全体像がわかりません。ウィキペディアのエントリと、リチャード・デュダとピーター・ハートによる元の「写真の線と曲線を検出するためのハフ変換の使用」を読みましたが、役に立ちませんでした。
もっと親しみやすい言葉で説明してくれる人はいますか?
私はただ冒険的であり、コンピューター ビジョンへの最初の赤ちゃんの一歩を踏み出しています。ハフ変換を自分で実装しようとしましたが、全体像がわかりません。ウィキペディアのエントリと、リチャード・デュダとピーター・ハートによる元の「写真の線と曲線を検出するためのハフ変換の使用」を読みましたが、役に立ちませんでした。
もっと親しみやすい言葉で説明してくれる人はいますか?
画像内の線を検出するためにハフ変換がどのように機能するかについて、非常に基本的な視覚的な説明を次に示します。
四角形座標の線、つまりy = mx + bを考える方が一般的です。ウィキペディアの記事にあるように、線は極形式でも表すことができます。ハフ変換は、この表現の変化を利用します (とにかく、線についてです。この議論は、円、楕円などにも適用できます)。
ハフ変換の最初のステップは、イメージを一連のエッジに縮小することです。Canny エッジ検出器は頻繁に選択されます。結果のエッジ イメージは、ハフ プロセスへの入力として機能します。
要約すると、エッジ画像で「照らされた」ピクセルは極形式に変換されます。つまり、それらの位置は、 xとyの代わりに、方向thetaと距離r - を使用して表されます。(画像の中心は、この座標変更の基準点として一般的に使用されます。)
ハフ変換は本質的にヒストグラムです。同じ theta と r にマッピングされたエッジ ピクセルは、画像内の線を定義すると見なされます。発生頻度を計算するために、thetaとrが離散化されます (多数のビンに分割されます)。すべてのエッジ ピクセルが極形式に変換されると、ビンが分析されて元の画像の線が決定されます。
最も頻繁に使用されるN 個のパラメーターを探すのが一般的です。または、 nより小さいカウントが無視されるようにパラメーターにしきい値を設定します。
この回答が最初に提示した情報源よりも優れているかどうかはわかりません-あなたがこだわっている特定の点はありますか?
ハフ変換は、線 (または円、または他の多くのもの) を表す最も可能性の高い値を見つける方法です。
ハフ変換に線の画像を入力として与えます。この画像には、線の一部であるピクセルと背景の一部であるピクセルの 2 種類のピクセルが含まれます。
線の一部である各ピクセルについて、可能なパラメータのすべての組み合わせが計算されます。たとえば、座標 (1, 100) のピクセルが線の一部である場合、それは勾配 (m) = 0 および y 切片 (c) = 100 の線の一部である可能性があります。 m = 1、c = 99 の一部であること。またはm = 2、c = 98; またはm = 3、c = 97; 等々。直線方程式 y = mx + c を解いて、考えられるすべての組み合わせを見つけることができます。
各ピクセルは、それを説明できる各パラメーター (m と c) に 1 票を与えます。したがって、ラインに 1000 ピクセルが含まれている場合、m と c の正しい組み合わせには 1000 票が含まれることが想像できます。
最も投票数の多い m と c の組み合わせが、行のパラメーターとして返されます。