基準画像と指定ディレクトリ内の画像を比較し、
位置ズレ(ドリフト)を検知、除去処理を行う


画像の位置ズレ除去アプリケーションソフト        (2009/03/15)

ちょっと画像処理 (Detection and elimination of drift) のUSBカメラからの画像入力をファイルからの
画像入力に変更したバージョン。  USBカメラ版は こちら からダウンロードしてください。
この画像処理プログラムは、独自実装なので参照コードは存在しません が、周知の画像処理技術の為、
他の如何なるプログラムコードとの類似性を完全否定するものではありません。

driftimgload.zip
(33,117,758 byte)
md5: f8757f4ba312b1e3f3431cafe7a1085e
sha1: d8ad61e660268ce78c41ff873d69a94fe3b33caa


はじめに

コンピューター画像処理は、様々な場所で利用されています。ビデオカメラの手ブレ補正や、顔認識
などは、機器の内部で高度な画像処理が行われていると推測されます。

ここでは、ベルトコンベアーを同一形状の物体が流れていくのを計測するケースを想定してみます。
ストロボとカメラを連動させて画像を取り込めば、ブレの無い画像を得る事は可能ですが、位置ズレ
なしに画像を得る事は苦労を要します。 メカニカルな制御方式も可能でしょうが、この手法では相当
のコストを覚悟する必要があると思いますが如何でしょうか?

大体の位置で画像を取り込み、位置ズレをソフト的に取り除く事も選択肢の一つになりえませんか?


画像の位置ズレ(ドリフト)の除去方法の考え方

1、評価基準点を象徴する特徴量を定義します。
  (特徴量の定義方法は多数存在しますので、利用に合わせ適切な方式を採用します)
  同一画像で位置ズレのみが発生している場合は、容易に除去が可能ですが、類似画像で
  位置あわせをする為の特徴量の選定は、少し工夫が必要かもしれません。

2、処理画像中で、元画像の評価基準点の特徴量と同じ特徴量を持つ部位を検索します。

3、特徴量が、元画像と処理画像で最も近い部分を同一点と見なし、座標のズレ量を算出します。

4、算出したズレ量をもとに、画像の移動処理を行うことで、ドリフトが除去されます。



処理

基となる画像
基準画像
元画像から、基準となる画像を作成し、処理の基準点にするポイントを選択します。
基準点は、特徴のあるポイント(複雑な形状の部分)を指定します。平坦な部分を 選択すると、特徴量に乏しく検索で失敗します。

処理対象画像
元画像から切り出し場所をずらして作成した処理用画像
この処理用画像中で、基準画像で設定した処理の基準点の座標から、X軸、Y軸
それぞれの方向に検索範囲を設定した領域を、関心領域(ROI: Region Of Interest)
と呼び、この範囲内で基準画像の基準点と同じ特徴を持つ部位を検索します。

このケースでは、基準点の下方向の場所で、基準画像の基準点と同じ特徴を持つ
ポイントが見つかります。

処理対象ボケ画像
元画像の平滑化処理後、切り出し場所をずらして作成した処理用画像
平滑化処理により、画像データが変更されたので、基準画像で設定した基準点と
特徴量が完全に一致する部位は存在しなくなった。
判断基準とする特徴量の定義が、類似画像に対しても有効に機能する方式なら、
基準画像と処理画像間で、正しく対応する場所を抽出する事が出来が、使用する
方式によっては、場所の特定が出来ないケースも発生してしまう。


位置合わせ処理の説明画像
sample データを使用した説明 (類似画像での位置合わせ処理)

差分画像に関する説明画像
sample データを使用した説明 (位置ズレ補正後の画像と原画像との差分を抽出した画像)

ソフトに関して

アプリケーションソフトは、imgload.exe で、利用例として run.bat が添付されています。
driftimgload.zip をダウンロードし、展開したディレクトリで run.bat を実行すれば、プログラムの
動作は、とりあえず確認できます。

プログラムが起動しましたら、表示させるモードをプルダウンメニューから選択して下さい。
基準画像BMPフ表示:
  基準画像となるBMPファイルを表示
BMP画像ファイル連続表示:
  画像格納ディレクトリ配下の画像を連続的に読み込み表示します。
  (無処理)
ドリフト除去画面表示:
  画像格納ディレクトリ下から読み込んだファイルと、基準画面との
  ズレを算出し、ズレを除去した画像を表示します。
ドリフト除去後の差分表示:
  画像格納ディレクトリ下から読み込んだファイルと、基準画面との
  ズレを除去した画像と、基準画像との差分を表示します。


このプログラムは、 BMPファイル(無圧縮の 24ビット又は 32ビットの形式)の所在を指定した
ディレクトリから画像データを逐次読み出して表示します。 入力可能な画像データの大きさは、
300x700画素以上 1500x1500画素以下です。
起動時に指定した標準画像(BMPファイル)中の指定点を基準に、画像格納ディレクトリ中
ある画像(BMPファイル)との位置ズレを検知し、取り除き表示する事が可能です。
また位置ズレを補正した画像と標準画像との差分を表示する事も出来ます。同一画像から
作成された、位置ズレ(ドリフト)画像の場合は、ドリフト分を削除すれば同一の画像となるので、
差分は0となり画面は黒くなります。
類似画像(ボケ画像等)の場合は、似た画像の特徴量を探して、画像の位置合わせは行えますが、
画像は同一でないため、差分をとると微妙な違いが抽出できます。

プログラムの展開先は、AHCI接続されている HDD を推奨します。 ディスクからの画像
読み出しに多くの時間を使用してしまいますので、IDEモードで動作しているディスクでは、
遅さが際立ってしまいます。 (AHCI:3Gbps、IDE:133MB/sec 単位が異なります)


 imgload.exe 使用方法

コマンドの起動時に、基準画像となる画像ファイルと、その画像ファイル中で判断に使用する
場所の座標 XY と、処理対象画像が格納ディレクトリの場所を指定します。
座標系は、左下を原点とし、右方向がX軸の正の向き、上方向がY軸の正の向き、になります。
補足事項は、README.txt を参照してください。

 imgload.exe  基準画像  基準点のX座標  基準点のY座標  処理対象画像の格納場所

 Ex. imgload base.bmp 390 400 bmp_dir
      base.bmp: 標準画像
      390: 標準画像における、ドリフト検知点のX座標
      400: 標準画像における、ドリフト検知点のY座標
      bmp_dir: 画像格納ディレクトリ(処理対象画像の格納場所)



ファイル構成の詳細
 zip ファイルを展開すると、以下の構造でデータが配置されます。

+ imgload.exe  プログラム本体
+ base.bmp    標準画像として使用する、画像データ(BMPファイル)
+ README.txt   READMEファイル
+ run.bat    使用例として用意したバッチファイル
++bmp-data    画像データ格納用ディレクトリ
 +photo001.bmp  サンプル画像データ
   :       以下の画像で、標準画像との間に位置ズレを生じた画像
 +photo018.bmp     標準画像、最大値フィルタ処理画像、平均化処理画像


最後に

一般の人が位置ズレ補正を利用するケースは皆無だとは思いますが、参考までに公開します。
もし興味が持てるようでしたら、独自の画像を用意して動かしてみてください。

このコンテンツが、コンピューター画像処理の分野に、興味を持つきっかけとなれば幸いです。
本件に関して不具合等が見つかりましたら、現時点で対応に関して未定で申し訳ありませんが
vision@cryst.tv までご連絡頂ければ幸いです。



go to TopPage go to CategoryTop