sudoku downloader and recognizer autor: pedro evaristo gonzález sánchez

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

Upload: ximena-solano

Post on 16-Feb-2015

12 views

Category:

Documents


1 download

TRANSCRIPT

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

Sudoku Downloader and Recognizer

Autor: Pedro Evaristo González Sánchez

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

Actividad principal (Portrait)

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

Actividad principal (Landscape)

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

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

Actividad principal - Custom View

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

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

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

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

Download Activity (II)

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

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

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

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

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

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

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

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

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

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

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

Gracias!!!. Hasta pronto!.