1

ここでは、IR フィルターを使用して cmos カメラでキャプチャした 2 つの連続したフレームを添付しています。オブジェクト チェッカー ボードは、画像のキャプチャ時に静止していました。しかし、2 つの画像の差は約 31000 ピクセルです。これはどのような種類のノイズか教えてください。どうすれば除去できますか。これらのノイズを除去できるアルゴリズムまたは関数を提案してください。ありがとう。下手な英語でごめんなさい。

画像 1 : [1]: http://i45.tinypic.com/2wptqxl.jpg

画像 2: [2]: http://i45.tinypic.com/v8knjn.jpg

4

3 に答える 3

2

これらの画像をよく見ると、@Aki Suihkonen に同意する必要があります。私の見解では、主なノイズは jpeg 圧縮によるもので、シャープなエッジが「鳴り」ます。画像に「斑点除去」タイプのフィルターを試して、これが違いを生むかどうかを確認します. これを実装するのに役立つ情報は、このリンクにあります。

より手っ取り早く汚れた方法では、多くの標準ツールのいずれかを適用します。たとえば、画像がと である場合:ab

(i) ガウス フィルターを使用して画像を平滑化するだけで、画像間のノイズの差を 1 桁減らすことができます。例えば:

  h=fspecial('gaussian',15,2);
  a=conv2(a,h,'same');
  b=conv2(b,h,'same');

(ii) 適応フィルタリングによるノイズの低減

 a = wiener2(a,[5 5]);
 b = wiener2(b,[5 5]);

(iii) ヒストグラム等化を使用して強度値を調整する

 a =  histeq(a);
 b =  histeq(b);

(iv) 強度値を指定範囲に調整する

 a = imadjust(a,[0 0.2],[0.5 1]);
 b = imadjust(b,[0 0.2],[0.5 1]);
于 2012-11-14T07:45:10.273 に答える
2

そのノイズは、カメラ センサー(Bayer から RGB への変換)に起因するように見えます。まだ市松模様が残っています。

また、ロッシー jpg もプロセスに大きく貢献します。まず、生の画像にアクセスできる必要があります。

これらの特定の画像から、最初にエッジ検出フィルター (Sobel Horizo​​ntal および Vertical) を使用して、平坦な領域の中央値/ローカル ヒストグラムの均等化を選択するマスクを作成し、チェッカー ボード縮小フィルターをエッジに適用します。ポイントは、単一のフィルターで jpeg のリンギング アーティファクトとギザギザのエッジの両方をうまく処理できるものはないということです。次に、本当の問題は、他にどのような種類の画像を処理する必要があるかということです。

コメントから:コーナーポイントを正確にする場合、解決策は機能(サブピクセル解像度のコーナーポイント)を検索し、あるポイントセットから他のコーナーの画像セットへのマッピングを作成し、これらのセットを相互に変換する最適なアフィン変換行列。このマトリックスを使用して、他の画像のリサンプリングを実行できます。

幸運なことに、可能性のあるすべてのサブピクセル位置を力ずくで検索することなく、サブピクセル解像度で動きベクトルを推定できます。一致したフィルターを計算すると、完全に一致する可能性のある候補の局所的な最大値が得られます。しかし、これだけではありません。近くのピクセルの一致したフィルター出力を調べることで、ピーク位置のより正確な近似値を計算することができます。完全一致の場合、出力は対称でなければなりません。それ以外の場合、整合フィルターの「エネルギー」は 2 番目に最適な場所に偏ります。(2次多項式フィット + 最大値の検出が機能します。)

于 2012-11-14T06:11:03.300 に答える
0

画像が白黒であるはずなのにグレースケールでキャプチャした場合、ノイズによる違いが生じる可能性があります。しきい値を定義することで、画像を白黒に変換できます。そのしきい値より小さい値を持つピクセルには 0 を割り当て、そのしきい値より大きい値には 1 を割り当てるか、グレースケール範囲 (おそらく 255) を指定します。画像がIであると仮定し、グレースケール画像レベルが 0 から 255 であると仮定して白黒にするために、100 のしきい値を選択すると仮定します。

ind = find(I < 100);
I(ind) = 0;
ind = find(I >= 100);
I(ind) = 255;

これで、白黒の画像ができました。もう一方の画像についても同じことを行います。カメラと被写体が移動した場合、非常に小さな違いが得られるはずです。

于 2012-11-14T05:53:09.693 に答える