sudoku downloader and recognizer autor: pedro evaristo gonzález sánchez
TRANSCRIPT
![Page 1: Sudoku Downloader and Recognizer Autor: Pedro Evaristo González Sánchez](https://reader033.vdocument.in/reader033/viewer/2022061302/54e447524a795950188b5951/html5/thumbnails/1.jpg)
Sudoku Downloader and Recognizer
Autor: Pedro Evaristo González Sánchez
![Page 2: Sudoku Downloader and Recognizer Autor: Pedro Evaristo González Sánchez](https://reader033.vdocument.in/reader033/viewer/2022061302/54e447524a795950188b5951/html5/thumbnails/2.jpg)
Actividad principal (Portrait)
![Page 3: Sudoku Downloader and Recognizer Autor: Pedro Evaristo González Sánchez](https://reader033.vdocument.in/reader033/viewer/2022061302/54e447524a795950188b5951/html5/thumbnails/3.jpg)
Actividad principal (Landscape)
![Page 4: Sudoku Downloader and Recognizer Autor: Pedro Evaristo González Sánchez](https://reader033.vdocument.in/reader033/viewer/2022061302/54e447524a795950188b5951/html5/thumbnails/4.jpg)
Vista personalizada (Custom view)
- Paint y Canvas para el dibujo de líneas, background y números
- Adaptable ( OnSizeChanged )
- Autogestión de eventos ( onTouchEvent, onKeypressed )
- Interacción con la actividad principal ( contiene la Actividad )
![Page 5: Sudoku Downloader and Recognizer Autor: Pedro Evaristo González Sánchez](https://reader033.vdocument.in/reader033/viewer/2022061302/54e447524a795950188b5951/html5/thumbnails/5.jpg)
Actividad principal - Custom View
![Page 6: Sudoku Downloader and Recognizer Autor: Pedro Evaristo González Sánchez](https://reader033.vdocument.in/reader033/viewer/2022061302/54e447524a795950188b5951/html5/thumbnails/6.jpg)
Clase Sudoku (I) Matriz [9][9] de Enteros
Sobrecarga del constructor ( String )
Para determinadas situaciones, devuelve una cadena que contiene todas las posiciones del Sudoku ( Bundle y Comunicación entre Actividades)
Comprobación de vecindad ( fila, columna y bloque )
![Page 7: Sudoku Downloader and Recognizer Autor: Pedro Evaristo González Sánchez](https://reader033.vdocument.in/reader033/viewer/2022061302/54e447524a795950188b5951/html5/thumbnails/7.jpg)
Clase Sudoku II ( Backtracking )
- Si estás en la casilla (9,9) => Finaliza
- Si encuentras un dígito, continua a la casilla siguiente
- Para cada valor 1..9
- Si cumple reglas de vecindad actualiza esta posición y- Sudoku(i+1,j+1)
- Si no encuentras candidato, restaura y vuelve una posición atrás
![Page 8: Sudoku Downloader and Recognizer Autor: Pedro Evaristo González Sánchez](https://reader033.vdocument.in/reader033/viewer/2022061302/54e447524a795950188b5951/html5/thumbnails/8.jpg)
Download Activity (I)
- Tenemos un tablero alojado en un servidor web
- Tablero “bien formado” incluido en un archivo txt
- Queremos llevarlo a la aplicación para jugar.
- Una forma de actualización de la misma.
![Page 9: Sudoku Downloader and Recognizer Autor: Pedro Evaristo González Sánchez](https://reader033.vdocument.in/reader033/viewer/2022061302/54e447524a795950188b5951/html5/thumbnails/9.jpg)
Download Activity (II)
![Page 10: Sudoku Downloader and Recognizer Autor: Pedro Evaristo González Sánchez](https://reader033.vdocument.in/reader033/viewer/2022061302/54e447524a795950188b5951/html5/thumbnails/10.jpg)
3. Reconocimiento del Sudoku
3.0 Conceptos previos dependientes de Android
3.1 Captura de la imagen
3.2 Procesamiento de la imagen (OpenCV)
3.3 Optical Chracter Recognition (OCR) Tesseract
![Page 11: Sudoku Downloader and Recognizer Autor: Pedro Evaristo González Sánchez](https://reader033.vdocument.in/reader033/viewer/2022061302/54e447524a795950188b5951/html5/thumbnails/11.jpg)
3.0 Conceptos previos ( Android )
SDK y OpenCV Library (OpenCV)
NDK (Native Developing Kit) ( Tesseract ) Construir las librerias y referenciarlas a nuestra aplicación
![Page 12: Sudoku Downloader and Recognizer Autor: Pedro Evaristo González Sánchez](https://reader033.vdocument.in/reader033/viewer/2022061302/54e447524a795950188b5951/html5/thumbnails/12.jpg)
3.1 Captura de la imagen
-Conectar con el Intent que se encarga de capturar imágenes
-Capturamos y guardar la imagen en un archivo temporal
-Pre-procesarla => Buscamos equilibrio entre buena calidad de imagen y Computabilidad.
![Page 13: Sudoku Downloader and Recognizer Autor: Pedro Evaristo González Sánchez](https://reader033.vdocument.in/reader033/viewer/2022061302/54e447524a795950188b5951/html5/thumbnails/13.jpg)
3.2 Procesamiento de la Imagen (I)
Primera gran controversia, la imagen capturada tiene perspectiva
El concepto genérico es que procesamos a dos niveles: (RGB y GRAY)
![Page 14: Sudoku Downloader and Recognizer Autor: Pedro Evaristo González Sánchez](https://reader033.vdocument.in/reader033/viewer/2022061302/54e447524a795950188b5951/html5/thumbnails/14.jpg)
Realizamos una detección de bordes
A continuación, buscamos el contorno más grande que incluye la imagen. (ROI)
Procesamiento de la Imagen (II)
![Page 15: Sudoku Downloader and Recognizer Autor: Pedro Evaristo González Sánchez](https://reader033.vdocument.in/reader033/viewer/2022061302/54e447524a795950188b5951/html5/thumbnails/15.jpg)
Procesamiento de la Imagen (III) Aplicamos el algoritmo de Hough para la localización de las
líneas en el tablero. El procesamiento de líneas tiene dos tareas fundamentales:
Cada línea será eliminada, pintándolas del color que proceda en cada tipo de imagen.
Cuando vaya a dibujar una línea tendré en cuenta si el comienzo o el final de la misma está en alguna esquina.
![Page 16: Sudoku Downloader and Recognizer Autor: Pedro Evaristo González Sánchez](https://reader033.vdocument.in/reader033/viewer/2022061302/54e447524a795950188b5951/html5/thumbnails/16.jpg)
Procesamiento de la Imagen (IV)
Cálculo de la matriz que define la transformación de perspectiva necesaria para pasar de las esquinas del Sudoku a las esquinas de la imagen completa.
Aplicación de una WarpPerspective con dicha matriz.
![Page 17: Sudoku Downloader and Recognizer Autor: Pedro Evaristo González Sánchez](https://reader033.vdocument.in/reader033/viewer/2022061302/54e447524a795950188b5951/html5/thumbnails/17.jpg)
Procesamiento de la Imagen (V)
Es el momento de descomponer el tablero en celdas para poder procesarlas una a una.
![Page 18: Sudoku Downloader and Recognizer Autor: Pedro Evaristo González Sánchez](https://reader033.vdocument.in/reader033/viewer/2022061302/54e447524a795950188b5951/html5/thumbnails/18.jpg)
Procesamiento de la Imagen (VI)
En cada una de las celdas volvemos a realizar un procesamiento paralelo. ( Ahora pensando en las exigencias de Tesseract )
EqualizamosHistograma
Threshold (Binarización)
Suavizado(Smooth)+
Dilatación
findContours()
![Page 19: Sudoku Downloader and Recognizer Autor: Pedro Evaristo González Sánchez](https://reader033.vdocument.in/reader033/viewer/2022061302/54e447524a795950188b5951/html5/thumbnails/19.jpg)
Tesseract ( OCR )
¡No esperar milagros!. Es necesario un buen procesamiento
Acotar diccionario solo a dígitos (1..9)
Por cada número liberar memoria tanto de la imagen como del objeto Base de Tesseract. Hay menos recursos (teléfono).
Tesseract 6
![Page 20: Sudoku Downloader and Recognizer Autor: Pedro Evaristo González Sánchez](https://reader033.vdocument.in/reader033/viewer/2022061302/54e447524a795950188b5951/html5/thumbnails/20.jpg)
Gracias!!!. Hasta pronto!.