Java Bilder similarity hash schnell berechnen?

CyborgBeta

Lt. Commander
Registriert
Jan. 2021
Beiträge
1.833
Moin,

mit welcher Bibliothek kann ich denn einen similarity hash schnell berechnen?

Ich möchte 2D-Schachfiguren schnell erkennen können, also zum Beispiel, ob dort auf dem Feld ein Bauer oder Läufer steht, und die Farbe - auch wenn sich das Brettdesign oder der Abstand zwischen den Feldern leicht ändert.

Bitte keine KI vorschlagen, weil diese erst aufwändig trainiert werden muss, und ich im Vorfeld nicht alle Designs kenne.

Danke für Ideen

Siehe bitte auch hier 1 und hier 2
 
Ich schätze, es steht dann kein Bild vom Spielbeginn zur Verfügung, in der alle Figuren in ihrer Ausgangsposition stehen?
 
GPT 3.5 schlägt folgendes vor:

Eine beliebte Java-Bibliothek zur Berechnung von Ähnlichkeits-Hashes ist "phash-java". Diese Bibliothek implementiert den sogenannten "Perceptual Hashing" (pHash), der zur Berechnung von Hashes für Multimedia-Dateien wie Bilder und Audio verwendet wird. Mit dieser Bibliothek kannst du schnell Ähnlichkeits-Hashes für deine Dateien generieren und vergleichen.

Ich bin ja meist unzufrieden, mit KI Vorschlägen. Aber Bibliothek Vorschläge, das geht...

Die Frage ist, wie wahrscheinlich eine Hash Collision ist. Eventuell reicht auch schon schwache/schnelle Hash Werte wie z.B. SHA1
 
  • Gefällt mir
Reaktionen: CyborgBeta
tollertyp schrieb:
Ich schätze, es steht dann kein Bild vom Spielbeginn zur Verfügung, in der alle Figuren in ihrer Ausgangsposition stehen?

Doch, das schon. Eventuell ist aber der erste Halbzug schon gemacht worden, also ein Bauer vorgesetzt zum Beispiel.
 
Die Frage ist halt für mich trotzdem: Wie gut funktioniert das in der Praxis, wenn sich die Schachfiguren optisch verädern. Bin aber gespannt über eine entsprechende Rückmeldung.

Was ich meine: Es geht hier ja nicht darum, ob zwei Figuren ähnlich sind, sondern ob sie die gleiche Bedeutung haben.

Edit:
Und dank der Antwort kann ich mich gleich selbst relativieren:
CyborgBeta schrieb:
Doch, das schon. Eventuell ist aber der erste Halbzug schon gemacht worden, also ein Bauer vorgesetzt zum Beispiel.
Ah okay, das heißt, dass du eigentlich die Bilder der Figuren der jeweiligen Schachpartie an der Stelle ermitteln kannst, und sie als Referenz für spätere Vergleiche verwenden - dann hast du denke ich schon gute Chancen mit so einer Ähnlichkeitsprüfung.
 
  • Gefällt mir
Reaktionen: CyborgBeta
Ja, das stimmt. Zwei Figuren mit unterschiedlicher Bedeutung sehen oft nur minimal unterschiedlich aus ...

Ich hatte so etwas Ähnliches vor ca. einem Jahr schon mal gemacht. Dabei habe ich aber einfach 10 feste Pixel hergenommen, um die aktuelle Figur herausfinden. Das Ergebnis war, dass nicht in jeder Situation die richtige Figurenstellung (FEN) erkannt wurde.
 
  • Gefällt mir
Reaktionen: CyborgBeta
Ich glaube, diese Algorithmen werden Bilder von Feldern desselben Schachbretts mit unterschiedlichen Figuren zu ähnlich finden, und die gleichen Figuren auf unterschiedlichen Schachbrettern zu unterschiedlich finden, um nützlich zu sein. Die Konturen der Figuren sind entscheidend, das Problem ähnelt also eher dem Erkennen von Ziffern, was quasi das "Hello World" für Machine Learning ist. Dazu müssen die Ziffern aber auch erst einmal isoliert, sozusagen in ein Rechteck eingepasst werden, was bei Figuren auf einem Schachbrett praktischerweise bereits der Fall ist, so dass man nur die Felder isolieren muss, was aber auch tricky sein könnte. Und bezüglich Konturen wäre sicherlich ein entsprechendes Preprocessing sinnvoll, Stichwort Edge Detection.
 
  • Gefällt mir
Reaktionen: CyborgBeta
@H4110 Danke für die Inspiration ! Aber ich denke, bevor es Machine-Learning gab ... haben sich auch schon schlaue Leute über algorithmische Ansätze Gedanken gemacht. ;) Ich lese mich mal in Edge-Detection ein ... jedenfalls ist das wohl nix, was man an einem Nachmittag auf die Schnelle umsetzen könnte.
 
Müssen es Hashes sein? Vielleicht bietet OpenCV was an, womit man gut Ähnlichkeiten erkennen kann. Gibt sicher auch eine Schnittstelle zu Java dafür.
 

Ähnliche Themen

Zurück
Oben