Details | |
---|---|
Autoren | Alexander Melde (7939560) Anja Ohlhäuser (6986288) Nina Zaske (4627174) |
Betreuer | Stefan Gehrig |
Vorlesung | Digitale Bildverarbeitung (6. Semester) |
Studiengang/Kurs | B. Sc. Angewandte Informatik – Kommunikationsinformatik TINF15K |
Titel der Arbeit | Projekt zu Grundlagen der Bildverarbeitung: Entwicklung eines Augmented Reality Sudoku-Lösers |
Bearbeitungszeitraum | 14.03.2018 - 10.04.2018 |
Abgabedatum | 11.04.2018 |
Im Rahmen einer Vorlesung sollte unter Verwendung des OpenCV Frameworks ein beliebiges Programm entwickelt werden, dass Techniken der digitalen Bildverarbeitung verwendet.
Das mit Python 3 entwickelte Programm sucht im Kamerabild einer Computer-Webcam nach Sudoku-Feldern, extrahiert das Sudoku-Feld sowie jedes einzelne der 9x9 Zahlen-Felder, erkennt die Zahlen in den Feldern, löst das Sudoku und ergänzt die fehlenden Zahlen des Sudokus in Echtzeit im Kamerabild.
- Erkennung des Sudoku-Quadrats im Gesamtbild
- Aufteilung des Sudoku-Quadrats in 9x9 Felder mit zwei Versionen:
- Erkennen der kleinen Quadrate anhand deren Konturen (Genauere Erkennung des Sudoku Felds und ermöglicht Validierung ob Quadrat ein Sudoku-Feld ist, oft werden aber nicht alle Felder erkannt.)
- Feste Aufteilung des 9x9 Felds mit mathematischen Rechnungen (Es werden immer 9x9 Felder „erkannt“, kann nicht zur Validierung von echten Sudoku-Feldern genutzt werden)
- Anpassen eines Sudoku-Lösungs-Algorithmus an unsere Datenstruktur
- Einbinden eines Machine Learning Frameworks und Trainieren des Modells auf handschriftliche Zahlen (hierfür gab es bereits einen Datensatz)
- Vorbereiten der kleinen Sudoku-Bildausschnitte für die Ziffern-Klassifikation (Zuschnitt, Resizing, Farbwertumwandlung)
- Auswertung der Klassifikations-Antwort (Wahrscheinlichkeiten berücksichtigen um leere Felder zu unterscheiden)
- Anzeige der gelösten Sudoku-Ziffern im zugeschnittenen Bild und Ausgabe des Bilds
- Option zum Einlesen von Beispielbildern und zur Verwendung der Webcam als Eingabemöglichkeit
- Grundsätzlich wird die Zielsetzung für manche Bilder erreicht
- In das Bild gehalten Sudokus werden in den meisten Fällen korrekt erkannt
- Ziffern werden oft nicht korrekt erkannt, weshalb der Sudoku-Solver eine falsche Eingabe erhält und dann auch die Ausgabe nicht stimmt.
- In Modultests wurde die Funktionalität des Sudoku-Solvers bestätigt
- Einblendung des gelösten Sudokus in Original-Kamerabild (statt in Sudoku-Zuschnitt, erfordert rückrechnung der zum zugeschnittenen Sudoku relativen 9x9-Positionen zum Originialbild)
- Verbesserung der Ziffern-Erkennung (Datensatz mit höherer Auflösung und Computerschriftarten verwenden)
Zur Entwicklung wurde die Python Version 3.6.3 unter Windows und Mac verwendetet.
Verwendete Python Module
- opencv-python
- pillow
- imutils
- numpy
- scipy
- skikit-learn
- sklearn