La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Sudoku Downloader and Recognizer

Presentaciones similares


Presentación del tema: "Sudoku Downloader and Recognizer"— Transcripción de la presentación:

1 Sudoku Downloader and Recognizer
Autor: Pedro Evaristo González Sánchez

2 Actividad principal (Portrait)
Reconocimiento Vista personalizada Jugabilidad Backtracking Descargar tablero

3 Actividad principal (Landscape)

4 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 )

5 Actividad principal - Custom View
La Actividad instancia la Vista Le atribuye los atributos sensoriales (Focusable…) Cuando se pulsa el botón de un número, la Actividad recibe la celda actual “tocada” Actualiza el Sudoku y le ordena a la vista que se pinte ( onDraw() e invalidate() )

6 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 )

7 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

8 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.

9 Download Activity (II)

10 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

11 3.0 Conceptos previos ( Android )
SDK y OpenCV Library (OpenCV) NDK (Native Developing Kit) ( Tesseract ) Construir las librerias y referenciarlas a nuestra aplicación

12 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.

13 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)

14 Procesamiento de la Imagen (II)
Realizamos una detección de bordes A continuación, buscamos el contorno más grande que incluye la imagen. (ROI)

15 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.

16 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.

17 Procesamiento de la Imagen (V)
Es el momento de descomponer el tablero en celdas para poder procesarlas una a una.

18 Procesamiento de la Imagen (VI)
En cada una de las celdas volvemos a realizar un procesamiento paralelo. ( Ahora pensando en las exigencias de Tesseract ) Equalizamos Histograma Threshold (Binarización) Suavizado(Smooth) + Dilatación findContours()

19 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

20 Gracias!!!. Hasta pronto!.


Descargar ppt "Sudoku Downloader and Recognizer"

Presentaciones similares


Anuncios Google