219 votes

ImageMagick : « Diff » une Image

J'essaie de trouver un moyen pour obtenir la différence entre les 2 images. Voici ce que je veux dire.

J'ai l'image d'origine. Quelqu'un a écrit sur une copie exacte de l'image d'origine. Maintenant, j'ai besoin de comparer l'original de l'écrit sur l'image et extraire juste l'écrit dans un format image.

Exemple: j'ai une photo d'une maison. Quelqu'un a pris une copie et a écrit les mots "Bonjour!" sur la copie. Je veux en quelque sorte comparer les 2 photos, retirez la maison, et d'être de gauche avec une image des mots "Bonjour!".

Est-ce possible avec ImageMagick? Je sais qu'il ya des façons d'obtenir les statistiques de la différence entre les images, mais ce n'est pas ce que je recherche.

378voto

Kurt Pfeifle Points 24491

Mes favoris sont ces deux:

 compare image1 image2 -compose src diff.png
 compare image1 image2 -compose src diff.pdf

La seule différence entre les 2 commandes ci-dessus: le premier montre la différence visuelle entre les deux images au format PNG, le second en tant que fichier PDF.

Le résultant fichier diff affiche tous les pixels qui sont différentes de couleur rouge. Ceux qui ne sont pas modifiées apparaissent en blanc.

Court et doux.

Remarque, vos images doivent pas être du même type. Vous pouvez même mélanger JPEG, TIFF, PNG, sous une condition: les images doivent être de la même taille (dimension de l'image en pixels). Le format de sortie est déterminé par le nom de fichier de sortie de l'extension.

Si, pour certaines raisons, ont besoin d'une résolution supérieure à la résolution par défaut (72 dpi) -- puis juste ajouter un -density paramètre:

 compare -density 300 image1 image2 -compose src diff.jpeg

Des exemples illustrés

Voici quelques illustrations de résultats pour les variations de la commande ci-dessus. Remarque: les deux fichiers comparés sont même des fichiers PDF, de sorte qu'il fonctionne avec ces trop (tant qu'ils sont 1-pages)!


À gauche: Image avec du texte Centre: image d'Origine Droite: Différences (=texte) en pixels rouges. Red difference pixels only; identical pixels are white

compare \
        porsche-with-scratch.pdf  porsche-original.pdf \
       -compose src \
        diff-compose-default.pdf

C'est la même commande je l'ai déjà indiqué ci-dessus.


À gauche: Image avec du texte Centre: image d'Origine Droite: les Différences dans les "seagreen" de pixels. Seagreen difference pixels only; identical pixels are white

compare \
        porsche-with-scratch.pdf  porsche-original.pdf \
       -compose src \
       -highlight-color seagreen \
        diff-compose-default.pdf

Cette commande ajoute un paramètre à faire la différence pixels seagreen " au lieu de la valeur par défaut rouge.


À gauche: Image avec du texte Centre: image d'Origine Droite: Bleu diff (mais w. le contexte d'arrière-plan) Blue difference pixels only; first of the compared images as a lightened-up backgroundl

compare \
        porsche-with-scratch.pdf  porsche-original.pdf \
       -highlight-color blue \
        diff-compose-default.pdf

Cette commande supprime l' -compose src - le résultat est le comportement par défaut de compare qui garde comme une éclaircie à l'arrière-plan, la première de l'2 comparable images. (Cette fois avec un paramètre en plus de faire la diff pixels apparaissent en bleu).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X