2012-02-07 25 views
5

Tôi cần tính toán sự khác biệt về điểm ảnh giữa hai hình ảnh trong java trên Android. Vấn đề là tôi có mã trả về kết quả không chính xác.Tỷ lệ phần trăm bitmap của phần trăm java Android giữa hai hình ảnh

Ví dụ: Tôi có 3 hình ảnh rất giống nhau nhưng nó trả về các kết quả khác nhau đáng kể so với mỗi kết quả: pic1 vs pic2 = 1,71%; pic1 vs pic3 = 0,0045%; pic2 vs 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; 

} 

tôi nghĩ rằng tôi cần phải so sánh mỗi pixel cho cả hình ảnh (intColor1 (x, y) vs intColor2 (x, y)), nhưng làm thế nào tôi có thể làm điều đó, và sau đó tính toán chênh lệch tỷ lệ phần trăm?

+0

tôi phải tìm nạp và liệt kê tất cả các hình ảnh tương tự sẽ giúp bạn ... –

Trả lời

2

Tỷ lệ phần trăm công thức bạn đang sử dụng sai. Ví dụ: # 333333 gần giống với # 333332 (và công thức của bạn cho thấy chúng khác nhau 0,003%). Ngoài ra # 323333 gần giống với # 333333, nhưng công thức của bạn cho thấy chúng khác nhau 3%.

Bạn nên trích xuất từng bit soạn thảo của mỗi pixel màu (Color.red(), Color.green(), Color.blue()), tính toán sự khác biệt của từng điểm ảnh và sau đó nhận được phần trăm chênh lệch kết hợp.

Trong khi phương pháp này nhận được sự khác biệt của hai hình ảnh là đơn giản và hiệu quả, nó có một caveat lớn: nếu các hình ảnh giống hệt nhau trong nội dung nhưng chuyển bởi một pixel (bên phải ví dụ), phương pháp của bạn sẽ hiển thị chúng hoàn toàn khác nhau.

+0

Vì vậy, có cách nào hiệu quả để tính chênh lệch giữa các hình ảnh trên android theo phần trăm không? Mã sẽ hữu ích hơn! cảm ơn – supermus

Các vấn đề liên quan