Bildvergleichsalgorithmus gesucht!

devilmc

Mitglied
Hallo liebe Community,

ich habe ein Ansatzproblem mit einer Teilaufgabe, welche ich bearbeiten muss.
Es geht dabei um den Vergleich von 2 Bildern.
Im Internet findet man viele Beispiele zum Thema Objecttracking in Bildern und Videos.
Diese sind leider für mich keine Hilfe, da ich keine vordefinierten Objekte verfolgen will, sondern ich will den gesamten Inhalt des Bildes vergleichen.

Beispiel: Das Bild zeigt einen Schreibtisch an dem ein Stuhl steht und ein Computer.
Am Computer steckt ein USB Stick und der Stuhl steht am Tisch.

Bild 2 zeigt diesen gleichen Schreibtisch nur dieses mal fehlt der USB Stick, statt dessen steht eine Tasse auf dem Computer und der Stuhl ist leicht abgerückt.

Das Programm soll nun erkennnen, das sich etwas geändert hat. Sprich der Stick fehlt, der Stuhl ist abgerückt und nun steht eine Tasse da.

Das sind 3 willkürliche Veränderungen, welche man nicht vorhersehen kann, aber feststellbar. Hinzukommt das der Ausschnitt des Bildes anders sein kann, sprich alles steht etwas weiter links oder rechts aber der Inhalt hat sich nicht verändert.

Ich habe nun schon nach Algorithmen gesucht, welche eine Analyse dieser Bilddaten ermöglichen, hab aber leider nichts gefunden.

Hätte jemand eine Idee?

Liebe Grüße
Devilmc

PS:
 

Steiner_B

Erfahrenes Mitglied
Du hast dir ein ziemlich komplexes Problem ausgesucht, vorallem dann wenn sich die Kameraposition verändern kann.

In der Videoanalyse gibts einige Methoden, die dir vielleicht weiterhelfen, aber ich kenn keine die bei veränderten Bildausschnitten noch funktioniert. Hier mal einige davon damit du Anhaltspunkte zum weitersuchen hast:
  • Frame Differencing: Wobei du hier halt aufpassen must bei Beleuchtungsänderungen (und auch die Sonne verändert sich permanent). Das kann man aber umgehen indem man z.B.: den Vergleich in normalisiertem RGB macht.
  • Histogrammvergleiche: Robuster wenn sich die Kameraposition minimal verändert, aber selbes Problem mit der Beleuchtungsintensität
  • Motion Vector Analyse: Das hilft vorallem dann wenn sich die Objekte innerhalb des Bildes bewegen. Bei der MPEG kodierung wird sowas verwendet.

Wenn du genauere Hinweise brauchst müsstest du mal Beispielbilder etc. erstellen damit man sich was vorstellen kann.
 

Steiner_B

Erfahrenes Mitglied
Ja das stimmt schon, aber mit denen wirst du bei der gegebenen Aufgabenstellung immer auf zwei Probleme stoßen.

1. Wird bei Ähnlichkeitssuchen der Treshold schwierig bis garnicht so definiert werden können, das er Bildverschiebungen nicht detektiert, aber einen USB Stick erkennt
2. Ist es nahezu unmöglich festzustellen ob eines der getrackten Features nicht mehr auffindbar ist weil es weg ist, oder weil sich der Bildausschnitt so verschoben hat, das es außerhalb des detektierten Bereichs liegt.

Ich würde auf jeden Fall auf Kameraänderungen verzichten, wenn so kleine Sachen wie ein USB-Stick auf einem ganzen Schreibtisch erkannt werden soll.
 

chmee

verstaubtes inventar
Premium-User
Die Algorithmen sind "ein" Modul des Ganzen. Mit SIFT kannst Du erstmal herausfinden, wie ähnlich die Bilder sind, um sie dann übereinanderzulegen. Danach könnte man ein Differenzbild errechnen - und theoretisch müsste das verschwundene Objekt erscheinen. Alles simpel beschrieben, weil man an jeder Stelle noch mit irgendwelchen Kleinsttricks die Ausgabe verbessern kann.

Man könnte auch in den Bereich der Objekterkennung anhand von Trackingwolken einsteigen und schauen, in welchem Verhältnis die Wolken zueinanderliegen und ob zufälligerweise eine Punktewolke verschwunden ist. (http://de.wikipedia.org/wiki/DBSCAN)
etc pp

Nachtrag Steiner_B : Natürlich wird mit jeder Veränderung (Verallgemeinerung des Algorithmus) die Angelegenheit "unnötig" erschwert. Punkt A sehe ich nicht so als Problem, während Punkt B einen Rattenschwanz an Überprüfungen und Berechnungen nach sich zieht, die eher in Wahrscheinlichkeiten enden.

mfg chmee
 
Zuletzt bearbeitet:

devilmc

Mitglied
Vom Prinzip her handelt es sich ja um einen mobilen Wächter. Allerdings gibt er mir kein Videosignal sondern immer nur Einzelbilder im JPG Format. Nun gut, das Problem erschien mir erst nicht als so kompliziert und ausgesucht hatte ichs mehr eher unfreiwillig. ^^
Jedenfalls bin ich zu dem Entschluss gekommen die Sache erstmal statisch anzugehen.
Sprich die Kamera bewegt sich erstmal nicht, sondern bleibt auf einem Punkt, so dass mein Ansatz hierfür erstmal die Differenzbildvariante ist.
Ich danke euch erstmal für eure Links und Anregungen. Ich denke ein Differenzbild zu berechnen sollte ich noch hinbekommen ^^.

Sollte ich nochmal Probleme haben oder einen Ansatz benötigen meld ich mich nochmal zu Wort.

mfg devilmc