2 Bilder vergleichen

lusiphur

Mitglied
Hallo,

Wie ist es unter C# möglich 2 Bilder zu vergleichen und die Koordinaten der Änderung zu bekommen
für Tips und Ideenwähre ich dankbar

Danke

Lusiphur
 
Du könntest jeden Pixel einzeln überprüfen. Du könntest das Bild in eine Bitmap-Klasse laden und dann die GetPixel-Methode verwenden.
 
Du kannst auch eine dritte Bitmap erzeugen, die eine Bitmap hineinkopieren, und die zweite Bitmap mit dwRop SRCINVERT darüber blitten. Durch die XOR-Verknüpfung sind Veränderungen genau an den Koordinaten zu finden, wo das resultierende Pixel nicht schwarz (RGB(0,0,0)) ist.
 
Zweite Idee mit dem XOR ist natürlich um Vielfaches schneller. Beides setzt voraus, dass die Bilder eigentlich 1:1 sind, also zB Retuscheaktionen. Wenn das Bild nur ein bisschen seine Position verändert, führt diese Form zu keinem Ergebnis, obwohl das Auge keinen Unterschied sehen würde (zB. Drehung um 1° oder Verschiebung um 1px). Sogar Bildrauschen der Kamera kann ein positives Ereignis schon vereiteln, also müsste man auch mit einer Toleranz arbeiten, zB im Ergebnis dürfen nicht mehr als 2% aller Pixel heller als Hellgrau (zB #aaa) werden..

Um es besser zu machen, müssten Stützpunkte gesetzt werden (ähnlich einer Fingerabdruckanalyse), und das zweite Bild per Warping an das Erste angeglichen werden. Helfen könnte auch das simple Weichzeichnen um einen geringen Betrag (1-2px). Man verliert Details/Kanten, aber die Vergleichs-Werte werden besser, da zB Rauschen verschwindet und 1px-Verschiebungen minimiert werden.

mfg chmee

Nachtrag: Autopano SIFT-C setzt zB Kontrollpunkte und kann dann Bilder auf Basis der Kontrollpunkte übereinanderlegen. Wird benutzt zB in Hugin, einer Panoramasoftware.

Nachtrag 2: Bedacht werden muss auch, dass zB eine simple Helligkeitserhöhung und Kontrastveränderung die Bilder als nicht gleich einstufen würde. Also müsste man auch einbauen zB Vergleich der Histogramme ( zB für Kontraständerung) und gleichbleibende Helligkeitsveränderung als einfache statische Addition/Subtraktion über alle Pixel.
 
Zurück