2012-02-07 15 views
5

मुझे एंड्रॉइड पर जावा में दो छवियों के बीच पिक्सेल अंतर की गणना करने की आवश्यकता है। समस्या यह है कि मेरे पास कोड है जो गलत परिणाम देता है।एंड्रॉइड जावा प्रतिशत बिटमैप पिक्सेल अंतर दो छवियों के बीच

उदा। मेरे पास 3 बहुत ही समान चित्र हैं लेकिन उनमें से प्रत्येक की तुलना के लिए यह काफी अलग परिणाम देता है: pic1 बनाम pic2 = 1.71%; pic1 बनाम pic3 = 0.0045%; pic2 बनाम pic3 = 36.7%।

BitmapFactory.Options opt = new BitmapFactory.Options(); 
    opt.inPreferredConfig = Bitmap.Config.ARGB_8888; 
    opt.inSampleSize = 5; 
    Bitmap mBitmap1 = BitmapFactory.decodeFile("/sdcard/pic1.jpg", opt); 
    Bitmap mBitmap2 = BitmapFactory.decodeFile("/sdcard/pic2.jpg", opt); 

    int intColor1 = 0; 
    int intColor2 = 0; 
    for (int x = 0; x < mBitmap1.getWidth(); x++) { 
     for (int y = 0; y < mBitmap1.getHeight(); y++) { 
      intColor1 = mBitmap1.getPixel(x, y); 
      intColor2 = mBitmap2.getPixel(x, y); 
      //System.out.print(" ("+ x + ","+ y +") c:" + intColor1); 
     } 
     String resultString = String.valueOf(intColor1); 

    } 
    //now calculate percentage difference 
    double razlika = (((double)intColor1 - intColor2)/intColor2)*100; 

} 

मुझे लगता है कि मैं (, intColor1 (एक्स, वाई) बनाम intColor2 (एक्स वाई)) दोनों छवियों के लिए प्रत्येक पिक्सेल तुलना करने की आवश्यकता है, लेकिन मैं यह कैसे कर सकते हैं, और बाद में अंतर का प्रतिशत की गणना करने के?

+0

मुझे सभी समान छवियों को लाने और सूचीबद्ध करने के लिए आपको मदद मिलेगी ... –

उत्तर

2

आपके द्वारा उपयोग किए जा रहे प्रतिशत सूत्र गलत हैं। उदाहरण के लिए, # 333333 लगभग # 333332 के समान है (और आपका सूत्र दिखाता है कि वे 0.003% अलग हैं)। इसके अलावा # 323333 लगभग # 333333 के समान है, लेकिन आपका सूत्र दिखाता है कि वे 3% भिन्न हैं।

आपको प्रत्येक रंग पिक्सेल (Color.red(), Color.green(), Color.blue()) के प्रत्येक रचनात्मक बिट को निकालना चाहिए, उनमें से प्रत्येक के अंतर की गणना करें, और फिर संयुक्त अंतर प्रतिशत प्राप्त करें।

हालांकि दो छवियों का अंतर प्राप्त करने की यह विधि सरल और कुशल है, लेकिन इसकी एक बड़ी चेतावनी है: यदि छवियां सामग्री में समान हैं लेकिन एक पिक्सेल (उदाहरण के लिए दाईं ओर) द्वारा स्थानांतरित की गई हैं, तो आपकी विधि दिखाई देगी उन्हें पूरी तरह से अलग के रूप में।

+0

तो क्या एंड्रॉइड पर छवियों के बीच अंतर की गणना करने का कोई प्रभावी तरीका है? कोड उपयोगी से अधिक होगा! धन्यवाद – supermus

संबंधित मुद्दे