2012-03-19 18 views
8

私のアプリケーションでは、カメラを使用して2つの画像をキャプチャして、それらの画像を比較したいと思います。はアンドロイドの2つの画像を比較します

どのように2つの画像を比較できますか?

編集: 比較最初の画像は、2番目の画像のピクセルと正確に同じです。

ありがとうございます。

+0

比較を定義します。 –

+0

「比較」とは何ですか?形態学的な類似性、色、頻度などを検索することができます – jose

+2

魔法の三脚を持っていない限り、これらの2つのカメラのキャプチャはピクセル単位で一致することはありません。 –

答えて

6

1. falseを返していない場合は高さが、一致していることを確認します。次に、幅が一致するかどうかを確認し、一致しない場合はfalseを返します。次に、一致しないピクセルを見つけるまで各ピクセルをチェックします。そうしたら、falseを返します。すべてのピクセルが一致する場合はtrueを返します。

擬似コード:

bool imagesAreEqual(Image i1, Image i2) 
{ 
    if (i1.getHeight() != i2.getHeight()) return false; 
    if (i1.getWidth() != i2.getWidth()) return false; 

    for (int y = 0; y < i1.getHeight(); ++y) 
     for (int x = 0; x < i1.getWidth(); ++x) 
      if (i1.getPixel(x, y) != i2.getPixel(x, y)) return false; 

    return true; 
} 

現実には、あなたはおそらく、ちょうどバイトを比較することができます場合は2次元配列として画像を扱いたいです。私はAndroidのイメージAPIを知らないが、getPixelは遅いかもしれない。

2.おそらく、画像をbyte64文字列に変換して比較することができます。 Android用

3. * * OpenCVのlibに:
は、画像圧縮のための機能に

**持っています。
Core.absdiff()b。詳細はCore.compare()

comparing two images

+0

質問の根本的な欠陥を指摘するコメントがありますが、この答えは概念的には正しいですが、 'getPixel'ではなく' getPixel'を使用します。著しい速度差。 – kabuko

+0

kabuko私はすでに私の答えで言及していますが、この方法はピクセルをpiexlとマッチさせるのが遅いかもしれません –

+0

はい、それは問題ありません。実際に誰かがこのルートを下っていくのであれば、私はAPIを使用して指摘していました。 – kabuko

関連する問題