ハフ変換

ハフ変換とは

xy画像空間中の直線は、aを傾き、bを切片として次の式で表されました。
 y=ax+b
つまり、直線というのは「傾き」と「切片」という二つのパラメータを持ったものであるということが分かります。
言い換えれば、直線は「ab二次元平面」の点として表すことができるということです。

「xy平面の直線」⇔「ab平面の点」ということは分かりましたが、ではxy平面の点というのはどうなるでしょう。
これはさっきの直線の式を変形してやった
 b=-xa+y \cdots(1)
からわかります。つまり、xy平面上の点はab平面上では直線になるのです。

点が直線になるというのはどういった意味があるのでしょうか?
これは、「ある点(x,y)を通るような直線は無数にある」という事実により起こるのです。

例えば(1,1)という点ですが、これは
 y=1x+0
 y=0x+1
 y=-1x+2
といった直線が通ります。これらの直線はそれぞれab平面上に(1,0),\ (0,1),\ (-1,2)という形でプロットされます。
式(1)によれば(1,1)という点はb=-a+1という点に移るとのことですが、確かに上の三点もこの直線を通っています。

このようなab平面への写像のことをハフ変換といいます。

直線検出

先ほどの説明をまとめますと
「xyの直線」⇔「abの点」 「xyの点」⇔「abの直線」ということでした。
ここで直線検出というのは次のようなプロセスで行います。
「xyのエッジの点」⇒「abの直線」⇒「abの直線の交点」⇒「xyの直線」

まず「xy座標」つまりある画像のそれぞれの画素におけるエッジの点をab平面上の直線に写像します。
ここでab平面にはたくさんの直線ができるわけですが、もし抽出したエッジの点が直線であればどこか一つ、交点ができるはずです。

例えば上の画像の例で考えましょう。
(x,y)=(-2,0)\rightarrow\ b=2a+0
(x,y)=(-1,1)\rightarrow\ b=1a+1
(x,y)=(3,5)\rightarrow\ b=-3a+5
これでab平面にそれぞれの直線をひくと交点(1,2)が浮かび上がります。
つまり、元のxy座標の3点がy=1x+2という点に乗っていた、ということが分かるのです。


javascript plugin Error : このプラグインで利用できない命令または文字列が入っています。
最終更新:2012年11月12日 19:48
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。
添付ファイル