1

画像比較アプリを開発しました。ここで私は色を比較しています。参照チャートはデータベースにあります。私のアプリの作業は..カメラで色をキャプチャするようなものです。カメラは意図ではなくカメラ API によって制御されます。キャプチャされた画像は参照チャートと比較されます。私の問題は光です。白い背景で画像をキャプチャしています..しかし、光の変化に応じて、出力は大きく異なります。私はユークリッド距離を使用しています。光の変化により、正しい出力が得られませんでした。光の問題を解決するために、誰か提案がありますか?? 画像を正規化する方法はありますか?? 私はアンドロイド2.2を使用しています

4

3 に答える 3

0

たぶん、画像比較のための便利なオプションを提供するいくつかのオープンソース画像処理ライブラリを使用できます。

多数の画像操作機能を備え、Android と簡単に統合できる OpenCV を使用することをお勧めします。

OpenCV

これは、光の問題を解決するのに役立つかもしれません。

于 2013-02-21T10:21:33.040 に答える
0

このように色の違いを確認したい場合:

http://en.wikipedia.org/wiki/Color_difference

カタラーノ フレームワークを使用できます。

Java と Android で動作します。

色差を使用した例:

float[] lab = ColorConverter.RGBtoLAB(100, 120, 150, ColorConverter.CIE2_D65);
float[] lab2 = ColorConverter.RGBtoLAB(50, 80, 140, ColorConverter.CIE2_D65);

double diff = ColorDifference.DeltaC(lab, lab2);
于 2014-01-26T05:42:48.167 に答える
0

明るい背景に直面している場合は、両方の画像のすべてのピクセルの ARBB 値を使用することをお勧めします。両方の画像の ARGB 値を比較できます。最近、1 つのプロジェクトでこのタスクを実行しました。ここに小さなコードがあります。

  • その方法は、画像の平均ARGBカラーを提供します。
  • 両方の画像の平均値を設定したら、2 つのコレクション比較として単純に比較します。
private int[] getAvgARGB(int[] imagePixels ){
      int [] argbColection  = new int[4];
      int pixcel=0 , Aavg=0 ,Ravg =0, Gavg=0 ,Bavg=0 ;
      int pixcelSize  = 0 ; 
      for(int i = 0 ; i<imagePixels.length; i++){
          pixcel = imagePixels[i];  //get pixel value (ARGB)
          int A = (pixcel >> 24) & 0xFF; //Isolate Alpha value...
              int R = (pixcel >> 16) & 0xFF; //Isolate Red Channel value...
              int G = (pixcel >> 8) & 0xFF; //Isolate Green Channel value...
              int B = pixcel & 0xFF; //Isolate Blue Channel value...
              Aavg += A ;
              Ravg += R ;
              Gavg += G ;
              Bavg += B ;
        }
   pixcelSize = imagePixels.length ;  

   argbColection[0] = Aavg/pixcelSize ;
   argbColection[1] = Ravg/pixcelSize ; 
   argbColection[2] = Gavg/pixcelSize ;
   argbColection[3] = Bavg/pixcelSize ;

   return argbColection ;
}
于 2013-06-19T11:42:47.463 に答える