Bilder miteinander vergleichen Programm



  • Guten Tag,

    ich bin noch neu hier und habe 0 Ahnung. Deshalb wollte ich mir mal ein bisschen Feedback holen, wie man mein Problem am besten umsetzt.

    Was ich möchte:

    Bilder von einer Kamera sollen mit einer Datenbank (30k Bilder) abgeglichen werden. Wenn eine Große Übereinstimmung besteht, soll der Bildname vom Datenbankbild genommen werden, aufgeschrieben werden und eine +1 gerechnet werden. Sodass ich am Ende eine Liste habe wo ich genau nachsehen kann, wie viele Bilder ich wovon habe.

    Welche Programmiersprache muss ich dafür nehmen? Es soll eine recht schnelle Zuordnung erfolgen. Habe schon Ansätze mit Java und C++ gesehen.

    Vielleicht kann mir ja jemand bei dem Projekt weiterhelfen.

    Vielen Dank.

    PS: ich hoffe, dass dies der richtige Thread ist ;).

    Viele Grüße
    Susum



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (alle ISO-Standards) in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Schwammiger Post.

    Natürlich musst du ein existentes Framework benutzen, das die Bilder für dich vergleicht.

    Dazu solltest du googeln was es so gibt und was sich gut einbinden lässt.

    Was hast du denn bis jetzt rausgefunden und was sind das für Ansätze, von denen du redest?

    Vermutlich wäre es das beste, wenn du jemanden dafür bezahlst, das zu tun. Mit 0 Ahnung hat man hier wenig Chancen auf Erfolg.
    Du wärst wahrscheinlich schon mit der Datenbank-Query überfordert.



  • Hey,

    in erster Linie möchte ich erstmal erfahren wo nach ich genau suchen muss. Welche Sprache dafür am besten geeignet ist etc.



  • Hi,

    als Bibliothek kann ich dir OpenCV ans Herz legen, die gibt es für viele Sprachen unter anderem C++, C#, Python. Um Schnell Erfolge zu erzielen wenn du wenig Programmierfahrung hast ist Python sicher keine schlechte Wahl. Konkret anschauen solltest du dir die Feature Matching Möglichkeiten:
    http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_feature2d/py_matcher/py_matcher.html

    Viele Grüße
    KaPtainCugel



  • Datenbankanfragen gehen in vielen Sprachen, C# bietet sich an aber auch mit Java und C++ ist es möglich.

    Was das Bilder vergleichen Betrifft, musst du selber wissen, was du willst. Du kannst versuchen gängige Algorithem zu implementieren:
    http://stackoverflow.com/questions/843972/image-comparison-fast-algorithm

    Oder eben halt suchen, ob du ein bestehendes Framework findest, das irgendeine Art von API anbietet, die du in dein Programm einbinden kannst.



  • Vielleicht kannst du image hashes nutzen.



  • Ich würde auch perceptual hashes wie mit pHash empfehlen.
    Kommt natürlich drauf an was genau du mit "große Übereinstimmung" meinst. Wenn es Richtung Deduplication geht wäre das eine Lösung, wenn du mehr ein "sieht irgendwie ähnlich aus" meinst wird das deutlich schwerer. 😃



  • Sollen Bilder nur verglichen werden um zu sehen ob sie 1:1 identisch sind, oder sollen die Bilder vom Algorithmus auch erkannt werden, so dass die Bilddateien zwar das gleiche Motiv enthalten, also ähnlich sind, aber nicht identisch sein müssen.

    Für ersteres reicht ein Programm das Dateien anhand von Prüfsummen unterscheidt schon aus.
    Für letzteres brauchst du Bilderkennungsalgorithmen, die sind aufwendig, kompliziert und auch nicht fehlerfrei. Als Laie hast du da keine Chance da derartiges zu implementieren und wenn du es versuchst, dann solltest du dich zwingend auf fertige Lösungen beziehen.
    Du könntest z.B. mal bei Google nachfragen, ob die etwas passendes haben und ob sie deren Bibliothek unter einer Lizenz gestellt haben, die es dir erlaubt, die Bibliothek zu nutzen.


Log in to reply