Por ejemplo, para una conversación reciente sobre compresión JPEG , quería comparar píxel por píxel lo que cambió entre dos JPEG (uno con nivel de compresión 100 y otro con nivel de compresión 95).
¿Cómo genero buenos mapas visuales de lo que cambió sin tediosa programación de software personalizado?
Respuestas:
Photoshop + Capas FTW. (Sí, también puedes usar Gimp o cualquier otro software de edición con las mismas funciones).
Comience con su imagen base, en el caso anterior, utilicé la imagen jpeg quality 100.
En la imagen resultante, cualquier píxel que sea diferente entre las dos imágenes será blanco. Puede ajustarlo para permitir que las cosas sean "un poco diferentes" alterando el valor del umbral.
Ejemplo que muestra MUCHA diferencia entre jpeg 92 y 100 de Lightroom.
Ejemplo que no muestra ninguna diferencia entre 95 y 100.
No solo se trata de mostrar un "cambio o no" binario, ¿qué pasa si desea más detalles sobre cuánto cambió, por ejemplo, por canal de color?
Cuanto más brillantes son los píxeles resultantes, más diferentes son en ese color. Sin embargo, la desventaja es que terminas con mucho barro gris ... así que a veces es más fácil limitarlo para ver dónde están las diferencias. Es por eso que construyo ambos y alterno cuál es visible.
fuente
Si usa Photoshop, así es como lo haría:
Coloque las dos jpegs en el mismo archivo psd, en dos capas separadas. Deben superponerse exactamente, ya que sus dimensiones son las mismas. (cuál va arriba no importa).
Establezca el modo de fusión de capas en "Diferencia". Verías un resultado mayormente negro. Depende de la diferencia de calidad entre las dos capas originales, puede ver más o menos ruido.
fuente
Todos los paquetes de procesamiento de imágenes deberían facilitar esto. Le mostraré cómo hacerlo en Mathematica, si tiene acceso a este sistema. Mathematica es un lenguaje de programación, pero es realmente fácil hacer este tipo de manipulaciones, por lo que si tiene acceso a él (por ejemplo, a través de una licencia universitaria), ¡le recomiendo que lo pruebe!
Primero, importe la imagen:
Recomprimirlo usando compresión JPEG
Ahora tome la diferencia de los valores de píxeles, convirtiéndolos primero en números de punto flotante para garantizar que se conserven los valores negativos.
No se ve mucho en la imagen de diferencia (la diferencia es pequeña), y los valores negativos se recortan en negro. Entonces, cambiemos la escala de todos los valores para llenar todo el rango dinámico (el mínimo se escalará a 0, el máximo a 1):
ImageDifference
da la diferencia absoluta de las dos imágenes y no produce números negativos. Esta es la operación que es más probable que encuentre en los paquetes de procesamiento de imágenes, especialmente los GUI (Photoshop, GIMP).También podemos tomar un solo canal RGB, por ejemplo el rojo, y visualizar las diferencias positivas y negativas usando colores 'opuestos':
Aquí está lo mismo, con las diferencias amplificadas 5 veces. Los artefactos JPEG ahora son más reconocibles.
La ventaja de usar un lenguaje de programación es que podemos automatizarlo fácilmente y ver cómo cambia la diferencia para los "niveles de compresión" entre 0.1 y 1.0:
fuente
Puede usar las herramientas de línea de comandos de Imagemagick.
proporcionará el valor absoluto de las diferencias para cada canal RGB.
fuente
GitHub tiene algunas herramientas de diferencia de imagen interesantes incorporadas en la web, como se describe aquí y se demuestra en esta demostración .
fuente
En la imagen resultante, las partes negras muestran dónde las imágenes originales son idénticas y cualquier cosa más clara muestra diferencias.
fuente