Frage

Ich entwickle eine Augmented Reality -Anwendung für Android, die die Kamera des Telefons verwendet, um die Anordnung der farbigen Quadrate auf jedem Gesicht eines Zauberwürfels zu erkennen.

Eine Sache, über die ich mir nicht sicher bin, ist, wie genau ich die farbigen Quadrate auf jedem Gesicht des Würfels erkennen und erkennen würde. Wenn Sie sich einen Rubik -Würfel ansehen, können Sie sehen, dass jedes Quadrat eine von sechs möglichen Farben mit einem dünnen schwarzen Rand ist. Dies führte mich zu der Annahme, dass es relativ einfach sein sollte, ein Quadrat zu erkennen, möglicherweise mit einer vorhandenen Markererkennungs -API.

Rubik

Meine Frage ist wirklich, hat jemand hier Erfahrung mit Bilderkennung und Android gemacht? Idealerweise würde ich gerne API implementieren und vorhanden sein, aber es wäre ein interessantes Projekt, wenn mich jemand in die richtige Richtung verweisen könnte, um loszulegen.

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Möchten Sie die Kamera auf einen Würfel richten und die Konfiguration verstehen?

Das Erkennen von Objekten in Fotografien ist ein offenes KI -Problem. Sie müssen also das Problem ein wenig einschränken, um eine Traktion darauf zu erhalten. Ich schlage vor, mit so etwas zu beginnen:

  1. Der Würfel wird aus einer Entfernung von genau 12 Zoll mit einer 100 -W -Lichtquelle direkt hinter der Kamera fotografiert. Der Würfel wird diagonal eingestellt, sodass er genau 3 Gesichter mit einer Ecke in der Mitte enthält. Die Kamera wird so positioniert, dass sie sich direkt auf die Würfelecke in der Mitte konzentriert.

  2. Ein Bild wird aufgenommen. Dann wird der Würfel vertikal und horizontal um 180 Grad gedreht, so dass die anderen drei Gesichter sichtbar sind. Ein zweites Bild wird aufgenommen. Da Sie genau wissen, wo sich jedes Gesicht befinden soll, schnappen Sie sich ein paar Pixel aus jeder Region und nehmen Sie an, dass dies die Farbe dieses Quadrats ist. Denken Sie daran, dass der Würfel normalerweise wie im Bild hier gezeigt wird. Sie müssen sich also immer 9*6 = 54 kleine Quadrate ansehen, um die Farbe jeder einzelnen zu erhalten.

  3. Die Informationen in diesen beiden Bildern definieren die Cube -Konfiguration. Generieren Sie ein Bild des Würfels in derselben Konfiguration und erlauben Sie dem Benutzer, ihn zu bestätigen oder zu korrigieren.

Es könnte einfacher sein, 6 Bilder zu machen - eines von jedem Gesicht, und in gut definierter Reihenfolge um die Gesichter zu reisen. Denken Sie daran, dass sich das zentrale Quadrat jedes Gesichts nicht bewegt und die richtige Farbe für dieses Gesicht definiert.

Sobald Sie die Konfiguration haben, können Sie OpenGL -Operationen verwenden, um die Würfelscheiben zu drehen. Dies wird ein Programm mit Hunderten von Codezeilen sein, um den Würfel zu definieren und zu drehen, und was auch immer Sie für die Bilderkennung tun.

Andere Tipps

Zusätzlich zu dem, was Peter gesagt hat, ist es wahrscheinlich am besten, Leitlinien auf dem Bild des Würfels zu überlagern, wenn der Benutzer die Bilder aufnimmt. Der Benutzer räumt dann den Würfel innerhalb der Führungslinien auf, ob eine einzige Seite (eine quadratische Führungslinie) oder drei Seiten (drei Quadrate in der Perspektive). Möglicherweise möchten Sie auch, dass der Benutzer die Anzahl der farbigen Kästchen in jeder Zeile angibt. Probieren Sie in Ihrem Code die Farbe in der Mitte jedes farbigen Boxs und vergleichen Sie sie mit den anderen farbigen Kästchen (innerhalb einer Toleranzebene), um die Farben zu identifizieren. Zusätzlich zur Bereitstellung der anerkannten Ergebnisse für den Benutzer wäre es schön, dass der Benutzer Änderungen an den anerkannten Farben vornimmt. Es scheint nicht so, als ob eine ausgefallene Bilderkennung erforderlich ist.

Nette Idee, ich plane auch Computer Vision- und Marker -Detektoren, aber für ein anderes Projekt. Ich suche immer noch, ob im Web verfügbare Informationen verfügbar sind, z. B. Verknüpfen von OpenCV oder Artoolkit mit dem Android SDK. Wenn Sie zusätzliche Informationen haben, wie Sie eine Computer -Vision -API verknüpfen können, lassen Sie es mich bitte wissen.

Bis bald und viel Glück!

Nyartoolkit verwendet die Markererkennung und wird in Java (sowie in verwaltetem C# für Windows -Geräte) hergestellt. Ich weiß nicht, wie gut es auf der Android -Plattform funktioniert, aber ich habe gesehen, dass es auf Windows Mobile -Geräten verwendet wird und es sehr gut gemacht ist.

Viel Glück und glückliches Programmieren!

Ich würde vorschlagen, die Andoid OpenCV -Bibliothek zu betrachten. Sie möchten wahrscheinlich die Blob -Erkennungsalgorithmen untersuchen. Möglicherweise möchten Sie auch Hough -Linien oder Countours in Betracht ziehen, um Quads zu erkennen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top