![]() |
Member |
Research |
> 似顔絵師システムPICASSO |
> PICASSO On Web |
> Hough変換 |
> 溶接欠陥検査 |
Link |
Service |
> アクセス |
Hough変換の概要Hough変換の原理とその応用Hough変換の基本原理Hough変換の基本原理は、P.V.C.Houghが米国のPatentで1962年に提唱した(1)。この中では、次のようにHough変換の原理が導入された。 x-y座標のある点(x0, y0)を通過する直線群は、傾きa、切片bをパラメータとして y0=a·x0 + b (1) で表せられる。これは、a-bパラメータ空間では、 b = -a·x0 + y0 (2) となり、可能な全てのa, bの組み、(a, b)の描く軌跡は1本の直線となる。したがって、x-y座標上の点(xi, yi)i=1,2,,,Nは、a-bパラメータ平面では、N本の直線で表される。ここで、図1(a)に示すように、(xi, yi)i = 1,2,,,Nが1本の直線上に乗っている場合、即ち、y =a0·x+b0上にある場合、図1(b)に示すように、a-bパラメータ平面では、これらのN本の直線は、(a0, b0)の1点で交差する。この性質を利用することにより、x-yパラメータ平面上で最も多くの点を通過する直線を求めるためには、a-bパラメータ平面上で最も多く直線が交差している点を見つければよい。
図1 傾き-切片(a-b)パラメータのHough変換 その後、Rosenfeldが著書(2)の中で、このパラメータ平面を二次元配列に対応させ、画像中の直線要素を抽出する具体的な方法として詳しく紹介した。これを契機にして、画像中より直線要素を抽出するこの手法が一般的にHough変換と呼ばれるようになり、画像処理基本手法の一つとして定着した。 ところでx-y座標系の直線は、傾きと切片だけで表現するのが唯一の方法ではなく、
のように極座標表現することもできる(このような三角関数の合成関数をHough曲線と、しばしば呼ぶ)。これは、図2に示すように一つの直線を垂角θ-距離ρパラメータで表現したものである。
図2 垂角-距離(θ - ρ)パラメータのHough変換 式(1)は
に容易に変形でき、これは、傾き-1/tanθ、切片ρ/sinθとなり、数学的に式(1)と等価である。ところで、図3に示すように、式(1)を変換式とした場合、垂角θ→0になると、切片b→±∞になり、また、垂角θ→π/2となると、傾きa→±∞となる。従って、パラメータ空間を表現するために確保するな二次元配列は無限大のサイズが必要となる。この意味から、このようなa-bパラメータ表現法は禁止的である。Duda & Hartはこのことを指摘し、以後、Hough変換では一般に、このθ-ρパラメータ表現を用いるようになった。
図3 (a-b)パラメータとθの関係 典型的なHough変換の直線検出原理Hough変換による直線検出の原理は、図4に示すように、パターン平面上にあるN個のエッジ点列(xi, yi) : i = 1, 2,,,Nに対して、
なる変換関数により、θの関数ρを定め、用意したθ-ρパラメータの二次元配列(K×L)にその軌跡を累積する。ここで描かれる曲線は、式(6)のように合成され、
振幅と位相がエッジ点毎に決まる正弦曲線(Hough曲線)となる。N個のエッジ点列全てにこの操作を適用した後、この累積度数分布から極大点群を抽出すれば、その極大点群が対応するx-yパターン平面上の直線群となる。これは、θ-ρパラメータ平面上の一点が、x-yパターン平面上の直線一本に対応しているという原理に基づく。
図4 Hough変換の直線検出原理 ここで、以上の直線検出原理の中で用いたHough変換の基本的な性質についてまとめておく。 性質1 : (x, y)を通過する全ての直線群は、パラメータ平面上の一本のHough曲線で表される。図5にこれを示す。 性質2 : パラメータ平面上の一点は、直線一本に対応する。これを図6に示す。 性質3 : 共線上の任意の二点のHough曲線は、パラメータ平面上の(0≦θ<πの区間)でただ一回だけ交差する。これを図7に示す。 性質4 : x-y平面の等間隔な平行直線群は、パラメータ空間でρ軸に平行な等間隔なピーク群として現れる。角度方向に対しても、円接線群はθ軸に平行な等間隔なピーク群として現れる。これを図8に示す。このように、パラメータ空間をθ、ρとも、等間隔に分割すると、この意味で均一な分解能の直線検出感度が得られる。
図5 Hough変換の基本的性質1
図6 Hough変換の基本的性質2
図7 Hough変換の基本的性質3
図8 Hough変換の基本的性質4 Hough変換の問題点Hough変換による直線検出は、
などの有益な特徴があるが、以下に示すような問題点も数多く存在する。
これらの1, 2, 3のような問題について、RVHT(12)、FIHT(13)、CHT(14)のような高速化、効率化、高精度化アルゴリズムも数多く開発されている。しかし、これらの効率化アルゴリズムは、通常のHough変換による直線検出全体のプロセスに手を加え改良したものが多い。それゆえ、これらのアルゴリズム中には高速化を追求するあまり精度を犠牲にするというように、特定条件に特化したものや、拡張性に乏しいものなどもある。それに対し、以下で述べる拡張Hough変換(8)(9)は、変換アルゴリズム自体を改良するスタンスに立つものではなく、パラメータ平面を再構築することにより、所望の変換関数を設計し、上のような問題解決を行うことができる。言い換えれば、拡張Hough変換は、どのように変換関数を設計すべきかという変換関数設計法の一方針である。この設計方針にしたがって変換関数を設計することにより、効率化、特に高精度化について、所望の変換関数を得ることができる。 |