2013-02-21 94 views
1

我開發了一個圖片比較應用程序。我在這裏比較顏色。參考圖表在數據庫中。我的應用程序的工作就像..通過相機捕捉顏色。相機不受意圖控制。並將拍攝的圖像與參考圖進行比較。我的問題是輕。我在白色背景下捕捉圖像......但根據光線變化,輸出變化很大。我正在使用歐幾里德距離。通過光線變化,我無法獲得正確的輸出。有沒有人有任何建議:解決光線問題。有沒有任何方法來規範圖像。 即時通訊使用安卓2.2圖片比較android

+0

這裏沒有人來幫我。? – Nisha 2013-02-21 09:37:08

+0

http://stackoverflow.com/questions/843972/image-comparison-fast-algorithm – Shiv 2013-02-21 10:34:45

+0

http://stackoverflow.com/questions/11045263/opencv-for-android-image-compare – Shiv 2013-02-21 10:35:54

回答

0

也許你可以使用一些開源圖像處理庫帽子提供圖像比較方便的選項。

我建議你使用OpenCV,它具有衆多的圖像處理功能,你可以很容易地將它與android整合。

OpenCV

可能這可以幫助您解決的小問題。

0

如果你面對淺色背景,那麼我建議使用兩個圖像的所有像素的ARBB值, 你可以比較兩個圖像的ARGB值,我最近在我的一個項目中經歷了這個任務。這裏是它的小代碼。

  • 該方法會給你圖像的平均ARGB顏色。
  • 將其具有兩個圖像的平均值後,你只需簡單地比較兩個集合比較
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 ; 
} 
0

如果你想檢查這樣的色差:

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

您可以使用Catalano Framework,

它適用於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);