2012-11-05 7 views
5

Ich bin Anfänger im CV-Bereich und ich bin auf einer relativ einfachen Aufgabe, ich möchte Domino Rock Werte analysieren.Simple Image Recognition Aufgabe in Android: Dominoe Lesen

Ich verwendete Blob-Analyse-Methode, die nicht wirklich effizient auf Android war, dass ich einen reinen Java-Code verwendet, der langsamer als natives C ist. Und Hintergrunddaten verursachten mir Probleme, da es auch Blobs haben könnte.

Nach zu viel Lesen lief ich durch "Template Matching" -Methode, die für mich am besten klingt, für seine geringe Ressourcen benötigen und Rotation/Skalierung Toleranz kann ich einfach speichern die Vorlage von jedem Stück der Dominos und dann übereinstimmen es im kommenden Bild zur Analyse und zum Zählen.

Jetzt alles, was ich will, ist Ihre Anleitung zu Bibliotheken/Methoden, die mir helfen können, Template-Matching, ich bevorzuge reines Java, aber kann native C-Bibliotheken verwenden, wenn keine Wahl gefunden wird.

P.S: Wenn Sie mich bezüglich des von mir gewählten Algorithmus falsch finden, geben Sie mir bitte Ihren Rat.

Antwort

8

Bilderkennung ist eine High-Level-Verarbeitung in der Computer Vision vor allem müssen Sie einige Vorverarbeitung und erkennen Sie das Objekt zuerst.

Um die Vorlage zuerst zu tun, müssen Sie die Region von Interesse des Bildes finden, das Sie erkennen möchten. Um dies zu tun, können Sie eine von vielen Algorithmen wie Feature-basierte Erkennung und Darstellungserkennung auswählen. den ROI (Region of Interest) Nach dem Auffinden Sie das Template-Matching tun können (ich nehme an, Sie bereits das Konzept des Template-Matching verstehen)

die Zusammenfassung davon können Sie es in dem Flussdiagramm unten

Template Matching Flow Diagram

sehen

und das Beispiel der schablone übereinstimmen

enter image description here

, nachdem Sie den gesamten Prozess verstehen können Sie einige avaible Bibliothek verwenden, die android unterstützt Plattform wie OpenCV (Open Source) oder FastCV von Qualcomm beide von ihnen verwenden native C, so müssen Sie Android NDK verwenden, um es zu kompilieren.

Wenn Sie Fragen haben, zögern Sie nicht mich in dem Kommentar zu fragen :)