Vous êtes sur la page 1sur 82

ESCUELA SUPERIOR DE INGENIEROS DE TELECOMUNICACION

PROYECTO FIN DE CARRERA

Reconocimiento Automtico de Matrculas de Vehculos

Autor: Jos Pablo Caballero Moreno

A mis padres, por haberme dado la oportunidad de llegar estudiar esta carrera. Y sobre todo a mi novia, Pili, por su ayuda, comprensin y paciencia en los momentos mas difciles. Sin ellos, no habra llegado hasta aqu....

INDICE
1. INTRODUCCIN ...................................................................... 8
1.1 1.2 INTRODUCCION AL PROBLEMA..........................................................8 HERRAMIENTAS NECESARIAS .............................................................9 1.2.1 Entorno ..............................................................................................9 1.2.2 Adquisicin.......................................................................................9 1.2.3 Procesamiento ................................................................................10 1.3 1.4 OBJETIVO DEL PROYECTO ...................................................................10 APLICACIONES DEL PROYECTO ........................................................10

2. PRESENTACIN DEL PROBLEMA ........................................... 12


2.1 ADQUISICION DE LA IMAGEN DIGITAL .........................................12 2.1.1 Fundamentos de la Imagen Digital .............................................12 2.1.1.1 Grficos de vector y de mapa de bits........................................12 2.1.1.2 Calidad de la imagen ...............................................................13 2.1.2 Captacin de la imagen digital ....................................................15 2.1.2.1 Captacin .................................................................................15 2.1.2.2 Muestreo y Cuantizacin ........................................................16 2.1.2.3 Calidad de la imagen digital ....................................................18

2.1.3 Formatos de archivo de la imagen digital ..................................19 2.1.3.1 Formato TIFF ..........................................................................19 2.1.3.2 Formato PICT..........................................................................20 2.1.3.3 Formato GIF ............................................................................20 2.1.3.4 Formato JPEG .........................................................................21 2.1.4 Metodos de captacin de la imagen digital ...............................22 2.1.4.1 Cmara fotogrfica analgica ..................................................22 2.1.4.2 Cmara fotogrfica digital .......................................................22 2.1.4.3 Cmara de video analgica ......................................................23 2.1.4.4 Cmara de video digital ...........................................................23 2.2 SEGMENTACIN DE LA MATRICULA ..............................................24 2.2.1 Segmentacin Manual ...................................................................24 2.2.2 Segmentacin Automtica............................................................25 2.2.2.1 Mtodo Morfolgico ................................................................25 2.2.2.2 Mtodo Gradiente ....................................................................26
2.3

BINARIZACIN DE LA MATRCULA.................................................28 2.3.1 Binarizacin Mtodo Simple ........................................................29 2.3.2 Binarizacin Mtodo Porcentual .................................................29 2.3.3 Binarizacin Mtodo Otsu ............................................................30

2.4

RECONOCIMIENTO DE LOS CARACTERES .....................................33 2.4.1 Reconocimiento Manual ...............................................................33 2.4.2 Reconocimiento Automtico ........................................................34

2.5

CONCEPTOS BASICOS DE BASES DE DATOS ..................................35 2.5.1 Qu es una Base de Datos? .........................................................36 2.5.2 Herramientas de Bases de Datos .................................................39 2.5.2.1 Motores de Bases de Datos ......................................................39 2.5.2.2 Modelo de Objetos de Acceso a Datos .....................................40 2.5.2.3 Herramientas de desarrollo de la interfaz................................41

3. HERRAMIENTAS USADAS ..................................................... 43


3.1 MATLAB.....................................................................................................43 3.1.1 Tipos de datos.................................................................................44 3.1.2 Funciones ........................................................................................45 3.1.3 Biblioteca de Tratamiento Digital de Imgenes.........................46 3.1.4 Biblioteca de Bases de Datos ........................................................47 3.1.5 Interfaz grfica de usuario (GUI).................................................48 3.2 3.3 RECONOCIMIENTO OPTICO DE CARACTERES (OCR) .................50 BASES DE DATOS.....................................................................................52 3.3.1 Implementacin de la Base de Datos con Access ......................52

3.3.2 Definicin del Objeto de acceso a Datos.....................................54

4. DETALLE DEL PROYECTO ..................................................... 57


4.1 DESCRIPCIN TERICA........................................................................57 4.1.1 Adquisicin de la imagen digital.................................................57 4.1.2 Localizacin de la matrcula.........................................................58 4.1.2.1 Localizacin Horizontal...........................................................58 4.1.2.2 Localizacin vertical ................................................................60 4.1.3 Binarizacin ....................................................................................61 4.1.4 Reconocimiento de los caracteres (OCR)....................................62 4.1.5 Base de datos ..................................................................................62 4.1.6 Interfaz grfica de usuario............................................................63 4.2 DESCRIPCION PRCTICA (RUTINAS) ...............................................65 4.2.1 Proyecto.m ......................................................................................65 4.2.2 Encuentra.m....................................................................................71 4.2.3 Binariza.m .......................................................................................72 4.2.4 HacerOCR.m...................................................................................73 4.2.5 Basedatos.m ....................................................................................74 4.2.6 Gsobelh.m .......................................................................................74 4.2.7 Hist2D.m .........................................................................................75

4.2.8 Umbral.m ........................................................................................75

5. CONCLUSIONES..................................................................... 76
5.1 RESULTADOS............................................................................................76 5.1.1 Resultados individuales................................................................76 5.1.2 Resultados totales ..........................................................................80 5.2 LINEAS DE AMPLIACION .....................................................................80 5.2.1 Algoritmo de segmentacin de la matricula..............................80 5.2.2 Reconocimiento ptico de Caracteres (OCR)............................81 5.2.3 Interfaz grfica de usuario............................................................81

6. REFERENCIAS ......................................................................... 82

1
INTRODUCCIN

1.1 INTRODUCCION AL PROBLEMA


El proyecto que les vamos a describir a continuacin trata sobre reconocimiento automtico de matrculas de vehculos. En la figura 1.1 se puede observar el equipamiento necesario para la elaboracin del proyecto.

Entorno

Adquisicin
Figura 1.1. Montaje para la elaboracin del proyecto

Procesamiento

Como se observa en la figura 1.1. el montaje consta de 3 mdulos bien diferenciadas. A continuacin les describimos de forma abreviada cada uno de los mdulos: Entorno: Ambiente que rodea a las imgenes que pasarn a formar parte del proyecto. Depende mucho de la aplicacin que se le quiera

-8-

INTRODUCCION

dar. Adquisicin: Mtodo de adquisicin de las imgenes. La fuente puede ser analgica en cuyo caso las imgenes deben ser digitalizadas para su procesamiento en el ordenador. Procesamiento: Conjunto de programas y rutinas que ejecutadas realizan la deteccin automtica de la matrcula. Nuestro proyecto se centra en la parte software del procesamiento.

1.2 HERRAMIENTAS NECESARIAS


Para la elaboracin del proyecto se han utilizado los siguientes equipos.

1.2.1 Entorno
Se ha utilizado un entorno de la rampa de un garaje particular, con la cmara fija mediante trpode en un punto alto de la entrada al garaje. Todas las fotos fueron tomadas en el mismo da a una hora en la que hay mayor trnsito de entrada al garaje.

1.2.2 Adquisicin
Se ha utilizado una cmara fotogrfica digital modelo Sony Mavica con salida de diskette. Las fotos han sido tomadas a gran resolucin en formato JPEG con una resolucin de 800x600 pixels. Posteriormente se observar que entre los pasos necesarios para la deteccin automtica de la matrcula es

-9-

INTRODUCCION

necesario una reduccin de la imagen pues con tanta resolucin el programa presentaba fallos en algunas fotos.

1.2.3 Procesamiento
Se ha utilizado un ordenador personal. El software instalado para la elaboracin del proyecto ha sido MATLAB en su versin 6.5, as como un programa de Reconocimiento ptico de Caracteres (OCR) de libre distribucion.

1.3 OBJETIVO DEL PROYECTO


El objetivo del proyecto ha sido desarrollar un programa que permita reconocer matrculas de vehculos en el menor tiempo posible para su futura aplicacin en sistemas de tiempo real. Para ello se ha optimizado el tiempo de procesamiento al mnimo con los mejores resultados posibles.

1.4 APLICACIONES DEL PROYECTO


Entre las aplicaciones que se le puedan dar al proyecto vamos a destacar las siguientes: Deteccin de matriculas falsas: Utilizacin del proyecto con acceso a base de datos de vehculos en circulacin para la posible deteccin de vehculos con matriculas falsas. Control de acceso a garaje privado: Uso del proyecto con acceso a base de datos de vehculos registrados en un garaje para permitir el acceso al garaje sin necesidad de tarjeta ni llave, llevar el control de las plazas - 10 -

INTRODUCCION

ocupadas, de las horas de llegada y salida... Control de acceso a garaje pblico: Uso del proyecto con acceso a base de datos en la que se tienen los datos de los vehculos y sus usuarios con lo que se podra transferir directamente el importe a su cuenta corriente sin necesidad de abonar a la salida.

- 11 -

2
PRESENTACIN DEL PROBLEMA

2.1 ADQUISICION DE LA IMAGEN DIGITAL


En el presente apartado profundizaremos en conceptos de la imagen digital (basado en referencia [1]). Posteriormente se presentarn distintos

mtodos de adquisicin de la imagen digital, exponiendo las ventajas e inconvenientes de cada uno de ellos.

2.1.1 Fundamentos de la Imagen Digital


Una imagen digital queda representada mediante valores digitales (discretos), procedentes del muestreo de una imagen analgica. Antes de analizar con detalle la imagen digital, es necesario comprender las diferencias entre las dos maneras utilizadas por el ordenador para almacenar informacin de imgenes: grficos vectoriales y grficos de mapa de bits. 2.1.1.1 Grficos de vector y de mapa de bits Los grficos vectoriales, tambin conocidos como grficos orientados a objetos, son creados mediante programas de dibujo. Las imgenes vectoriales se

- 12 -

PRESENTACION DEL PROBLEMA

almacenan como una lista que describe la ubicacin y las propiedades de los objetos que configuran la imagen; tales como formas, arcos y lneas. Los grficos de mapa de bits los crean escneres y cmaras digitales. Es sin duda alguno el mas usado y por ello, a partir de este momento hablaremos siempre de las imgenes de mapa de bits. Las imgenes de mapa de bits se componen de una matriz de elementos denominados pixeles (Pxel es la abreviatura de picture element -elemento de la imagen-). Cada pxel se almacena en un rea de memoria llamada mapa de bits. Cada pxel tiene una direccin numerada. 2.1.1.2 Calidad de la imagen La calidad de una imagen de mapa de bits se determina durante la captacin segn dos factores: resolucin espacial y resolucin de luminosidad. Como veremos en el apartado de captacin, el tamao del pxel queda determinado por la frecuencia con que se muestrea la imagen. Un intervalo amplio de muestreo origina una imagen de escasa resolucin espacial. Un intervalo ms corto origina una mayor resolucin espacial. La luminosidad o el valor del color para cada pxel queda definido por un bit o por un grupo de bits. Cuantos ms bits se utilicen, la resolucin de luminosidad es mayor. Tambin puede hablarse de profundidad de color o de pixel. A mayor nmero de bits, mayor profundidad y ms colores posibles.

- 13 -

PRESENTACION DEL PROBLEMA

Una imagen de un bit slo puede tener dos valores: blanco o negro. Mediante la agrupacin de pixeles blancos y negros tratan de imitar el gris.

Figura 2.1. Imagen de 1 bit

Una imagen de escala de grises de 8 bits cada pxel contiene uno de los 28=256 matices de gris.

Figura 2.2. Imagen de 8 bits

- 14 -

PRESENTACION DEL PROBLEMA

En una imagen de 24 bits, cada pxel queda descrito por tres grupos de 8 bits que representan los valores de luminosidad para el rojo (Red en ingls) , el verde (Green en ings) y el azul (Blue en ingls) de aqu las siglas RGB. Las imgenes de alta resolucin de 24 bits muestran 16,7 millones de colores (224=256 rojos x 256 azules x 256 verdes).

Figura 2.3. Imagen de 24 bits (8 bits x 3 colores)

2.1.2 Captacin de la imagen digital


2.1.2.1 Captacin Hasta el momento y en lneas generales, las pelculas fotogrficas detectan ms informacin visual de la que es posible captar con un sistema digital. Pero cada da salen a la luz cmaras digitales de reducidas dimensiones con gran resolucin. Un sistema bsico de captacin de la imagen contiene una lente y un - 15 -

PRESENTACION DEL PROBLEMA

detector. En una cmara fotogrfica digital, el detector es un sensor slido de imagen, denominado "Charge Coupled Device" (CCD para abreviar). En un CCD de tipo rea (Area Array CCD), que no es mas que una matriz constituida por cientos de miles de clulas fotosensibles microscpicas, se crean los pixeles mediante la captacin de la intensidad luminosa de pequeas secciones de la imagen. Para captar imgenes en color, se montan sobre las clulas fotosensibles filtros para el rojo, el verde y el azul. 2.1.2.2 Muestreo y Cuantizacin La calidad de una imagen se determina por el tamao del pxel (resolucin espacial) y por la profundidad de color (resolucin de luminosidad). Esto se relaciona con los dos pasos bsicos del proceso de captacin digital: 1. El muestreo determina el tamao del pxel, el cual depende del nmero de clulas fotosensibles. Un CCD con pocas clulas fotosensibles muestrea a baja resolucin y los los pixeles pueden verse a simple vista. Esto se denomina pixelizacin. Un CCD con mas clulas fotosensibles, muestrea con mayor resolucin espacial. En las imgenes de este tipo, no se pueden ver los pxeles individuales. 2. La cuantizacin del pxel determina su profundidad. Cuantos ms bits procese el convertidor analgico-digital, ms valores digitales podr - 16 -

PRESENTACION DEL PROBLEMA

Figura 2.4. Imagen pixelada

Figura 2.5. Imagen no pixelada

representar. Un convertidor de 8 bits representa 256 niveles de luminosidad. Uno de 12 bits representa unos 4096 niveles de luminosidad.

- 17 -

PRESENTACION DEL PROBLEMA

El convertidor compara la seal analgica de entrada con un voltaje de referencia. En una imagen en color, cada pxel recibe tres nmeros de 8 bits para los valores de luminosidad de rojo, verde y azul.

2.1.2.3 Calidad de la imagen digital Adems de las resoluciones espacial y de luminosidad, hay otros factores que influyen sobre la calidad de la imagen digital: El rango dinmico indica la manera en que el escner puede diferenciar entre los niveles de luz. Las fotografas analgicas son excelentes en cuanto a la distincin de pequeos cambios en el nivel de luz, mientras que las digitales tienen una gama de luminosidad limitada. El ruido. La informacin captada por un sensor contiene al mismo tiempo informacin grfica y ruido. El ruido aparece como pequeas variaciones aleatorias en la luminosidad del color. Los cantidad de ruido introducida depender de la relacin entre seal y ruido del sensor. Las distorsiones. Como el efecto Moir, que se produce al submuestrear una imagen. La tasa de muestreo debera basarse en la frecuencia espacial de la imagen (tasa a la que cambia la luminosidad de la imagen). Para eliminar el efecto Moir de una foto, el ndice de muestreo debera elevarse al doble que el de la frecuencia espacial.

- 18 -

PRESENTACION DEL PROBLEMA

2.1.3 Formatos de archivo de la imagen digital


Durante los aos iniciales del desarrollo de los grficos por ordenador y la carrera por el dominio del hardware y el software que mantuvieron los fabricantes, se disearon muchos formatos propietarios. Cada programa grfico salvaba los archivos en su formato propietario, por lo que cualquier archivo salvado desde una aplicacin especfica y utilizado exclusivamente por esa aplicacin era conocido como un archivo nativo. Desafortunadamente, estos archivos nativos no eran siempre comprensibles para otras aplicaciones. Hoy da, la mayora de las aplicaciones grficas pueden salvar y abrir archivos tanto en su formato nativo como en un buen nmero de otros formatos que pueden utilizarse para transferir imgenes desde una aplicacin a otra y de una a otra plataforma. 2.1.3.1 Formato TIFF TIFF (Tag Image File Format) fue desarrollado por Aldus Corporation en 1986, especficamente para salvar imgenes desde escneres, grabadores de pantalla y programas de pintura y retoque fotogrfico. An hoy, es probablemente el formato de mapa de bits ms verstil, seguro y con mayor soporte. Es capaz de describir datos de imagen en dos colores, escala de grises, paleta de color y color completo en varios espacios de color. Incluye un buen nmero de esquemas de compresin y no est ligado a - 19 -

PRESENTACION DEL PROBLEMA

escneres especficos, impresoras o cualquier otro hardware de visualizacin. Sin embargo, el formato TIFF presenta algunas variantes, lo que significa que ocasionalmente una aplicacin puede tener problemas en abrir un archivo TIFF creado con otra aplicacin o bajo una plataforma diferente. 2.1.3.2 Formato PICT El formato PICT es nativo de Macintosh. Apareci en 1984 con la introduccin del software MacDraw. Desde entonces, ha sido utilizado por muchas aplicaciones, especialmente cuando las imgenes se diseaban para previsualizaciones en pantalla. Ideal para presentaciones, proyecciones en pantalla y trabajo de vdeo. El formato PICT puede contener tanto grficos de mapa de bits como orientados a objeto. Es un formato estndar para grficos que son cortados o copiados al Portapapeles (clipboard). 2.1.3.3 Formato GIF Los archivos GIF (Graphics Interchange Format) definen un protocolo concebido para la transmisin en lnea y el intercambio de datos grficos de mapa de bits, de una forma que resulta independiente del hardware utilizado en su creacin o representacin. El formato GIF fue desarrollado en 1987 por CompuServe (uno de los servicios de boletn de anuncios con ms xito en el mundo) para comprimir imgenes de ocho bits, que pudiesen ser telecomunicadas a travs de su servicio - 20 -

PRESENTACION DEL PROBLEMA

e intercambiadas entre los usuarios. El archivo GIF se define en trminos de bloques y sub-bloques que contienen parmetros relevantes y datos utilizados en la reproduccin de un grfico. Una fuente de datos GIF es una secuencia de bloques de protocolo y sub-bloques representando una coleccin de grficos. 2.1.3.4 Formato JPEG JPEG es un mecanismo estandarizado de compresin de imagen. El nombre proviene del Joint Photographic Experts Group, nombre original del comit que escribi el estndar. En realidad, JPEG no es un formato de archivo, sino ms bien un mtodo de codificacin de datos utilizado para reducir el tamao de los archivos de datos. Es ms comnmente utilizado dentro de otros formatos como JFIF y TIFF. JPEG File Interchange Format (JFIF) es un mnimo formato de archivo que posibilita a la secuencia de bits JPEG ser intercambiados entre una amplia variedad de plataformas y aplicaciones. Este formato no incluye ninguna de las prestaciones avanzadas que se encuentran en la especificacin TIFF JPEG o en cualquier formato especfico de aplicaciones. JPEG est diseado para comprimir tanto imgenes a todo color como de escala de grises. Funciona bien con fotografas, dibujo artstico y materiales similares, pero no tan bien con texto o dibujo lineal. Se utiliza normalmente para transmisin en lnea; por ejemplo pginas web. Una imagen de 24 bits

- 21 -

PRESENTACION DEL PROBLEMA

salvada en formato JPEG puede ser reducido hasta alrededor de la vigsima parte de su tamao original.

2.1.4 Metodos de captacin de la imagen digital


A continuacin exponemos de forma breve las ventajas e inconvenientes de los posibles mtodos de adquisicin de la imagen digital. 2.1.4.1 Cmara fotogrfica analgica Entre sus ventajas cabe destacar: Muy buena calidad de imagen. Equipamiento barato. Entre sus desventajas destacamos: Coste por revelado de las fotos. Degradacin de la calidad de la imagen con el tiempo. Necesidad de escner para digitalizar la imagen, lo que conlleva a una posible prdida de calidad en la conversin. 2.1.4.2 Cmara fotogrfica digital Entre sus ventajas destacamos: Imagen digital por naturaleza. No hay prdidas de conversin.

- 22 -

PRESENTACION DEL PROBLEMA

Facilidad de conexin con el ordenador. Entre sus desventajas destacamos: Elevado coste de los equipos. Imgenes con calidad escasa para algunas aplicaciones. 2.1.4.3 Cmara de video analgica Entre sus ventajas destacamos: Costes cada vez mas reducidos. Entre sus desventajas: Necesidad de capturador de video que convierta las imgenes a digital. Necesidad de un sensor que nos indique que trama concreta de la seal de video debe tomarse. Entrelazado de la seal: desplazamiento entre las lneas pares e impares de la imagen, sobre todo en escenas con objetos en movimiento. Grandes prdidas en la conversin de la seal a digital. 2.1.4.4 Cmara de video digital Entre sus ventajas destacamos: Imagen digital por naturaleza. - 23 -

PRESENTACION DEL PROBLEMA

Mayor facilidad de conexin con el PC. Entre sus desventajas: Necesidad de un sensor que nos indique que imagen concreta de la seal de video debe tomarse. Equipos generalmente caros.

2.2 SEGMENTACIN DE LA MATRICULA


sta es, sin duda, la parte ms importante del proyecto y es por ello donde mas se ha profundizado y desarrollado. Comentaremos en el presente apartado los posibles mtodos de segmentacin de la matrcula partiendo de una foto de un coche.

2.2.1 Segmentacin Manual


Es un mtodo obvio, pero que aun as debe ser considerado. Consistira en un operario encargado de mirar constantemente la pantalla y accionando el ratn selecciona la zona de la matrcula. Las ventajas de este mtodo son: Las probabilidades de error son mnimas. Rpida implantacin del proyecto. Las desventajas son: Cansancio o fatiga del operario al tener que mirar siempre el mismo

- 24 -

PRESENTACION DEL PROBLEMA

punto de la pantalla Necesidad de realizar turnos de operarios Coste de mano de obra de los operarios.

2.2.2 Segmentacin Automtica


No es tan seguro como el anterior, pero ofrece mayores prestaciones. Entre ellas cabe destacar: el tiempo de cmputo es menor, el coste de la operacin es menor y el tiempo de funcionamiento es continuo. A continuacin exponemos distintos mtodos de segmentacin de matrculas: 2.2.2.1 Mtodo Morfolgico La base de este mtodo es: los caracteres son objetos formados por trazos finos y colocados sobre un fondo de color opuesto. Eso permite detectarlos con el operador morfolgico llamado top-hat, que se basa en borrar los caracteres y obtener la resta entre la imagen original y la imagen procesada. El borrado de caracteres se consigue, en este caso, aplicando un closing (operador morfolgico para escala de grises que suaviza contornos, elimina pequeos hoyos y rellena huecos en el contorno) a la primera imagen con un elemento estructurante que no quepa dentro del trazo de las letras. Para completar la localizacin se binariza la imagen que resulta del tophat, eligiendo un umbral con el conocido mtodo de Otsu (vase referencia [3]).

- 25 -

PRESENTACION DEL PROBLEMA

Despus, se aplican tcnicas de morfologa binaria para conseguir unir todos los caracteres en un rectngulo y borrar todo lo que no pertenezca a dicho rectngulo. Para ello, hay que suponer conocida la mxima distancia entre caracteres y la mxima y mnima altura de stos.

a) Figura 2.6. a) Imagen original b) Imagen realizado el Top-Hat

b)

Esta es la limitacin principal de este mtodo: slo se puede aplicar si el tamao de los caracteres es conocido. Generalmente, esto significa que se puede aplicar cuando la distancia entre la cmara y la placa es constante. Una vez aislada, la placa que resulta suele ser un poco ms pequea que la real por lo que se agranda con una dilatacin. Para mayor informacin sobre mtodos morfolgicos aplicados a imgenes les recomendamos la lectura de libros de tratamiento digital de imgenes. En nuestro caso hemos acudido a la seccin 8.4 de [2]. 2.2.2.2 Mtodo Gradiente

- 26 -

PRESENTACION DEL PROBLEMA

Este mtodo fue sacado del artculo [] de la Universidad de Vigo. Para buscar la placa, trataremos de modelar las zonas de caracteres presentes en la imagen. Nuestro modelo se basa en derivadas, para ello calculamos el gradiente Sobel horizontal de toda la imagen, pues la zona de los caracteres presenta valores altos positivos seguidos por otros valores altos negativos (o al revs). El gradiente Sobel se calcula aplicando el filtro de la figura 2.7. a la imagen. El operador de Sobel tiene la ventaja de realizar derivacin y
-1 0 1 -2 0 2 -1 0 1
b)

z1 z2 z3 z4 z5 z6 z7 z8 z9
a)

Gh=(z3 + 2z6 + z9) - (z1 + 2z4 + z7)


c)

Figura 2.7. a) Representacin de la imagen b) Operador gradiente Sobel horizontal c) Expresin del gradiente Sobel para cada pxel.

a)

b)

Figura 2.8. a) Imagen original b) Imagen aplicada el gradiente Sobel horizontal

- 27 -

PRESENTACION DEL PROBLEMA

suavizado en un mismo paso, siendo este ltimo efecto muy interesante pues como es sabido, la derivacin realza el ruido. El problema de esta implementacin consiste en saber qu son "valores altos" de gradiente. La eleccin de un umbral fijo, lleva a grandes problemas cuando vara el contraste de las imgenes de entrada. Es preciso pues, elegir un umbral adaptativo para distinguir los valores altos del gradiente. Para ello, usamos el histograma del valor absoluto del gradiente. Para elegir el valor adecuado de umbral recurrimos a un mtodo muy simple: buscar el valor u , tal que, la cola del histograma a partir de u contenga un rea mayor o igual que un porcentaje dado del total (experimentalmente, determinamos un valor de 2.5% para este umbral). As, se consigue que el umbral se adapte a la imagen y la localizacin por gradiente funcione incluso en imgenes de muy bajo contraste. Para mas informacin sobre mtodo de gradiente de Sobel aplicado a imgenes, recomendamos acudan a referencia [2] apartado 7.1.

2.3 BINARIZACIN DE LA MATRCULA


Nuestro objetivo es encontrar el umbral ptimo que permita separar los pxeles pertenecientes al fondo de aquellos pertenecientes a los caracteres. Todos los mtodos se basan, directa o indirectamente, en estudiar el histograma de grises de la imagen. ste ser un histograma con dos grandes mximos y un valle central, como se puede observar en la figura 2.9.

- 28 -

PRESENTACION DEL PROBLEMA

a)

b) Figura 2.9. a) Matricula original b) Histograma de la matrcula

A continuacin pasamos a describir posibles mtodos de binarizacin de la imagen.

2.3.1 Binarizacin Mtodo Simple


El mtodo mas simple de binarizacin es elegir como umbral el centro geomtrico del histograma. Es esto, si la imagen tiene 256 niveles de gris (imagen de 8 bits), el umbral por el mtodo simple sera 128. En la figura 2. 10 se observa el resultado de aplicar este mtodo tomando como origen la matrcula de la imagen 2.9.

2.3.2 Binarizacin Mtodo Porcentual


- 29 -

PRESENTACION DEL PROBLEMA

a)

b) Figura 2.10 a) Matricula y b) histograma Mtodo Simple

La binarizacin por el mtodo porcentual consiste en escoger un umbral tal que se haya llegado a un determinado porcentaje, normalmente bajo (entre el 20-30 %), del rea del histograma. En la figura 2.11 se muestra el resultado de la binarizacin por este mtodo.

2.3.3 Binarizacin Mtodo Otsu


A partir del histograma de la imagen podemos inferir algunos parmetros estadsticos. Primero, calculamos la media y varianza globales de los niveles de gris.

- 30 -

PRESENTACION DEL PROBLEMA

a)

b) Figura 2.11 a) Matricula y b) histograma Mtodo Porcentual

= l p(l )

2 = (l ) 2 p(l )

Despus de eso, suponemos un umbral U. Entonces calculamos la media y varianza "por debajo" y "por encima" de U (lo que supone aplicar el concepto de probabilidad condicional a los casos l<U y l>U).

w1 = p(l )
0 U 1 0

U 1

w2 = p (l )
U +1 255

255

1 = l p(l ) w1

2 = l p(l ) w2
U +1

- 31 -

PRESENTACION DEL PROBLEMA

a)

b) Figura 2.12. a) Matricula y b) histograma Mtodo Otsu

1 2 = (l 1 )2 p (l ) w1
0

U 1

2 2 = (l 2 )2 p(l ) w2
U +1

255

Despus de eso podemos definir la "varianza conjunta despus de aplicar el umbral U": 2 = w1 1 + w2 2 .
2 2

La diferencia D = 2 2 es una medida de la calidad del umbral U. En un caso ideal, donde la imagen tuviera slo dos niveles de gris se cumplira D=0 cuando U no est entre los niveles y D = 2 > 0 si est entre ellos. El algoritmo consiste simplemente en calcular D para todos los posibles

- 32 -

PRESENTACION DEL PROBLEMA

umbrales y usar el que produce el mximo. Podemos ver que las frmulas son adecuadas para un clculo iterativo y rpido (podemos calcular las sumas para un valor de umbral a partir de las anteriores: sumando o restando un valor). Este mtodo es el ms robusto ante cualquier tipo de histograma y, de hecho, es el ms referenciado y utilizado de la literatura. Para mas informacin sobre el mtodo Otsu para la binarizacin de imgenes en escala de grises, recomendamos la bsqueda y lectura del artculo [3] de las referencias.

2.4 RECONOCIMIENTO DE LOS CARACTERES


Una vez localizada la matrcula, el siguiente paso es el de reconocer los caracteres. En este apartado debemos resolver el problema de asignar a una imagen o porcin de una imagen el carcter alfanumrico que mas se le parezca, atendiendo a criterios de forma, rea, nmero de huecos... Estudiaremos dos posibilidades de reconocimiento de caracteres, exponiendo sus ventajas y desventajas.

2.4.1 Reconocimiento Manual


El reconocimiento manual es una opcin que, aun siendo obvia no debe omitirse. El procedimiento necesario para reconocer la matrcula manualmente sera bsicamente el de ir escribiendo en forma de texto la matrcula tal y como se percibe por los ojos del operario a cargo.

- 33 -

PRESENTACION DEL PROBLEMA

Las ventajas que presenta esta opcin son: Menor probabilidad de error. Inmediatez de implantacin del proyecto. Los inconvenientes son: Cansancio o fatiga del operario por estar todo el rato pendiente de la pantalla. Necesidad de realizar turnos de operarios Coste sueldo de los operarios.

2.4.2 Reconocimiento Automtico


El siguiente paso, una vez localizada y binarizada la matrcula, es el de reconocer los caracteres de la matrcula. Los pasos necesarios para reconocer los caracteres son:

Segmentacin de los caracteres: proceso de separacion de los


caracteres que componen la matrcula. Para ello se pueden utilizar mtodos tan simples como una proyeccin vertical de la imagen binaria y cortar por donde la proyeccin sea mnima.

Rechazo de caracteres no vlidos: rechazo de caracteres que no


cumplan unas determinadas normas como: altura mnima y mxima, rea mnima y mxima...

- 34 -

PRESENTACION DEL PROBLEMA

Reconocimiento de patrones: usar mtodos que permitan asignar a una


imagen el carcter que mas se le asemeje atendiendo a determinadas caractersticas. As, se podran utilizar mtodos basados en

proyecciones, mtodos que usan redes neuronales... Para no aumentar la complejidad del proyecto, se tom la decisin de no incluir esta parte en desarrollo del proyecto. Se deja as como futura lnea de ampliacin. Por lo tanto, en nuestro caso podramos usar programas de

reconocimiento ptico de caracteres (OCR) de libre distribucin como GOCR, versiones trial como Transym OCR (TOCR) o programas de pago perfectamente desarrollados como Omnipage Pro.

2.5 CONCEPTOS BASICOS DE BASES DE DATOS


Simplificando, se puede decir que una base de datos es una herramienta para el mantenimiento y la manipulacin de la informacin de una forma eficiente y efectiva. Eficiente y efectiva en el sentido de que los datos se protegen frente a prdidas o daos accidentales, no utilizan ms recursos (humanos o informticos) de los necesarios y se pueden recuperar de diferentes formas dentro de unos lmites de rendimiento aceptables. La base de datos en s misma es la realizacin fsica de un modelo relacional, que es una forma de describir algunos aspectos del mundo real de acuerdo con una serie de reglas.

- 35 -

PRESENTACION DEL PROBLEMA

En teora, una base de datos se puede crear desde cero, pero lo normal ser utilizar los servicios de un sistema de gestin de bases de datos (SGBD). Los sistemas de gestin de bases de datos mas conocidos son Microsoft Access, Microsoft SQL Server y Oracle.

2.5.1 Qu es una Base de Datos?

SISTEMA DE BASE DE DATOS


APLICACION

MOTOR BASE DE DATOS

BASE DE DATOS

ESQUEMA DE LA BASE DE DATOS

MODELO DE DATOS

ESPACIO DEL PROBLEMA

Figura 2.13. Terminologa de Bases de Datos

- 36 -

PRESENTACION DEL PROBLEMA

El trmino base de datos se puede utilizar para describir cualquier cosa desde un sencillo conjunto de datos, como una lista de telfonos, hasta un complejo conjunto de herramientas como SQL Server. La Figura 2.13 muestra las relaciones existentes entre los trminos que se describen a continuacin. Aunque para las bases de datos relacionales no se pueden establecer analogas con entidades del mundo real, la mayora intentan modelar algn aspecto del mundo real. A esa pequea parte del mundo real es a lo que llamamos el espacio del problema. El espacio del problema es, por naturaleza, algo desordenado y complejo. Pero para que el proyecto resulte fructfero resulta crtico restringir el sistema de base de datos que se va a disear a un conjunto especfico y bien definido de objetos e interacciones. Utilizaremos el trmino modelo de datos para referirnos a la descripcin conceptual del espacio del problema. Esto incluye la definicin de entidades, sus atributos (un Cliente, por ejemplo, es una entidad que tendr atributos como el Nombre y la Direccin) y sus restricciones (tales como que Nombre-Cliente ha de tener valor). El modelo de datos tambin incluye una descripcin de las relaciones establecidas entre las entidades y cualquier restriccin que se aplique a esas relaciones. La definicin de la disposicin fsica -las tablas y vistas que se realizarn- es lo que se conoce como esquema de la base de datos. Se trata de la traduccin del modelo conceptual a una representacin fsica que se pueda realizar utilizando un sistema de gestin de bases de datos. El esquema no es - 37 -

PRESENTACION DEL PROBLEMA

ms que el modelo de datos expresado en los trminos que se utilizarn para describirlo en el motor de base de datos -tablas, disparadores y cosas similares-. Una de las ventajas de utilizar un motor de base de datos es que no es necesario tratar en ningn momento con la realizacin fsica. Una vez que se ha explicado al motor de base de datos la forma deseada para los datos, utilizando directamente cdigo o algn entorno interactivo como Microsoft Access, el motor crear algunos objetos fsicos (normalmente, aunque no siempre, en algn sitio de un disco fijo) en los que se guardarn los datos. La combinacin de estructura y datos es a lo que nos referiremos como base de datos. En la base de datos se incluyen las tablas fsicas, las vistas definidas, consultas y procedimientos almacenados, y las reglas que impondr el motor para proteger los datos. El trmino base de datos no engloba a la aplicacin, que consiste en una serie de formularios e informes con los que el usuario interacta, ni tampoco nada de lo que se utiliza para acoplar la interfaz con la maquinaria que trabaja por detrs -cosas como un software intermedio o el servidor de transacciones de Microsoft. El trmino base de datos tampoco engloba al motor de base de datos. As, un archivo .mdb -de Access- es una base de datos, mientras que Microsoft Jet es un motor de base de datos. Realmente, un archivo .mdb puede contener otras cosas, adems de la base de datos -formularios e informes, por ejemplo. Para referirnos a todos estos componentes -la aplicacin, la base de datos, el motor de base de datos y el software intermedio- utilizaremos el trmino - 38 -

PRESENTACION DEL PROBLEMA

sistema de base de datos. Todo el software y los datos que sirven para realizar un sistema de produccin se considera parte del sistema de base de datos.

DESARROLLO DE LA INTERFAZ Microsoft Access Microsoft Visual Basic C, Matlab, Delphi HTML ASP

MODELO OBJETOS ACCESO A DATOS ADO DAO/Jet DAO/ODBCDirect RDO

MOTORES BASES DE DATOS Microsoft Jet Microsoft SQL Server Oracle Informix

Figura 2.14. Herramientas de Bases de Datos

2.5.2 Herramientas de Bases de Datos


Son muchas las herramientas, por lo que conviene que nos detengamos un poco ahora para ver cules son y cmo encajan entre ellas. La figura 2.14 muestra las herramientas que describiremos. 2.5.2.1 Motores de Bases de Datos En el nivel inferior se encuentran los motores de base de datos. A veces, se

- 39 -

PRESENTACION DEL PROBLEMA

les denomina soportes, aunque no resulta del todo adecuado, ya que el trmino soporte realmente se refiere a una arquitectura fsica especfica. Son los aparatos que gestionan la manipulacin fsica de los datos -almacenndolos en disco y proporcionndolos cuando son solicitados. Caben destacar dos motores de la compaa Microsoft, por ser de los mas usados y conocidos: el motor de base de datos Jet y SQL Server. Aunque el motor de base de datos Jet y SQL Server son bastante diferentes, se trata de dos estupendas herramientas para el almacenamiento y la manipulacin de datos. La diferencia entre ellos radica en sus arquitecturas y en sus mbitos de actuacin. Microsoft Jet es un motor de base de datos orientado hacia sistemas de pequeo a mediano tamao. SQL Server, por el contrario, utiliza una arquitectura cliente/servidor y est orientado hacia sistemas de gran envergadura, permitiendo trabajar a miles de usuarios con aplicaciones crticas (esto no debe dar a entender que el motor de base de datos Jet slo resulte adecuado para sistemas poco ms que triviales). 2.5.2.2 Modelo de Objetos de Acceso a Datos Un modelo de objetos de acceso a datos es una especie de pegamento entre el entorno de programacin y el motor de base de datos; proporciona un conjunto de objetos con propiedades y mtodos que se pueden manipular por medio del cdigo. Exiten variados modelos de objetos de acceso a datos: Objetos de acceso a datos (DAO), del que hay dos variantes, DAO/Jet y DAO/ODBCDirect; Objetos de datos remotos (RDO), utilizado - 40 -

PRESENTACION DEL PROBLEMA

normalmente para el acceso a orgenes de datos ODBC (conectividad abierta de bases de datos); y Objetos de datos ActiveX de Microsoft (ADO), que est llamado a sustituir tanto a DAO como a RDO en un futuro prximo. DAO, el decano de los tres, es la interfaz nativa del motor de base de datos Jet. RDO es similar a DAO, pero ha sido optimizado para el acceso a orgenes de datos como SQL Server y Oracle. ADO hace uso de una jerarqua de objetos ms pequea que las de los otros dos, consistiendo tan slo en cuatro objetos principales, y proporciona algunas ampliaciones notables del modelo -por ejemplo, su soporte para conjuntos de registros sin conexin y el modelado de datos. 2.5.2.3 Herramientas de desarrollo de la interfaz Los motores de bases de datos manejan los aspectos fsicos de la manipulacin de datos por nosotros, pero necesitamos alguna forma de indicarles cmo estructurar los datos. Existen multitud de mtodos para hacerlo, todos con una funcionalidad similar. Se puede definir la estructura de la base de datos por medio de cdigo, aunque en circunstancias normales no resulta recomendable. Las herramientas interactivas resultan ms rpidas, sencillas e intuitivas de usar. Una vez establecida la definicin fsica de la base de datos, necesitamos herramientas para crear los formularios e informes con los que interactuarn los usuarios. Sin duda alguna, cabe destacar la interfaz de Microsoft Access, muy

- 41 -

PRESENTACION DEL PROBLEMA

intuitiva, potente y fcil de manejar. Para ampliar sobre la materia de bases de datos recomendamos la lectura de libros de informtica sobre sistemas de bases de datos. Para la redaccin del proyecto nos hemos apoyado en [4] de la referencia.

- 42 -

3
HERRAMIENTAS UTILIZADAS

3.1 MATLAB
MATLAB es sin duda alguna el programa por excelencia de aplicacin en el sector industrial, la administracin y la universidad. A travs de su entorno en modo comando y su amplia gama de funciones y toolboxes (paquetes de funciones especficos), se puede implementar con un reducido nmero de instrucciones casi cualquier problema de ingeniera. MATLAB dispone de herramientas para:

Adquisicin de datos, tratamiento y presentacin de datos. Desarrollo de rutinas y programas. Presentacin de grficas. Adquisicin, procesado y presentacin de imgenes. Simulacin de sistemas.
MATLAB es un sistema cuyo elemento bsico es una matriz. Esto permite resolver problemas de computacin tcnica, especialmente aquellos con formulaciones vectoriales o matriciales.

- 43 -

HERRAMIENTAS UTILIZADAS

El sistema de MATLAB consta principalmente de:

Entorno de trabajo: la interfaz que presenta MATLAB con el usuario y


su amplia documentacin hacen de MATLAB un programa intuitivo, fcil de aprender y usar.

Libreras: la extensa gama de libreras de funciones incluidas en


MATLAB facilitan el ahorro de tiempo y esfuerzo en la programacin, proporcionando adems unos resultados ptimos.

Lenguaje MATLAB: es un lenguaje de alto nivel, que trabaja con


vectores. Adems, al estar basado en el lenguaje C, la mayora de las funciones y comandos son conocidos por un usuario iniciado en la programacin. A continuacin describiremos de forma mas detallada cada una de las partes utilizadas en la elaboracin del proyecto.

3.1.1 Tipos de datos


Principalmente el tipo de datos usado es la matriz de nmeros enteros. Cabe recordar que una imagen digital no es mas que una matriz de pxeles, cada pxel con un nmero (imagen en escala de grises) o una tripleta de nmeros (imagen en color). Aparte de las matrices de nmeros enteros, tambin se han usado datos del tipo estructura, sobre todo en el intercambio de datos entre las funciones de

- 44 -

HERRAMIENTAS UTILIZADAS

callback de la interfaz grfica.

3.1.2 Funciones
Las funciones o comandos mas utilizados son:

size: funcin de MATLAB que devuelve las dimensiones de la variable


que se le pasa como entrada.

length: funcin de MATLAB que devuelve la longitud a lo largo de la


dimensin horizontal de la variable que se le pasa como entrada.

zeros: funcin que devuelve una matriz de ceros de las dimensiones


pasadas como parmetros.

ones: funcin que devuelve una matriz de unos de las dimensiones


pasadas como parmetros.

sum: funcin que realiza la suma por columnas de una matriz. En el


caso de tener una nica dimensin, realiza la suma total a lo largo de esa dimensin.

max: funcin que realiza una bsqueda por columnas de los mximos
de una matriz. Caso de tener una nica dimensin, devuelve el mximo de todos.

mean: funcin que realiza la media por columnas de una matriz. Caso
de tener una nica dimensin, devuelve la media total.

find: funcin que realiza una bsqueda en el vector de entrada de los


- 45 -

HERRAMIENTAS UTILIZADAS

valores que cumplen una determinada condicin.

filter2: funcin que realiza el filtrado en 2 dimensiones de una matriz de


entrada.

get: devuelve el valor de una o varias propiedades de un objeto. Muy


usado en los callbacks de la interfaz.

set: asigna el valor de una o varias propiedades de un objeto. Muy


usado en los callbacks de la interfaz.

3.1.3 Biblioteca de Tratamiento Digital de Imgenes


El toolbox de tratamiento digital de la imagen de MATLAB versin 3.2 ha sido muy til para la elaboracin del proyecto, pues sin l la mayora de las operaciones relacionadas con imgenes se tendran que haber realizado a nivel de entero y con infinidad de bucles. Esto llevara a una gran lentitud en la elaboracin del proyecto y lo que es peor, en el tiempo de cmputo del programa. Las funciones del toolbox mas utilizadas son:

imread: funcin que realiza la lectura de la imagen en varios formatos


(jpg, bmp, gif, tif...) y la almacena en una matriz.

imwrite: funcin que graba la imagen en varios formatos tomando como


origen una matriz con los valores de los pxeles.

imshow: funcin que muestra la imagen en pantalla.

- 46 -

HERRAMIENTAS UTILIZADAS

imresize: funcin que escala el tamao de la imagen a un tamao mayor


o menor.

imhist: funcin que computa el histograma de la imagen. rgb2gray: funcin que convierte una imagen a color en una imagen en
escala de grises.

bwmorph: funcin que realiza operaciones morfolgicas como apertura,


cierre, erosin, dilatacin... sobre una imagen binaria.

bwlabel: funcin que numera en una imagen binaria el nmero de partes


conexas.

3.1.4 Biblioteca de Bases de Datos


El toolbox de bases de datos contiene cantidad de funciones para el tratamiento de datos con MATLAB. En nuestro caso hemos usado un reducido nmero de ellas, pues slo realizamos acciones de consulta.

database: funcin que realiza la conexin con la base de datos a travs


del objeto de acceso a base de datos (ADO).

exec: ejecuta la accin que se le indique como parmetro ya sea consulta


de accin, de actualizacin, de visualizacin... Los datos son devueltos en forma de estructura, luego para acceder a ellos hay que emplear la metodologa usada para las estructuras.

- 47 -

HERRAMIENTAS UTILIZADAS

3.1.5 Interfaz grfica de usuario (GUI)


Crear una interfaz grfica con MATLAB es muy sencillo. Para ello MATLAB dispone de una entorno grfico intuitivo como el de la figura 3.1.

Figura 3.1. Entorno para el desarrollo de GUI

La interfaz grfica est basada en una estructura de objetos, cada uno de los cuales tiene unas determinadas propiedades. Para implementar un objeto en la interfaz, basta con hacer clic en el men de los objetos y desplazarlo hacia nuestra interfaz. Los objetos disponibles son:

Push Button: boton que al apretar se realiza una accin. Un ejemplo


- 48 -

HERRAMIENTAS UTILIZADAS

sera el tpico botn de Aceptar de Windows.

Toggle Button: Botn que al presionar se queda hundido y no se levanta


hasta que vuelve a ser presionado. Un ejemplo sera el boton de negrita de un procesador de textos.

Radio Button: Normalmente suelen aparecer en grupos. Botn que al


pulsar sobre l queda marcado y no se puede marcar ninguno de los dems. Un ejemplo sera el de Acepto las condiciones o No acepto las condiciones al instalar un programa.

Check Box: Casilla de verificacin que al pulsar sobre l se pone un tick


la casilla y al volver a pulsar se quita. Un ejemplo tpico es el de seleccionar las opciones en el men de instalacin de un programa.

Edit Text: Cuadro en el que se puede insertar, editar o borrar texto. Un


ejemplo es el cuadro de texto de un buscador.

Static Text: Etiqueta de texto cuya misin es meramente informativa


pues no es editable.

Slider: Barra de desplazamiento. Frame: Para distinguir unos objetos de la interfaz de otras, ya sea por
motivos decorativos o por incompatibilidad entre los objetos.

Listbox: Lista de opciones en la que se puede sealar una o varias de


ellas con la tecla Control.

- 49 -

HERRAMIENTAS UTILIZADAS

PopUp Menu: Similar a una lista de opciones pero desplegable. Axes: Objeto en el que se van a representar grficas, figuras, imgenes...
La mayora de los objetos llevan asociado un callback, que no es mas que una funcin que se ejecuta al realizar alguna accin (hacer clic, pulsar intro...) sobre ese objeto. El callback es la parte invisible del objeto y es la que hace que ese objeto tenga accin, pues si no tuviera callback sera simplemente una figura decorativa.

3.2 RECONOCIMIENTO OPTICO DE CARACTERES (OCR)


Para el reconocimiento de los caracteres, al no entrar dentro de las especificaciones del proyecto, el objetivo era buscar un motor de OCR que respondiera a nuestras necesidades. Para ello deba reunir unos requisitos mnimos:

Bajo tiempo de cmputo. Baja tasa de errores. Versin gratuita o de prueba. Posibilidad de interconexin con MATLAB.
La primera opcin fue probar con programas de libre distribucin realizados en MATLAB, C o cualquier otro lenguaje de programacin. La tasa de error de estos programas era muy alta, y en ninguna matrcula acertaba todos los caracteres.

- 50 -

HERRAMIENTAS UTILIZADAS

Se decidi entonces en usar programas de distribucin comercial. El problema que presentan stos es que al ser productos cerrados, la nica interconexion posible con MATLAB es la de cambiar de una aplicacin a otra manualmente, cosa no muy recomendable pues uno de los objetivos del proyecto es que realice todos los pasos automticamente. Usamos entonces una versin de prueba de un programa de distribucin comercial, Transym OCR (http://www.sorcery.demon.co.uk). Este programa, adems de ofrecer unos excelentes resultados con la mayora de las matrculas, proporciona al usuario el cdigo fuente de su interfaz.

Figura 3.2. Interfaz del programa Transym OCR

Fue necesario entonces aprender a programar en Visual Basic para - 51 -

HERRAMIENTAS UTILIZADAS

modificar el interfaz y desarrollar un ejecutable -con el motor del programa original- que pasndole la imagen binaria de la matrcula nos devolviera en un archivo de texto los caracteres que contiene.

3.3 BASES DE DATOS


Para esta ltima parte se ha utilizado el entorno de base de datos Microsoft Access, por su sencillez y por ser el mas conocido en el mercado. Posteriormente hemos creado un objeto de acceso a base de datos ODBC que servir de enlace entre MATLAB y el motor de base de datos (Jet en este caso, por utilizar Access).

3.3.1 Implementacin de la Base de Datos con Access


Antes de ponerse con Microsoft Access a crear tablas y campos, se debe tener bien claro la estructura de datos del problema. Una base datos creada directamente sin haber pasado por el proceso previo de modelado de datos y esquematizacin puede dar lugar a inconsistencias y cualquier incidencia que surja llevar a una reforma total de la base de datos. Una vez realizado los pasos de modelado y esquematizacin, la creacin de la base datos en Access es muy sencilla. Los pasos a seguir para crear cada una de las tablas son: 1. Hacer clic en el objeto Tablas del men de la izquierda. 2. Hacer doble clic en Crear una tabla en vista diseo.

- 52 -

HERRAMIENTAS UTILIZADAS

3. Ir creando cada campo con sus respectivos tipos de datos y propiedades. 4. Elegir el campo clave, seleccionndolo y pulsando sobre el icono de la llave dorada.

Figura 3.3. Diseo de tablas en Microsoft Access

Una vez creadas las tablas, se deben establecer las relaciones entre ellas. Para eso usamos la opcin de Access de crear relaciones (ver figura 3.4). Las relaciones se crean seleccionando el campo de una tabla y arrastrndolo hasta colocarlo encima del campo de la otra tabla con el que se relaciona. Se debe repetir este paso tantas veces como relaciones haya.

- 53 -

HERRAMIENTAS UTILIZADAS

Figura 3.4. Definicin de relaciones en Access

3.3.2 Definicin del Objeto de acceso a Datos


Al estar implementada la base de datos con Microsoft Access debemos crear un objeto de acceso a datos ODBC para el motor Microsoft Jet, pues Jet es el motor que maneja los datos de Access. Los pasos a seguir para crear un objeto ODBC en Windows son: 1. Ir a Panel de Control Herramientas Administrativas.

2. Pulsar sobre el icono Origenes de datos (ODBC). 3. En la aplicacin que se abre, Pulsar sobre el botn Agregar.... (ver figura 3.5) 4. Seleccionar Microsoft Access Driver (*.mdb). 5. En la nueva ventana: dar un nombre al origen de datos, una breve - 54 -

HERRAMIENTAS UTILIZADAS

descripcin, y seleccionar la ruta donde se encuentra la base de datos (Ver figura 3.6)

Figura 3.5. Administrador de origenes de datos ODBC

Figura 3.6. Configuracin de ODBC de Access

- 55 -

HERRAMIENTAS UTILIZADAS

6. Pulsar sobre Aceptar. Ya estara creado el objeto de acceso a la base de datos. Ahora, para ponerlo en funcionamiento y darle utilidad, en el entorno de MATLAB se llamar este objeto mediante la funcin database del toolbox de base de datos de MATLAB (vase apartado 3.1.4).

- 56 -

4
DETALLE DEL PROYECTO

4.1 DESCRIPCIN TERICA


Nos disponemos a detallar los pasos seguidos para la elaboracin del proyecto. Cada decisin ha sido tomada atendiendo a unos criterios muy definidos. As, en algunos pasos se opt por la opcin que proporcionaba una mayor sencillez, en otras se opt por la de mayor precisin y en otras por ser la nica opcin entre las posibles.

4.1.1 Adquisicin de la imagen digital


Este fue el primer paso en dar para la elaboracin del proyecto, pues sin unas imgenes con las que trabajar y contemplar resultados, difcilmente se podra haber avanzado. Optamos por utilizar una cmara digital fotogrfica de alta gama, ya que se nos present la posibilidad de disponer de ella por un tiempo limitado. Las fotos fueron tomadas a una resolucin de 800x600 pxels pues para el reconocimiento ptico de caracteres cuanto mayor sea la resolucin del carcter, menor es la probabilidad de error.

- 57 -

DETALLE DEL PROYECTO

4.1.2 Localizacin de la matrcula


En este paso se us la tcnica del gradiente de Sobel (vase apartado 2.2.2.2) porque las herramientas que proporciona MATLAB para la utilizacin de este mtodo son sencillas y el tiempo de cmputo es muy reducido. El algoritmo utilizado se ha realizado atendiendo medidas variables de matrculas, evitando usar valores fijos, siendo as apto para imgenes con la matrcula cercanas al objetivo como para matrculas lejanas. El primer paso del algoritmo fue el de reducir la matrcula a una resolucin de 320x240 pues se observ que con imgenes de gran resolucin el algoritmo de deteccin presentaba fallos en algunas matrculas. El segundo paso es el de aplicar el gradiente horizontal de Sobel a la imagen (vase apartado 2.2.2.2). Llegados a este punto, destacamos que el algoritmo realiza la localizacin de la matrcula en 2 pasos, localizando primero la matrcula en horizontal y luego en vertical. 4.1.2.1 Localizacin Horizontal

Para la localizacin horizontal de la matrcula se usa una metodologa muy sencilla y a la misma vez muy eficaz. Se toma como origen la imagen del gradiente horizontal, y se calcula por filas el nmero de pxeles que tiene un valor alto del gradiente horizontal.

- 58 -

DETALLE DEL PROYECTO

Como se describe en el apartado 2.2.2.2 consideramos valores altos del gradiente aquellos que son mayores del punto en el que el histograma del gradiente tiene un rea del 2,5% del total empezando desde los valores menos frecuentes (que coincide con los valores mas altos del gradiente).

Figura 4.1. Histograma del gradiente de la imagen y umbral seleccionado

Conocido el umbral por el que vamos a distinguir, vamos calculando para cada fila el nmero de pxeles que tienen un valor mayor del umbral. Como se puede observar en la figura 4.2 en la zona donde se localiza la matrcula hay valores altos del gradiente. Eso es debido al gran nmero de transiciones de colores claros a colores oscuros y viceversa que hay en las matrculas espaolas. Basta con buscar desde el mximo hacia arriba y abajo los puntos donde el pico decae hasta ser casi cero. As entonces tenemos las coordenadas en la dimensin vertical donde posiblemente empiece y termine la matrcula. - 59 -

DETALLE DEL PROYECTO

Figura 4.2. Zonas donde el gradiente es alto

Figura 4.3. Zonas de la matrcula horizontal donde el gradiente es alto

4.1.2.2 Localizacin vertical Para localizar la matrcula verticalmente realizamos el mismo

procedimiento que en horizontal, pero ya partimos del resultado de la localizacin horizontal y utilizamos solo las filas resultado del proceso anterior. - 60 -

DETALLE DEL PROYECTO

En este caso tomamos los primeros puntos que empezando por los bordes de la imagen tienen un valor superior a un lmite dado (Vase figura 4.3). As se obtienen dos columnas por las que cortar para obtener la matrcula verticalmente. Entonces, con las filas y las columnas de corte resultados de la localizacin vertical y horizontal respectivamente podemos extraer la localizacin aproximada de la matrcula.

4.1.3 Binarizacin
Para la binarizacin de la matrcula hemos utilizado el mtodo porcentual (vase apartado 2.3.2) pues necesitbamos un valor de umbral bajo que nos permitiera eliminar elementos que tienen tonos de grises en torno al centro del histograma. Adems, cada imagen puede tener un contraste diferente dependiendo de la hora y las condiciones en la que se tome la fotografa, y los otros mtodos de binarizacin presentaban valores altos del umbral y apenas distingue entre imgenes de contraste alto e imgenes de contraste bajo. Posteriormente para mejorar los resultados de la binarizacin realizamos una operacin morfolgica de apertura, cuyo efecto es el de unir pequeos cortes y suavizar los contornos. Ya la imagen est lista para ser procesada por el motor de OCR.

- 61 -

DETALLE DEL PROYECTO

4.1.4 Reconocimiento de los caracteres (OCR)


Como ya se ha dicho previamente, esta parte no formaba parte de las especificaciones del proyecto, por lo que apenas se ha trabajado en ella. En este apartado donde mas se ha trabajado fue en modificar el cdigo fuente del interfaz del programa TOCR (vase apartado 3.2) para adecuarlo a nuestras necesidades. As, conseguimos desarrollar un ejecutable que tomando una imagen de la matrcula de una direccin dada, guarda el resultado del OCR en un fichero de texto en la misma ubicacin. Ya nuestra labor en MATLAB fue la de prepararle la imagen al programa, ejecutarlo y tomar los datos del fichero de texto.

4.1.5 Base de datos


Elaboramos una base de datos simple en Access con los campos bsicos de un coche, como pueden ser: color, marca, modelo, propietario, telfono....

PROPIETARIO

VEHICULO

Figura 4.4 Diagrama entidad-relacin de la base de datos del proyecto

Esta base de datos tan simple tiene un diagrama entidad-relacin como el de la figura 4.4. Para los que no estn muy puestos en materia de bases de datos y no entiendan dicha figura, les explicamos que en la base de datos hay 2 entidades principales que son el coche y el propietario. Los valores de 1 y N que

- 62 -

DETALLE DEL PROYECTO

ponen junto a propietario vienen a significar que un propietario puede tener 1 o mas coches, pero que un coche pertenece a un solo propietario.

4.1.6 Interfaz grfica de usuario


Con la ayuda de las herramientas que proporciona MATLAB para la creacin de interfaces grficas de usuario (vase apartado 3.1.5), ha sido fcil desarrollar una interfaz agradable a la vista del usuario. Como en todo lenguaje de programacin visual, la interfaz lleva por detrs un cdigo que hace que funcione como se desea. Esto quiere decir que cada una de las opciones (botones, mens, checkbox...) que se incluyen en el interfaz lleva asociada una funcin de callback donde se detallan las sentencias a realizar. Todo este cdigo es guardado automticamente por MATLAB en un fichero .m con el mismo nombre que la interfaz de usuario. En el caso particular de nuestro proyecto se detalla mas adelante el cdigo de este fichero. Como se observa en la figura 4.5, nuestra interfaz consta bsicamente de:

Barra de mens: En ella se distinguen el men Archivo que incluye


acciones propias de estos mens como abrir o guardar una imagen y salir del programa. En el men Accin se puede realizar las operaciones de bsqueda de matrcula y de OCR.

Imagen de la matrcula: Ejes donde va a ir ubicada la imagen original


de la matrcula, reducidos a un tamao de 400x300.

- 63 -

DETALLE DEL PROYECTO

Casilla de imagen binarizada: Si seleccionamos esta casilla se mostrar


la imagen binarizada de la matrcula. Si no est seleccionada se muestra en escala de grises.

Boton de bsqueda automtica: Botn de accin que lanza el algoritmo


de localizacin de la matrcula explicado en el apartado 4.1.2.

Boton de OCR: Botn de accin que lanza el procedimiento de OCR de


la matrcula (vase apartado 4.1.4) y la bsqueda de los datos en la base de datos (vase apartado 4.1.5).

Campos de texto en donde se presentan los datos del coche, resultado


de la consulta realizada a la base de datos.

Figura 4.5. Interfaz grfica del proyecto

- 64 -

DETALLE DEL PROYECTO

Como complemento adicional se han aadido sonidos, a modo de alarmas para el operador, para los casos en los que se reconoce la matrcula del coche y para los casos en que la matrcula no es reconocida.

4.2 DESCRIPCION PRCTICA (RUTINAS)


A continuacin exponemos el cdigo de las rutinas empleadas para la realizacin del proyecto.

4.2.1 Proyecto.m
function varargout = proyecto(varargin) % PROYECTO M-file for proyecto.fig % PROYECTO, by itself, creates a new PROYECTO or raises the existing % singleton*. % % H = PROYECTO returns the handle to a new PROYECTO or the handle to % the existing singleton*. % % PROYECTO('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in PROYECTO.M with the given input % arguments. % % PROYECTO('Property','Value',...) creates a new PROYECTO or raises % the existing singleton*. Starting from the left, property value % pairs are applied to the PROYECTO before proyecto_OpeningFunction % gets called. An unrecognized property name or invalid value makes % property application stop. All inputs are passed to % proyecto_OpeningFcn via varargin. % % *See PROYECTO Options on GUIDE's Tools menu. Choose "PROYECTO % allows only one instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help proyecto % Last Modified by GUIDE v2.5 24-Apr-2003 21:20:32 % Begin initialization code - DO NOT EDIT proyecto_Singleton = 1; proyecto_State = struct('proyecto_Name', mfilename, ... 'proyecto_Singleton', proyecto_Singleton, ... 'proyecto_OpeningFcn', @proyecto_OpeningFcn, ... 'proyecto_OutputFcn', @proyecto_OutputFcn, ... 'proyecto_LayoutFcn', [] , ... 'proyecto_Callback', []); if nargin & isstr(varargin{1}) proyecto_State.proyecto_Callback = str2func(varargin{1});

- 65 -

DETALLE DEL PROYECTO

end if nargout [varargout{1:nargout}] = proyecto_mainfcn(proyecto_State, varargin{:}); else proyecto_mainfcn(proyecto_State, varargin{:}); end % End initialization code - DO NOT EDIT addpath funciones; % Aadimos un enlace directo a la carpeta donde estan las funciones a % utilizar % -------------------------------------------------------------------% --- Executes just before proyecto is made visible. function proyecto_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to proyecto (see VARARGIN) set(handles.BotonBuscar,'Enable','Off'); % El boton de busqueda automatica esta desactivado inicialmente set(handles.BotonOCR,'Enable','Off'); % El boton de OCR esta desactivado inicialmente set(handles.matricula_axes,'Visible','Off'); % Los ejes de la matricula estan no visibles set(handles.menu_guardarm,'Enable','Off'); set(handles.menu_guardarmbin,'Enable','Off'); % Desabilitamos en el menu Archivo las opciones de guardar set(handles.menu_buscar,'Enable','Off'); set(handles.menu_OCR,'Enable','Off'); % Desabilitamos las opciones en el menu de Accion iptsetpref('ImshowAxesVisible','on'); % Con esta sentencia indicamos que al hacer imshow de las imagenes se % hagan visibles los ejes. handles.YaMatricula=0; % Usamos una variable binaria global para indicar si ya hemos % realizado la bsqueda de la matricula handles.YaBinaria=0; % Usamos una variable binaria global para indicar si ya hemos % calculado la imagen binarizada de la matricula % Choose default command line output for proyecto handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes proyecto wait for user response (see UIRESUME) % uiwait(handles.principal);

- 66 -

DETALLE DEL PROYECTO

% -------------------------------------------------------------------% --- Outputs from this function are returned to the command line. function varargout = proyecto_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % -------------------------------------------------------------------function menu_archivo_Callback(hObject, eventdata, handles) % hObject handle to archivo (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -------------------------------------------------------------------function menu_abrir_Callback(hObject, eventdata, handles) % hObject handle to abrir (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Lanzamos un formulario de apertura de ficheros [filename, pathname] = uigetfile( ... {'*.bmp;*.jpg;*.gif','Archivos de imagenes (*.bmp,*.jpg,*.gif)'; '*.bmp', 'Windows Bitmap'; ... '*.jpg','JPEG'; ... '*.gif','GIF'; ... '*.*', 'Todos los archivos (*.*)'}, ... 'Abrir un archivo'); handles.coche=imread([pathname filename]); % Lectura de la imagen a variable axes (handles.coche_axes); % Cojemos los ejes de la imagen imshow (handles.coche); % Mostramos la imagen set(handles.coche_axes,'XTick',[],'YTick',[]); % Quitamos la numeracion de los ejes cla (handles.matricula_axes); set(handles.matricula_axes,'Visible','off'); % Limpiamos y quitamos los ejes de la matricula por si ya habia una % matricula anterior set(handles.BotonBuscar,'Visible','On','Enable','On'); % Hacemos el boton de busqueda automatica visible y habilitado set(handles.menu_buscar,'Enable','On'); % Habilitamos en el menu Accion la opcion de buscar la matricula set(handles.BotonOCR,'Enable','Off'); % Ponemos el boton de OCR desactivado set(handles.menu_OCR,'Enable','Off'); % Deshablitamos la opcion de hacer OCR a traves de la barra de menu set(handles.menu_guardarm,'Enable','Off');

- 67 -

DETALLE DEL PROYECTO

set(handles.menu_guardarmbin,'Enable','Off'); %Desabilitamos en el menu Archivo las opciones de guardar set(handles.EditMatricula,'String',''); set(handles.EditMarca,'String',''); set(handles.EditModelo,'String',''); set(handles.EditPropietario,'String',''); % Limpiamos los Edit de la parte de OCR handles.YaMatricula=0; % Ponemos la variable global YaMatricula a 0 porque vamos a usar una figura % nueva handles.YaBinaria=0; % Ponemos la variable global YaBinarizada a 0 porque vamos a usar una % figura nueva % Update handles structure guidata(hObject, handles); % -------------------------------------------------------------------function menu_guardarm_Callback(hObject, eventdata, handles) % hObject handle to menu_guardarm (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %Lanzamos un formulario de guardar de ficheros [filename, pathname,filterindex] = uiputfile( ... {'*.bmp', 'Windows Bitmap'; ... '*.jpg','JPEG'; ... '*.gif','GIF'; '*.tif','TIF'}, ... 'Guardar imagen'); switch filterindex % Dependiendo de la opcion elegida por el usuario tendremos un formato % u otro case 1 formato='bmp'; case 2 formato='jpg'; case 3 formato='gif'; case 4 formato='tif'; end; if filterindex~=0 % El caso 0 es cuando el usuario le dio al boton cancelar imwrite (handles.matricula,[pathname filename,'.',formato],formato); end; % -------------------------------------------------------------------function menu_guardarmbin_Callback(hObject, eventdata, handles) % hObject handle to menu_guardarmbin (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB

- 68 -

DETALLE DEL PROYECTO

% handles

structure with handles and user data (see GUIDATA)

%Lanzamos un formulario de guardar de ficheros [filename, pathname,filterindex] = uiputfile( ... {'*.bmp', 'Windows Bitmap'; ... '*.jpg','JPEG'; ... '*.gif','GIF'; '*.tif','TIF'}, ... 'Guardar imagen'); switch filterindex % Dependiendo de la opcion elegida por el usuario tendremos un formato % u otro case 1 formato='bmp'; case 2 formato='jpg'; case 3 formato='gif'; case 4 formato='tif'; end; if filterindex~=0 % El caso 0 es cuando el usuario le dio al boton cancelar imwrite (handles.binaria,[pathname filename,'.',formato],formato); end;

% -------------------------------------------------------------------% --- Executes on button press in BotonBuscar. function BotonBuscar_Callback(hObject, eventdata, handles) % hObject handle to BotonBuscar (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) set(handles.BotonBuscar,'Visible','Off'); %Deshabilitamos el boton de busqueda automatica %Realizamos la busqueda de la matricula si se ha hecho previamente if handles.YaMatricula==0 handles.matricula=encuentra(handles.coche); % Llamamos a la funcion encuentra.m que realiza la busqueda de la % matricula handles.YaMatricula=1; end; %Realizamos la binarizacion si no se ha hecho previamente if (handles.YaBinaria==0) handles.binaria=binariza(handles.matricula); % Llamamos a la funcion binariza.m que realiza la binarizacion de % la matricula handles.YaBinaria=1; end; checked=get(handles.CheckBinary,'Value');

- 69 -

DETALLE DEL PROYECTO

switch checked % Segun este seleccionada la opcion de mostrar Imagen binaria o no... case 1 mostrar (hObject,handles,handles.binaria); %Mostramos la imagen binaria de la matricula case 0 mostrar (hObject,handles,handles.matricula); %Mostramos la imagen de la matricula sin binarizar end set(handles.BotonOCR,'Enable','On'); % Habilitamos el boton de OCR set(handles.menu_OCR,'Enable','On'); % Activamos la opcion de OCR del menu Accion % Update handles structure guidata(hObject, handles); % -------------------------------------------------------------------% --- Executes on button press in CheckBinary. function CheckBinary_Callback(hObject, eventdata, handles) % hObject handle to CheckBinary (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of CheckBinary % Si ya hemos realizado el proceso previo de localizacion de la % matricula y binarizacion... if (handles.YaBinaria==1) & (handles.YaMatricula==1) checked=get(handles.CheckBinary,'Value'); switch checked % Dependiendo de si se ha marcado o no la casilla de Mostrar % imagen binaria ... case 1 mostrar(hObject,handles,handles.binaria); % Mostramos la imagen binaria de la matricula case 0 mostrar(hObject,handles,handles.matricula); % Mostramos la imagen de la matricula sin binarizar end; end; % Update handles structure guidata(hObject, handles); % -------------------------------------------------------------------function mostrar (hObject,handles,imagen) % Funcion que muestra la imagen en los ejes de la matricula s=size (imagen); h=round(300/s(2)*s(1)); set(handles.matricula_axes,'Visible','On','Position',[75,100h,300,h]); %Realizamos unos calculos para colocar las matriculas en la misma % posicin ya que no todas tienen el mismo tamao. axes (handles.matricula_axes); %Seleccionamos como ejes los de la matricula imshow (imagen); set(handles.matricula_axes,'XTick',[],'YTick',[]);

- 70 -

DETALLE DEL PROYECTO

%Quitamos la numeracion de los bordes de la imagen % -------------------------------------------------------------------% --- Executes on button press in BotonOCR. function BotonOCR_Callback(hObject, eventdata, handles) % hObject handle to BotonOCR (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) texto=hacerOCR(handles.binaria); % Llamamos a la funcion hacerOCR que devuelve en una variable la % cadena de la matricula set(handles.EditMatricula,'String',texto); % Mostramos la cadena obtenida del OCR en su cuadro de texto basedatos(handles,texto); % Llamamos a la funcion basedatos.m que realiza la busqueda de los % datos para esa cadena % -------------------------------------------------------------------function menu_accion_Callback(hObject, eventdata, handles) % hObject handle to menu_accion (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -------------------------------------------------------------------function menu_salir_Callback(hObject, eventdata, handles) % hObject handle to menu_salir (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) close;

4.2.2 Encuentra.m
function mat = encuentra (Imcoche) % Funcion que localiza la matricula en una imagen de un coche % Imcoche es la matriz de imagen del coche % mat es la matriz de imagen de la matricula I1=rgb2gray(Imcoche); % Conversion a escala de grises I=imresize(I1,[240,320],'bilinear',3); % Escalado de la imagen para su procesado s=size (I); Gh=gsobelh(I); % Clculo del gradiente horizontal de la imagen Gh(:,1)=zeros(s(1),1); Gh(:,s(2))=zeros(s(1),1); Gh(1,:)=zeros(1,s(2)); Gh(s(1),:)=zeros(1,s(2)); % Eliminamos los posibles efectos de borde [histy,histx]=hist2D(abs(Gh),50); %Histograma completo de la imagen, pxel por pxel ux=umbral(histy,histx,0.025); %Clculo del umbral a superar por el gradiente horizontal para ser % candidato a matrcula

- 71 -

DETALLE DEL PROYECTO

%LOCALIZACION HORIZONTAL DE LA MATRICULA num=sum ((abs(Gh)>ux)'); %Por filas, nmero de pxeles del gradiente horizontal con gradiente % superior al umbral replay=1; [yhorz,xhorz]=max(num); % Fila que contiene el mximo y su valor aux1=find (num(1:xhorz)<5); aux2=find (num((xhorz+1):length(num))<5); f1=aux1(length(aux1)); f2=aux2(1)+xhorz; % Puntos de corte para la localizacion horizontal de la matricula mathorz=I(f1:f2,:); % LOCALIZACION VERTICAL DE LA MATRICULA aux1=sum(abs(Gh(f1:f2,:))>ux); rect=ones(1,170); aux2=conv(aux1,rect)/length(rect); % Convolucionamos con un rectangulo para eliminar posibles picos % errneos [aux3,aux4]=max(aux2); aux5=aux4-170; %aux7 y aux6 son los limites dados por la convolucin del rectngulo aux6=find(aux1(aux5:aux4)>5); c1=aux6(1)+aux5; c2=aux6(length(aux6))+aux5; %Puntos de corte para la localizacion vertical de la matricula %LOCALIZACION DE LA MATRICULA EN IMAGEN 800x600 prop=320/800; %Porcentaje de la reduccin f1b=floor(f1/prop); %Ajuste de la fila superior al entero mas cercano por lo bajo f2b=ceil(f2/prop); %Ajuste de la fila inferior al entero mas cercano por lo alto c1b=floor(c1/prop); %Ajuste de la columna izquierda al entero mas cercano por lo bajo c2b=ceil(c2/prop); %Ajuste de la columna derecha al entero mas cercano por lo alto mat=I1 (f1b:f2b,c1b:c2b);

4.2.3 Binariza.m
function bin = binariza (I) % BINARIZACION DE LA IMAGEN (Metodo Histograma) h=imhist(I); H=cumsum(h); aux1=find(H>(0.3*sum(h))); umbral=aux1(1); bin=(I>umbral); % MEJORAS (Operacion Morfolgica de apertura) bin=bwmorph(bin,'open'); % Eliminacion de bordes % Por la izquierda flag=0; izq=1; while (flag==0)

- 72 -

DETALLE DEL PROYECTO

end % Por la derecha flag=0; der=length(bin); while (flag==0) if (mean(bin(:,der))>0.7) flag=1; else der=der-1; end end % Recorte bin=bin(:,izq:der); % MEJORAS (Propiedades de las regiones) bin=not(bin); % Inversion de la imagen binaria [bw,nregs]=bwlabel(bin,4); %La funcion bwlabel busca regiones conexas en la imagen binaria. % Devuelve el numero de regiones que encuentra y una matriz del tamao % de la imagen binaria con con las regiones numeradas. regs=regionprops(bw,'BoundingBox'); % Hallamos la propiedad de cuadrado minimo que envuelve a cada region for i=1:length(regs) b(i)=regs(i).BoundingBox(4); end; % Si la altura es menor que el 50% de la altura de la matricula lo % descartamos c=find(b<(0.5*size(bin,1))); for i=1:length(c) [a,b]=find(bw==c(i)); bin(a,b)=0; end bin=not(bin);

if (mean(bin(:,izq))>0.7) flag=1; else izq=izq+1; end

4.2.4 HacerOCR.m
function TXT = hacerOCR (IMG) % Funcion que realiza las operaciones de OCR % IMG contiene la imagen binaria de la matricula en formato TIF % TXT devuelve una cadena con el resultado del OCR % I=imresize(IMG,0.5,'bilinear',3); imwrite(IMG,'c:\mat.tif','tif'); % Guardamos la imagen en un fichero con formato TIF !ocr % Ejecutamos el programa ocr.exe delete ('c:\mat.tif'); % Borramos la imagen de la matrcula fichero=fopen('c:\mat.txt'); texto=fgetl(fichero); % Abrimos el fichero de texto y extraemos la cadena de la matricula

- 73 -

DETALLE DEL PROYECTO

i=1; j=1; % Realizamos un bucle que comprueba que los caracteres obtenidos son % caracteres alfanumricos while j<=length(texto) if (((texto(j)>='0')&(texto(j)<='9'))|((texto(j)>='A')&(texto(j)<='Z'))) txtcheck(i)=texto(j); i=i+1; j=j+1; else j=j+1; end end TXT=txtcheck; fclose(fichero); % Cerramos el fichero delete('c:\mat.txt'); delete('c:\log.txt'); % Borramos los ficheros resultado de la operacin de OCR

4.2.5 Basedatos.m
function basedatos (handles,texto) % Establecemos la conexion con la la fuente de datos Proyecto que % previamente debemos haber realizado con ODBC logintimeout(5); conexion=database('Proyecto','',''); sentencia=['SELECT MARCA,MODELO,NOMBRE,APELLIDO1,APELLIDO2 FROM COCHES INNER JOIN PROPIETARIOS ON COCHES.IDPROPIETARIO=PROPIETARIOS.IDPROPIETARIO WHERE MATRICULA=''',texto,'''']; % Esta es la sentencia SQL a ejecutar resultados=exec(conexion,sentencia); % Ejecutamos la sentencia resultados=fetch(resultados); datos=resultados.Data; if strcmp(datos(1),'No Data') % Si no tiene datos ejecutamos un sonido de alarma s=wavread('sounds/sirena.wav'); sound (s); else name=[char(datos(3)),' ',char(datos(4)),' ',char(datos(5))]; set(handles.EditMarca,'String',datos(1)); set(handles.EditModelo,'String',datos(2)); set(handles.EditPropietario,'String',name); % Insertamos en los Edit los datos de la consulta end

4.2.6 Gsobelh.m
function Gx = gsobelh (I) % GSOBELH realiza la operacin de gradiente horizontal sobre la imagen % mediante el mtodo de Sobel. % Gx es el resultado % I es la imagen original hx=-1*(fspecial('sobel'))';

- 74 -

DETALLE DEL PROYECTO

% hx contiene el filtro de sobel horizontal Gx=filter2(hx,I);

4.2.7 Hist2D.m
function [H,X] = hist2D (M,n) % HIST2D realiza el histograma de una matriz bidimensional. % H devuelve el histograma de la imagen con el nmero de puntos % indicado en n % X devuelve la posicin central de los puntos. [preh,X]=hist(M,n); H=sum (preh');

4.2.8 Umbral.m
function umb = umbral (h,x,p) % UMBRAL detecta el umbral del gradiente % UMB es el valor del umbral % H es el resultado del histograma % X es la posicin de los puntos centrales del histograma % P es el porcentaje de integracion area=(x(2)-x(1))*sum(h); % Area del histograma u=length (h); i=1; while (i==1) acola=(x(2)-x(1))*sum(h(u:(length(h)))); % Area de la cola if (acola>(p*area)) i=0; else u=u-1; end end umb=x(u); % Umbral del histograma

- 75 -

5
CONCLUSIONES

5.1 RESULTADOS 5.1.1 Resultados individuales


A continuacin se presenta una tabla en la que se muestra las imgenes de 18 fotografas de coches, la localizacin de la matrcula que ofrece el proyecto y el resultado que da el motor de OCR: FOTO ORIGINAL MATRICULA BINARIZADA OCR

SE8922DS

7753TP

- 76 -

CONCLUSIONES

SE2104AG

28E1215CL

SE6102AC

SE9692CH

58995BXY

- 77 -

CONCLUSIONES

SE2316CU

SE2048CM

SE8353CZ

SE7329DV

SE9139BN

- 78 -

CONCLUSIONES

SE3625CH

SE7175CC

SE7643DU

SE8268V

SE1051AZ

- 79 -

CONCLUSIONES

SE7419AT

5.1.2 Resultados totales


Tomando los resultados parciales, podemos inferir unos datos estadsticos sobre el funcionamiento en su totalidad del proyecto:

Numero de imgenes de coches: 18 Matriculas de coche localizadas: 18 (100%) OCR:


Correctas: 13 (72%) Errneas por smbolo CEE: 2 (11%) Errneas por fallo motor OCR: 3 (17%)

Tiempo medio de respuesta (tiempo que se tarda en localizar la


matrcula y presentar los resultados) : 1,05 segundos

5.2 LINEAS DE AMPLIACION 5.2.1 Algoritmo de segmentacin de la matricula


Como se ha destacado en esta memoria, el algoritmo de segmentacin de la matrcula presenta pocos fallos y es rpido en el cmputo. El nico pero - 80 -

CONCLUSIONES

que se le puede poner es que a veces se traga el smbolo de la comunidad europea y por consiguiente el OCR falla. Otra posibilidad es desarrollar el algoritmo de segmentacin de la matrcula utilizando otras tcnicas de segmentacin como las descritas en el apartado 2.2.2.

5.2.2 Reconocimiento ptico de Caracteres (OCR)


Como se ha mencionado anteriormente, el motor de OCR no fue incluido en las especificaciones del proyecto. Una futura lnea de ampliacin del proyecto consistira en implementar un motor de OCR especfico para el reconocimiento de matrculas.

5.2.3 Interfaz grfica de usuario


En todo programa, es de agradecer que la interfaz que presenta sea sencilla y manejable. Aparte de esas caractersticas, con los avanzados lenguajes de programacin que existen hoy en da, se pueden crear interfaces muy potentes, con animaciones y grficos. Se deja como posible lnea de ampliacin la elaboracin de un proyecto que sea independiente de MATLAB y que pueda ser ejecutado en cualquier sistema operativo.

- 81 -

6
REFERENCIAS

[1] [2] [3]

www.kodak.es R. Gonzalez y R. Woods. Digital Image Processing. Addison-Wesley. F. Martin Rodriguez y X. Fernndez Hermida. RAMA: Reconocedor Automtico de Matrculas de Automviles. Universidad de Vigo

[4]

N. Otsu. "A Threshold Selection Method for Gray Level Histograms". IEEE Transactions on System, Man and Cybernetics. Enero, 1979.

[5]

R. Riordan. Diseo de bases de datos relacionales con Access y SQL Server. McGraw-Hill.

- 82 -