Tengo una imagen almacenada de tipo TYPE_INT_BGR. Necesito hacer una comparación píxel por píxel con otra Imagen Buffered para calcular la "distancia" entre las dos imágenes. Tengo algo que funciona, pero es lento. Consigo un píxel de la imagen de "referencia", dividirla en RGB bytes con:¿La forma más rápida de comparar valores de píxeles entre dos imágenes almacenadas?
int pixel = referenceImage.getRGB(col, row);
int red = (pixel >> 16) & 0xff;
int green = (pixel >> 8) & 0xff;
int blue = (pixel) & 0xff;
que comparar los valores de R/G/B para el píxel correspondiente de la imagen candidata, y que resume los cuadrados de las diferencias
¿Hay una manera más rápida de hacer este tipo de comparación? Echando un vistazo a la fuente de JRE, veo que BufferedImage.getRGB() está realmente ordenando los valores RGB constituyentes del ráster juntos, lo que es un desperdicio para mis propósitos, ya que simplemente lo estoy dividiendo en bytes nuevamente.
voy a tratar de hacer eso directamente, pero me pregunto si no hay una mejor manera de hacer esto, ya sea a través de una API Java o tercera parte que podría haber perdido.
Tienes razón; Volátil es una mala sugerencia. Lo he corregido. Tristemente, no puedo menospreciar mi respuesta. – Mikeb
Su respuesta fue buena acerca de la comparación de DataBuffer :) –