OpenCV Gesichtevergleich HASH



  • Hallo Profis!
    Ich weiß es nicht, ob meine Frage in den Forum gehört, aber nur hier habe ich über OpenCV gelesen.
    Mir ist wichtig, ob ich in die richtige Richtung recherchiere.
    Aufgabe:
    Finden ähnliche Gesichte. (Nicht gleiche)
    Lösung:

    1. Foto öffnen und Gesicht erkennen
    2. Ausschnitt in Graustufen, Heiligkeit und Kontrast anpassen und verkleinern (8X8 px)
    3. Hach auslesen und in DB speichern

    In DB sind schon 1000 Bilder mit Hash gespeichert

    1. Hash prozentual vergleichen.

    Man nimmt 2 Fotos von 2 Menschen, die ähnlich aussehen. Oder 2 Bilder von einem Mensch nur in verschieden Alter.

    Frage:
    Wird so eine Lösung funktionieren? bzw Findet OpenCV die Bilder wider?
    Oder verstehe ich was ganz Falsch?
    MfG



  • Du nimmst für eine Ähnlichkeitsvergleich von 2 8 * 8 Pixelbildern deren Hash???

    Hash bedeutet doch, schon minimale Farbwertänderung gibt große Hashwertänderung.

    Ich sag mal mein Weg, wie ich es vorschlagen würde:

    1. Per OpenCV aus Bilddatenbank alle 8*8-Gesichtsbilder extrahieren.
    2. Gesichtsliste unterindander vergleichen indem du 2 Bild jeweils substrahierst und schaust, ob die Differenz möglichst klein ist.

    Probleme:

    Reicht ein 8*8 Bild für ein Gesicht überhaupt? Klingt sehr klein.
    Der Vergleich wie ich ihn vorschlage bassiert auf Farbunterschieden. Die Form dürfte wohl eher entscheidend sein. Man müsste also eine Funktion haben, welche auf einen Gesicht markante Punkte (Augen, Kinn,...) markiert und dann die Abstände dieser Punkte für den Vergleich nutzen. Problem: Wie soll man die markanten Punkten auf dem Gesicht finden? Gibt es OpenCV-Hilfe dafür?



  • Ich danke dir für deine Antwort.
    Ich habe es aus diesem Artikel. Ist zwar russisch, aber du kannst per Google übersetzen.
    Original http://habrahabr.ru/post/120562/
    Übersetzung http://translate.google.de/translate?hl=de&sl=ru&tl=de&u=http%3A%2F%2Fhabrahabr.ru%2Fpost%2F120562%2F
    Die kritische Masse von Wissen habe ich noch nicht gesammelt, dass ich in die richtige Richtung recherchieren kann. Ich habe viel gelesen, aber noch nicht verarbeitet und dachte mir wird hier richtigen Weg gezeigt.



  • Der Russe beschreibt dort also zwei Verfahren, um 2 Bild zu vergleichen.

    1. Farbwerte voneinder subtrahieren(Er sagt, Hemmingdistance bilden, also Anzahl der Unterschiedlichen Pixel/Bits)

    2. Bild in hohe niedrige Frequenzen untereilen und diese vergleichen. Daraus resultierende Frage: Was ist mit Bildfrequenzen gemeint? Meine Vermutung: Man muss den JPEG-Algorithmus anschauen und wird vermutlich dort dann Denkansätze finden, wie man Bilder zuerst in ein Zwischenergebniss konvertiert(Frequenzbild) um dieses dann zu vergleichen.

    Deine Aufgabe also: Finde raus, wie der JPEG-Kompressions-Algorithmus funktioniert 🙂

    Die diskreten Kosinustransformation scheint die Antwort zu sein. Mit der kann man also ein Bild in Frequenzen und Vektoren zerlegen. Kannst du bitte für mich rausfinden, wie die Funktioniert 😃



  • XMAMan schrieb:

    Hash bedeutet doch, schon minimale Farbwertänderung gibt große Hashwertänderung.

    Das sind kryptographische Hashs. Es gibt auch Hashalgorithmen, die exakt dafür da sind Ähnlichkeitsbeziehungen zu erhalten.

    Halte den Ansatz aber nicht unbedingt für Zielführend.

    Stichwort: Elastic Graph Matching.



  • Vor allem ist das doch kein Gesichtsvergleich sondern einfach nur ein Bildvergleich. Bei einem Gesichtsvergleich muss man typische Eigenschaften des Gesichts messen, die auf jedem Bild gleich sind, z.b. die Verhaeltnisse bestimmter Laengen. Besonders einfach ist das nicht, die enstprechenden Programme duerften seit Jahrzehnten in der Entwicklung sein.



  • Ich danke euch erst Mal. Werde dann weiter rechechieren.
    MfG


Anmelden zum Antworten