2012-02-07 22 views
5

Necesito calcular la diferencia de píxeles entre dos imágenes en Java en Android. El problema es que tengo un código que arroja resultados inexactos.porcentaje de Android Android porcentaje de mapa de bits diferencia de píxeles entre dos imágenes

E.g. Tengo 3 imágenes muy similares, pero devuelve resultados significativamente diferentes para la comparación de cada uno de ellos: 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; 

} 

creo que tengo que comparar cada píxel de las dos imágenes (intColor1 (x, y) vs intColor2 (x, y)), pero ¿cómo puedo hacer eso, y para calcular posteriormente diferencia porcentual?

+0

tengo que buscar y listar todas las imágenes similares ¿me ayudo? –

Respuesta

2

La fórmula de porcentaje que está utilizando es incorrecta. Por ejemplo, # 333333 es casi idéntico a # 333332 (y su fórmula muestra que son 0.003% diferentes). Además, el # 323333 es casi idéntico al # 333333, pero su fórmula muestra que son un 3% diferentes.

Debe extraer cada bit de composición de cada píxel de color (Color.red(), Color.green(), Color.blue()), calcular la diferencia de cada uno de ellos y obtener el porcentaje de diferencia combinada.

Si bien este método para obtener la diferencia de las dos imágenes es simple y eficiente, tiene una gran advertencia: si las imágenes son idénticas en contenido pero desplazadas un píxel (a la derecha, por ejemplo), su método mostrará ellos como completamente diferentes.

+0

¿Hay alguna manera eficiente de calcular la diferencia entre las imágenes en Android en porcentaje? ¡El código será más que útil! Gracias – supermus

Cuestiones relacionadas