ハフ変換は画像変換手法の一種で、画像の中から直線や円の要素を持つオブジェクトを検出する方法として良く知られています。画像から直線や円を検出する為には、それらの形状情報を画像から抽出する必要がありますが、ハフ変換では画像空間からρ-θパラメータ空間への変換を行うことで、図形要素を抽出します。
ハフ変換の基本原理
ハフ変換では画像空間からρ-θパラメータ空間への変換を行う、と上述しましたが、具体的に示します。ある画像空間上に孤立点があり、点の座標が(x、 y)である場合、パラメータ空間への変換を行うとどのような結果が得られるのか、考えることにします。
ρ-θパラメータ空間上のある点(ρ, θ)に座標(x、 y)を射影していく形になりますが、ここでρとθはそれぞれ次のように表されます。
ρ : 座標(x、 y)を通る直線に対し、原点から垂線を下ろしたときの長さ
θ : 座標(x、 y)を通る直線に対し、原点から垂線を下ろしたときにx軸となす角度
画像空間上に孤立点のみが存在する場合、右図のようにその点を通る直線群は無数に存在することになり、
結果として(ρ, θ)も無数に存在することになります。
最初の図は孤立点のみでしたが、2.点追加して下図のような短い斜線となった場合、パラメータ空間に変換した結果はどのようになるでしょうか。
この結果を見ると、3.点それぞれを変換した結果が重なり合っている点が存在していることがわかります。これは、重なり合った点(ρ、θ)によって表される画像空間の直線上に、3.点が存在していることを示しています。また、パラメータ空間上で重なっている点それぞれが、画像空間上のどの点から変換されたものかは既知であるので、直線の始点及び終点の情報を得ることができ、結果として画像空間上の直線を検出する事ができます。
実際上はこの例のように理想的な直線が画像空間上に描かれていることは稀であり、画像の中には様々なオブジェクトが存在しているケースが殆どですので、閾値などを設けて最も直線らしい要素を検出します。
ハフ変換による直線検出
下図はガントリークレーンの画像です。この画像に対してエッジ検出を行い、その結果をパラメータ空間に変換してみます。
孤立点の例で実施したように変換を行うと、以下のような結果が得られます。
孤立点の画像から得られた結果とは異なり、画像空間上の様々なオブジェクトが射影されることによって、複数の線がρ-θパラメータ空間上で重なり合っていることが解ります。
ここで、多くの線が重なり合っている点(ρ、θ)の中から、最も直線が存在する可能性が高い組み合わせを探します。局所最大値をρ-θパラメータ空間から2.個抽出し、元の画像空間上に上書き表示すると以下の結果が得られます。
ハフ変換の応用や、様々な画像変換
ハフ変換は直線だけでなく円の検出にも用いられます。円検出の場合は円の中心座標(x、 y)と半径Rを示す3.つのパラメータに変換されることになりますので、3.次元のパラメータ空間を扱うことになります。半径が既知の場合は直線検出の場合と同じく2.次元のパラメータ空間上で取り扱うことができます。
ここでご紹介したハフ変換以外にも、周波数領域への変換など、画像空間領域から別の領域に変換するアルゴリズムが数多く存在しており、画像空間領域では検出できない特徴を識別できます。一般的な画像変換には次のようなものがあります。
- ラドン変換: ファンビームや平行ビームの投影データから画像を復元するために使用します。
- 離散コサイン変換: 静止画及び動画の圧縮に主に用いられます。
- 離散フーリエ変換: フィルター処理及び周波数解析で使用します。
- ウェーブレット変換: 離散ウェーブレット解析や、画像のノイズ除去および融合を行うために使用します。
ハフ変換の主な用途・活用事例
- 生産ラインにおける不良品検出や部品数のカウント(断線検出、円検出)
- 自動車・建設機械等の先進運転支援システム(道路の白線認識等)