SUCHE: Software, die ein Live-Bild mit einem JPG vergleicht

canalier

Ensign
Registriert
Feb. 2014
Beiträge
217
Hallo zusammen,
Ich suche eine Software, bei welcher ich ein Bild vordefinieren kann, welches nachher mit dem aktuellen Live-Bild, geliefert von einer Kamera verglichen wird. Dann soll das Programm feststellen können zu wie viel Prozent die Bilder übereinstimmen oder ob vordefinierte Punkte übereinstimmen.

Am liebsten natürlich Freeware :-)

Danke euch für die Antworten und Gruss
Canalier
 
Ja, zwei Bilder vergleichen, nur dass das eine Bild ein JPG und das andere ein LIVE Bild von einer Kamera ist...
 
Ich fürchte, dass du so ein Programm nicht finden wirst. Zumindest nicht kostenlos... :(

Alle Tools die ich kenne können nur Bilder vergleichen, indem man einen Ordner angibt.
Ein Live-Bild müsste praktisch über ein virtuelles Laufwerk eingelesen werden, dass sich wie ein Ordner verhält, aber die Daten beispielsweise im RAW-Format empfängt.

So eine Software habe ich leider noch nicht finden können...
Was möchtest du eigentlich tun? Raumüberwachung, bzw. Bewegungsmelder? :p
 
Zuletzt bearbeitet:
Hehe, nein ^^

Meine Firma baut Maschinen, die Podukte bedrucken und mit der Kamera möchte ich den Druck kontrollieren. Dass das Teil richtig unter der Kamera positioniert wird, dafür sorgen Servoachsen.

Ist klar, dass es dafür Kamerasysteme gibt, deren Daten sich genaustens einlesen und auswerten lassen, jedoch bauche ich das für diese einfache Funktion überhaupt nicht. Die Kamera ist losgelöst vom eigentlichen Sytsem an einem externen PC angeschlossen, welcher einfach nur anzeigen soll ob der Druck gut ist oder nicht. Eine solche Lösung wäre halt um einiges günstiger als ein Kameraauswertesystem.

Gruss
 
Ich arbeite seit einigen Jahren in dem Bereich (industrielle Bildverarbeitung) als C++ Entwickler und kann dir versichern: So einfach wie du dir das vorstellst ist das alles nicht.

Zum einen: Wie stellst du sicher, dass die realen Objekte unter der Kamera an exakt der selben Position liegen, wie in deinem Referenzbild? Ich habe Anlagen mit Industrierobotern gesehen die mehrere mio kosten und selbst deren Handhabung weicht immer leicht von Objekt zu Objekt ab. Was man hierbei insbesondere leicht unrerschätzt ist die Verdrehung. Dh der Objektmittelpunkt stimmt evtl auf den Pixel genau aber bereits durch 0,5° Verdrehung zur Referenz hast du im Randbereich Positionsfehler die jeden simplen Pixelvergleich unmöglich machen.

Zum anderen: Hast du überhaupt eine Industriekamera (500€+) mit kalibrierbarem Weißabgleich und Aufnahmebedingungen die jedes Fremdlicht ausschließen? Wenn im Umkreis auch nur eine Leuchtstoffröhre ist (diese pulsieren schneller als das Auge es wahrnimmt) wird jedes Bild nicht nur unterschiedlich hell sondern auch noch unterschiedliche Farben bekommen.
Das heißt natürlich dass du zwangsläufig eine vernünftige Lampe(500€+) brauchst. Üblicherweise nimmt/baut man hier LED-Lampen die man für die Belichtungszeit der Kamera kurz blitzen lässt: http://www.stemmer-imaging.de/de/produkte/beleuchtungen
Kameras: http://www.stemmer-imaging.de/de/produkte/kameras

Dann soll das Programm feststellen können zu wie viel Prozent die Bilder übereinstimmen
Hier gibts natürlich unzählige Ähnlichkeitsmaße. Das bekannteste ist die Korrelation. Hier etwas theoretischer Hintergrund: http://de.wikipedia.org/wiki/Korrelation_(Signalverarbeitung)
Und hier, wie man es möglichst schnell in C(++) zum laufen bringt: http://docs.opencv.org/doc/tutorials/imgproc/histograms/template_matching/template_matching.html

Um den ersten von mir genannten Punkt zu lösen findet üblicherweise erstmal eine exakte Objektfindung statt. Dh im Kamerabild muss mit Sub-Pixel genauigkeit die exakte Lage (Ort und Drehlage) des Drucks bestimmt werden. Ohne wird es auf keinen Fall gehen!

Außerdem geht es wahrscheinlich um Farbdrucke, oder? Hier kommt ein neuer Unsicherheitsfaktor ins Spiel: Fast jede Farbkamera (ja, erst recht die super teuren dslr) haben pro Pixel nur genau eine Farb-Wahrnehmung. Dh entweder Rot, Grün oder Blau. Stichwort http://de.wikipedia.org/wiki/Bayer-Sensor.
Dh wenn dein Objekt nur um einen Pixel wandert hast du vollkommen unterschiedliche Sensordaten, da die Filteralgorithmen dieses Farbmuster nie komplett entfernen können. Es gibt auch 3Chip Kameras (Prisma teilt die Farben auf 3 Chips auf) aber die haben idR nur 1024x768 und liegen bei über 2000€.

Ohne dir zu nahe treten zu wollen, aber ich halte es ohne Fachkenntnisse für unmöglich so etwas in einem industrietauglichen Zustand zu bauen - auch wenn man natürlich mit genug Programmierkenntnissen ein Kamerabild mit einem Datei-Bild vergleicht kriegt.

Falls du ein Linux zur Hand hast würde ich die empfehlen mal hiermit ein bisschen rumzuprobieren, da hier schon ein großer Teil der nervigen Grundlagenarbeit erledigt ist:
http://code.google.com/p/qt-opencv-multithreaded/
Du könntest also im ersten Schritt einen weiteren Filter hinzufügen der eine Korrelationsberechnung (Das verlinkte Tutorial oben) mit deinem Referenzbild macht.

Generell noch Fragen: Woher erfährt der PC das er ein Bild machen soll? Wahrscheinlich generiert die Anlage ein 24V SPS Signal sobald das Objekt in Position ist? Dann brauchst du irgend eine Hardware die dieses Signal an den PC verständlich weiterreicht. Und was passiert wenn der PC sagt "Objekt OK" oder "Objekt fehlerhaft"? Die Entscheidung muss doch wahrscheinlich auch wieder SPS kompatibel an eine Anlage übertragen werden. Oder steht den ganzen Tag jemand und klickt den Button "Bild aufnehmen" und nimmt die schlecht-Drucke manuell runter? ;-)
Selbst wenn eine Freeware existieren würde brauchst du hier auf jeden Fall auch Hardware die die Kamera triggert und das Licht blitzt. (Lichtkontroller 500€+)
 
Zuletzt bearbeitet:
Hallo kuddl, ;)

ich muss sagen, dass ich selten eine so ausführliche und hochinteressante Beschreibung als Antwort gelesen habe!
Respekt und Achtung für deine Zeit und Mühe! :p

Ich selbst bin ebenfalls Entwickler, aber aus dem C#-/.Net-Bereich und hatte mit Bildverarbeitung so gut wie noch nie zu tun.

Aber alleine das Lesen deiner Antwort hat mir Lust gemacht, mal etwas über den Berufsalltag hinaus zu blicken...
Normalerweise entwerfe ich auch Software für "Apparate", doch sind die bei uns "etwas" größer als eine Kamera. :D
 
Zurück
Oben