Frage

Dies ist eine ziemlich breite Frage; Welche Werkzeuge / Bibliotheken existieren zwei Fotos zu machen, die nicht identisch sind, aber sehr ähnlich, und identifizieren die spezifischen Unterschiede zwischen ihnen?

Ein Beispiel wäre ein Bild von meiner Couch am Freitag zu nehmen, nachdem meine Freundin getan ist die Reinigung und vor einem langen Wochenende von Freunden über habe, trinken und spielt Rockband. Zwei Tage später nehme ich ein zweites Foto von der Couch; Beleuchtung ist identisch, hat die Couch keinen Milimeter bewegt, und ich verwende ein Stativ in einer festen Position.

Welche Tools konnte ich ein Diff der Bilder zu erzeugen, oder ein drittes Heatmap Bild der Unterschiede? Gibt es irgendwelche Werkzeuge für .NET?

War es hilfreich?

Lösung

Schauen Sie sich Andrew Kirillows Artikel auf Codeproject. Er schrieb eine C # .NET-Anwendung unter Verwendung der AForge.NET Computer-Vision-Bibliothek, um Bewegung zu erkennen. Auf der AForge.NET Website gibt es eine Diskussion von zwei Rahmen Unterschiede für die Bewegungserkennung.

Andere Tipps

Dies hängt weitgehend von dem Bildformat und Kompression. Aber am Ende des Tages, sind Sie wahrscheinlich unter zwei Rastern und sie Pixel für Pixel verglichen wird.

Werfen Sie einen Blick auf die Perceptual Bild Difference Dienstprogramm rel="noreferrer">

Die naheliegendste Möglichkeit, jede noch so kleinen, normalerweise nahe Unwahrnehmbar Unterschied zu sehen, wäre die Pixeldaten XOR. Wenn die Beleuchtung noch etwas anders ist, obwohl, es könnte zu viel sein. Differenzierende (subtrahieren) die Pixeldaten könnten mehr sein, was Sie suchen, je nachdem, wie subtil die Unterschiede sind.

Ein Ort zu beginnen, ist mit einer reichen Bildverarbeitungs-Bibliothek wie IM . Sie können mit dem IMlab Werkzeug zu machen interaktiv plätschern, nennen Sie es direkt von C oder C ++, oder verwenden Sie ihre wirklich anständig Lua Bindung es von Lua zu fahren. Es unterstützt eine breite Palette von Operationen auf Bitmaps, sowie eine erweiterbare Bibliothek von Dateiformaten.

Auch wenn Sie nicht absichtlich etwas bewegt haben, möchten Sie vielleicht einen Algorithmus wie verwenden SIFT gute Subpixel-Qualität Ausrichtung zwischen dem Rahmen zu bekommen. Es sei denn, Sie wollen , um die Kamera zu behandeln, als feste und auch Bewegung der Couch erkennen.

Ich schrieb diese freie .NET-Anwendung mit dem Toolkit meiner Firma macht (DotImage). Es hat einen sehr einfachen Algorithmus, aber der Code ist Open-Source, wenn Sie mit ihm spielen wollen -. Sie den Algorithmus zu .NET Bild Klassen anpassen können, wenn Sie nicht über eine Kopie von DotImage kaufen möchten

http: / /www.atalasoft.com/cs/blogs/31appsin31days/archive/2008/05/13/image-difference-utility.aspx

Es ist eine interessante Frage. Ich kann Sie nicht auf spezifische Bibliotheken verweisen, aber der Prozess Sie sind gefragt ist im Grunde ein minimaler Fall von Bewegungskompensation. Dies ist die Art und Weise, dass die MPEG (MP4, DIVX, was auch immer) Video verwaltet Video zu komprimieren, so extrem gut; Sie könnten diese Bewegungskompensationsalgorithmen implementiert sind einige Informationen über die Art und Weise in MPEG aussehen.

Eine andere Sache im Auge zu behalten; JPEG-Komprimierung ist eine blockbasierte Kompression; viel von dem Vorteil, dass MPEG von den Dingen bringt, ist, um einen Block Vergleich tatsächlich tun. Wenn die meisten Ihres Bildes (sagen, der Hintergrund) ist das gleiche von einem Bild zum nächsten, werden diese Blöcke unverändert. Es ist ein schneller Weg, um die Datenmenge zu reduzieren, benötigt im Vergleich zu werden.

nur die .net Imaging-Klassen verwenden, erstellen Sie eine neue Bitmap () x 2 und Blick auf der R & G & B-Werte jeden Pixel, können Sie auf der A auch einen Blick (Alpha / Transparenz) Werte, wenn Sie möchten, bei der Bestimmung Unterschied.

auch eine Notiz, mit der getPixel (y, x) Methode kann erheblich langsamer sein, ist es eine andere Möglichkeit, das gesamte Bild zu erhalten (weniger elegant) und für jeden durch ing selbst wenn ich es erinnere mich an dem GetBitmap genannt wurde oder etwas ähnliches, schauen Sie in den Imaging / Bitmap Klassen & lesen Sie einige tutes sie wirklich sind alles, was Sie brauchen, und sind nicht so schwer zu bedienen, nicht dritten gehen, wenn Sie zu haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top