2012-02-21 26 views
3

私はカメラを動かすようにウェブカメラとフィーチャマッチングを使ってイメージングシステムを構築しました。私はカメラの動きを追跡することができます。私はhereに似たようなことをしていますが、入力としてウェブカメラフレームを除いています。ノイズの多い画像でのフィーチャ検出

「良い」画像では本当にうまく動作しますが、ノイズが非常に少ない(カメラのゲインが高い)画像を撮影すると、機能の検出とマッチングが邪魔になります。基本的に、それは良い特徴を検出しません、そしてそうするとき、フレームの間でそれらを正しく一致させることができません。

誰にでも良い解決策がありますか?フィーチャを見つけてマッチングするために使用される他の方法は何ですか?ここで

は非常に低い特徴を持つ2つのサンプル画像です:

Frame 1

Frame 2

+0

私たちがここで話している「低光」を示す画像を投稿できますか? – mevatron

+0

画像が追加されました。非常に低いコントラスト – Jason

+0

私は理解していません、あなたのイメージには何が見えますか? – jlengrand

答えて

3

私はphase correlationここにあなたの最善の策になるだろうと思います。これは、2つの画像間の位相シフト(すなわち、平行移動)を指示するように設計されています。それは、周波数空間で動作するため、特徴検出よりもはるかに弾力性があります(しかし免責はできません)。特徴検出器は空間的に動作する。もう1つの利点は、特徴検出方法と比較したときに速く非常にです。 OpenCVトランクで利用可能な実装は、サブピクセル精度のhereです。

しかし、あなたの画像は真ん中の折り目を除いてかなり「フィーチャーレス」なので、位相相関さえも問題があるかもしれません。雪の嵐の中で翻訳を検出しようとするようなものだと考えてください。あなたが見ることができるすべてが白であるならば、あなたは全く翻訳していないと言うことができません。つまり、whiteoutという言葉です。あなたの場合、アルゴリズムは「緑色の欠点」に悩まされている可能性があります。

低照度の環境でカメラの設定を調整すると良いでしょうか。虹彩を完全に開けましたか?あなたはより低いフレームレートで暮らすことができますか?露出時間を長く設定すると、カメラがより多くの光を集めることができ、モーションブラーを追加するだけで、より多くの機能を提供できます。あるいは、低照度がデフォルト環境であれば、IRカメラのように設計されたものが必要かもしれませんが、これらは高価になる可能性があります。それ以外の大きなレンズと長時間露光はあなたの友人です:)

Histogram equalizationは、画像のコントラストを改善することに関心があります。しかし、時にはそれは単にノイズを高めることができます。 OpenCVはequalizeHistと呼ばれるグローバルヒストグラム等化関数を持っています。よりローカライズされた実装のためには、Contrast Limited Adaptive Histogram EqualizationまたはCLAHEを要約します。 Hereはそれに関する良い記事です。 Thisページにいくつかの良い例といくつかのコードがあります。

+0

私は実際にあなたが書いた機能のために、昨日OpenCVの最新のSVNをダウンロードしていました。 (ありがとう!:)) openCVのインストールはうまくいっていましたが、x64アーキテクチャ上で動作させるには多くの障害がありました。そのほとんどは、正しいファイルを見つけて使用しています。 しかし、ありがとうございました!私はこれをできるだけ早く試みます。 – Jason

+0

あなたが私を助けることができるかどうか疑問に思っていました。私はあなたのphaseCorrelationコードを使用してopenCVで作業しています。私は行列Cを取得する方法を見つけようとしています - 私はCのように見えます。 このコードをメソッドに追加しました(_resultは現在関数のparamです)。 _result.create(C.size()、C.type()); \t Mat result = _result.getMat(); \t UCHAR *データ= result.ptr ()。\t for(int i = 0; i Jason

関連する問題