Freie Bibliothek für Bildvergleich



  • Hi, ich suche eine Bibliothek bzw eine Konsolenanwendung um (in C++ und Windows) die Ähnlichkeit von zwei Bildern zu vergleichen.
    Das Eine ist eins von mehreren eingescannten Vorlagen, das Andere von einer Kamera, von den Dimensionierungen aber ähnlich.

    Ich google mir schon ewig nen Ast ab, finde aber nichts was entweder verdammt teuer oder unbrauchbar(wir machen Xor... juhu) ist.

    Wenn da jemand was kennen würde wäre das super.

    greetz
    dreaddy



  • warum nihct selber machen?
    kommt auch drauf an, was es für bilder sind. Sind die Farben gleich? Sind Objekte drauf oder sind es sozsagen familienbilder oder sowas.

    bilder auf gleiche Größe skalieren, dann pixel für pixel farbanbstand berechnen. das ganze versucht dann ganz oft und verschiebst dass eine bild immer ein bisschen gegenüber dem anderen und guckst wann der abstand am kleinsten ist, das is dann sozusagen der kehrwert der ähnlichkeit.



  • Es handelt sich um genau zu sein um Magic Karten 😉

    Ich probier da grad mal etwas rum ob man die nicht erkennen lassen kann wenn man sie unter eine Kamera packt.

    Die Vorlagen sehen etwa so aus:
    http://magiccards.info/scans/en/us/318.jpg
    Gibt theoretisch ein paar tausend, aber durch Kriterien die ich grad noch selbst rausfiltern kann(Symbol rechts Mitte, Farbe) kann ich die Auswahl auf ca 25 beschränken.

    Die "richtigen" Karten dann ähnlich.

    Aber ich würd halt schon gern vermeiden da alles selbst zu programmieren, weil die Sache bis ich etwas zuverlässiges habe, besonders wenn die Karte mal nicht optimal liegt/leicht verblasst ist/nicht grade gedruckt ist/das Licht nicht hell genug ist etc, doch recht zeitaufwendig ist.
    Notfalls mache ich es, das ist klar, aber wäre halt schön wenn es da schon was gibt, was nicht 799,- kostet und/oder soviel Einarbeitszeit hat das mans auch Selbst machen kann.



  • sag lieber, worauf du hinauswillst 😉 wenns "nur" darum geht, bestimmte karten zu erkennen, dann kannst dir beispielsweise ne pca lib besorgen. da ballerst deine 25 karten rein (vielleicht jeweils 10 pro kartenklasse) und sagst ihm, er soll entsprechend viele klasse draus machen et voila, ein magic erkenner ^^



  • Ja es geht darum nur die Karte zu erkennen, sind dallerdings so 10000 insgesamt, nur ich kann halt anhand einiger Kriterien den Kram einschränken.
    Das ich danach noch n bissl Hardware ansteuern will undso hat ja damit soweit noch nix zu tun.
    Im Endeffekt will ich halt was machen um die Karten halbwegs automatisiert zu sortieren, geht sonst so auf die Augen :p .



  • Also ich würd's mal mit Kreuzkorrelation versuchen (also in etwa das, was Maxi schon beschrieben hatte). Nimm Dir irgendne Bildverarbeitungs-Bibliothek, zum Beispiel OpenCV, da ist sowas vermutlich schon drin.

    MfG jester



  • kreuzrelation ist nur dann sinnvoll, wenn karten derselben klasse auch bestimmte optische merkmale teilen. also beispielsweise alle dieselbe farbe haben, oben links dasselbe logo o.ä.

    wenns so ist, kann man kreuzrelation relativ anständig gebrauchen. besonders, wenn man die interessanten bereiche halbwegs einschränken kann. (nur der rand für farbe, nur ein 200x200 pixel block oben rechts für nen symbol u.ä.)

    der vorteil bei generischen methoden wie pca liegt darin, dass man sich selbst darüber gar keinen kopf zu machen braucht. man sucht sich jeweils ne handvoll exemplare seiner klassen, jagt die durch ne pca und hat anschliessend ne relativ robuste erkennung (meistens zumindest *G)



  • So wie ich es verstanden habe will er 10000 Karten erkennen. Allerdings kann er durch Vorverarbeitung auf ca. 25 einschränken. Das sind aber jedes mal andere 25. Wenn die Bilder so schick ausgeschnitten sind, wie auf dem Beispielbild, dann macht das schon Sinn einfach die Kreuzkorrelation zu berechnen. Mehr als ein paar Pixel schieben ist dann nicht nötig.



  • so wie ich es verstanden habe, hat er 10k verschiedene karten, die er durch bestimmte (visuelle) kritierien in 25 klassen einteilen kann. nicht 10k mal 25 verschiedene karten.



  • Ja es gibt halt insgesamt etwa 10k Karten.
    Ob eine Karte rot/schwarz/grün/weiss/blau/braun ist finde ich relativ leicht raus auch ohne Bibliothek, wäre man schonmal auf 1/6.
    Dann gibt es halt noch drei verschiedene Seltenheisstufen sowie verschiedene Editionen, beides erkennbar anhand eines kleinen Symbols rechts, das kann ich rausfiltern und vergleichen, damit würden von diesen 10000 Karten nurnoch ca 10-30 in Frage kommen.
    Damit will ich jetzt einen Vergleich machen, also das Bild in der Mitte vergleichen und herausfinden welches wohl davon das unter der Kamera ist.

    Hab mir vorhin mal OpenCV gesaugt und probier da grad etwas mit rum, sieht ganz interessant und brauchbar aus, danke schonmal.



  • find die vorstellung von 10k bild samples übrigens voll erotisch 😃


Anmelden zum Antworten