8
votes

Comparer deux images et mettre en valeur les différences sur la deuxième image

ci-dessous est le code de travail actuel en Python à l'aide de PIL pour mettre en évidence la différence entre les deux images. Mais le reste des images est noiren.

Je veux actuellement afficher l'arrière-plan ainsi que l'image en surbrillance.

Y a-t-il de toute façon que je puisse garder l'écran d'arrière-plan plus léger et simplement mettre en surbrillance les différences. xxx

! https://drive.google.com/file/d/0bylgvq7rn4zhTutu1HMC1fuvle/view?usp=sharing


0 commentaires

3 Réponses :


9
votes

PIL a des méthodes de manipulation d'images utiles, mais aussi beaucoup de lacunes quand on veut commencer à faire un traitement d'image sérieux -

la plupart des python lterature vous recommanderont de changer Pour utiliser NUMPY sur vos données de pixels, ce qui donnera votre contrôle complet - Autres bibliothèques d'imagerie telles que laneStonica, Gegl et VIPS Tous ont des liaisons python et une gamme de belles fonctions pour la composition d'image / la segmentation.

Dans ce cas, la chose est d'imaginer comment on pourrait Accédez à la sortie souhaitée dans un programme de manipulation d'image: Vous auriez une ombre noir (ou une autre couleur) à placer sur l'image d'origine, et sur ceci, coller la deuxième image, mais à l'aide d'un seuil (c'est-à-dire un pixel égal ou est différent - toutes les valeurs intermédiaires doivent être arrondies à "différent) des différences comme un masque à la deuxième image.

J'ai modifié votre fonction pour créer une telle composition - xxx


2 commentaires

Oh bien - la coutume attendue ici est de cliquer sur "Accepter" pour la réponse, plutôt que d'envoyer des acclamations! :-) Merci quand même.


BTW, pour un besoin de cela pour seulement quelques images, et que vous ne vouliez pas violer avec Python Installations - j'ai répondu à l'argent interactive de manière interactive avec GIMP ici: graphicdesign.stackexchange.com/questions/ 27484 / ...



1
votes

Voici une solution à l'aide de Libvivips:

import sys

from gi.repository import Vips

a = Vips.Image.new_from_file(sys.argv[1], access = Vips.Access.SEQUENTIAL)
b = Vips.Image.new_from_file(sys.argv[2], access = Vips.Access.SEQUENTIAL)

# a != b makes an N-band image with 0/255 for false/true ... we have to OR the
# bands together to get a 1-band mask image which is true for pixels which
# differ in any band
mask = (a != b).bandbool("or")

# now pick pixels from a or b with the mask ... dim false pixels down 
diff = mask.ifthenelse(a, b * 0.2)

diff.write_to_file(sys.argv[3])


0 commentaires

0
votes

Si vous n'êtes pas marié à l'idée d'utiliser Python, il existe quelques solutions vraiment simples utilisant ImageMagick:

"Diff" une image utilisant ImageMagick


0 commentaires