Comparar dos archivos de imagen para obtener datos idénticos, ¿excluyendo los metadatos?

Tengo muchas fotos de la web a las que me gustaría agregar datos EXIF ​​de GPS, pero confío en eliminar duplicados usando herramientas de comparación como cmp, md5sumy duff.

Si edito los datos EXIF, entonces ninguna herramienta que conozco reconocerá imágenes duplicadas. Estoy buscando una herramienta (o un comando de tubería confiable de 1 línea) que pueda:

  • (preferido) generar un resumen que solo se base en el cuerpo y no en los metadatos
  • reportar 2 imágenes como idénticas píxel por píxel

¿Existe tal herramienta? (¿O hay algún artículo que explique por qué es un problema que no vale la pena resolver?)

Informacion adicional

La razón por la que prefiero un resumen a un verificador de duplicados de caja negra es que me gusta crear .txtarchivos planos como una base de datos de otra información interesante sobre imágenes (por ejemplo, clasificación de imágenes).

Estrictamente, los datos EXIF ​​son metadatos , no un encabezado, ya que pueden aparecer en ubicaciones distintas al inicio del archivo.
Gracias, eliminaré la palabra encabezado de la publicación.

Respuestas (2)

Puede usar exiftool para eliminar todos los metadatos y generar lo que queda, es decir, la imagen para estandarizar en formato binario con el comando:

exiftool filename.jpg  -all= -o - -b

Y, por supuesto md5sum, será estándar como entrada, por lo que debería poder construir una tubería como:

exiftool filename.jpg  -all= -o - -b | md5sum -
Tenga en cuenta que lo anterior no cambia el archivo : se lee el archivo, se eliminan los metadatos y luego se envían los datos de la imagen a md5sum. Usas sys::stdout en lugar de /temp/
Oh, espera, no leí bien. Si usa sdtin, entonces no habrá daño permanente.
Ahora que lo pienso, al eliminar archivos duplicados, puedo terminar eliminando la variante más deseable del archivo. Tal vez lo que realmente quiere es, en lugar de eliminar uno de ellos, fusionar los datos exif de modo que la salida md5sum sea idéntica
Solo necesita fusionar los datos EXIF ​​si los archivos son idénticos, por lo que su primer paso es ubicar todos los duplicados (ignorando los datos EXIF), luego puede usar exiftool para extraer todos los metadatos de ambos archivos, fusionarlos y establecer uno o ambos archivos para contenerlo; esto no será una sola línea.
Sí, una sola línea no es realista después de pensarlo más detenidamente. Sería más un script de shell o un script maravilloso si quiero hacerlo de manera confiable
Personalmente, usaría un script de Python, ¡pero solo soy yo!
Sí. Desafortunadamente, Python no es parte de mi conjunto de habilidades. Soy un chico de Java :)

Por alguna razón, exiftool no funcionó para mí, ya que parecía dejar algunos metadatos, pero reemplazarlo con imagemagick convert funcionó muy bien:

convert -strip filename.jpg -| md5sum