seminario de titulaciÓn “procesamiento digital de …...“procesamiento digital de seÑales”...

58
SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES” DISEÑO DE SISTEMA DE RECONOCIMIENTO DE PLACAS UTILIZANDO MATLAB T E S I N A Que para obtener el grado de: INGENIERO EN COMUNICACIONES Y ELECTRÓNICA. Presentan: PAUL CARDENAS HIDALGO JOSÉ ALFREDO FLORES VARGAS JAIME LÓPEZ ZAVALETA PABLO MARTÍNEZ MORENO ASESORES: M. en C. ORLANDO BELTRÁN NAVARRO. M. en C. BRAULIO SANCHEZ ZAMORA México, D. F. Junio de 2009. INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD CULHUACAN INGENIERÍA EN COMUNICACIONES Y ELECTRÓNICA

Upload: others

Post on 31-Mar-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE SEÑALES”

DISEÑO DE SISTEMA DE RECONOCIMIENTO DE PLACAS UTILIZANDO MATLAB

T E S I N A

Que para obtener el grado de:

INGENIERO EN COMUNICACIONES Y ELECTRÓNICA.

Presentan:

PAUL CARDENAS HIDALGO JOSÉ ALFREDO FLORES VARGAS JAIME LÓPEZ ZAVALETA PABLO MARTÍNEZ MORENO

ASESORES:

M. en C. ORLANDO BELTRÁN NAVARRO. M. en C. BRAULIO SANCHEZ ZAMORA

México, D. F. Junio de 2009.

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA

UNIDAD CULHUACAN INGENIERÍA EN COMUNICACIONES Y ELECTRÓNICA

Page 2: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

IPN ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA

UNIDAD CULHUACAN

TESINA

QUE PARA OBTENER EL TITULO DE: INGENIERO EN COMUNICACIONES Y ELECTRONICA NOMBRE DEL SEMINARIO: PROCESAMIENTO DIGITAL DE SEÑALES DEBERA DESARROLLAR: PAUL CARDENAS HIDALGO JOSE ALFREDO FLORES VARGAS JAIME LÓPEZ ZAVALETA PABLO MARTÍNEZ MORENO

NOMBRE DEL TEMA

“DISEÑO DE SISTEMA DE RECONOCIMIENTO DE PLACAS UTILIZANDO MATLAB”

INTRODUCCION

La implementación de algoritmos en visión por computador resulta muy costosa en tiempo que se requiere de la manipulación de punteros, gestión de memoria, etc. Hacerlo en lenguaje C++ supondría la inversión de tiempo y sin la seguridad de que lo queremos implementar funcionará. Estos problemas pueden ser resueltos si la implementación de prueba es realizada en Matlab utilizando su toolbox de procesamiento de imágenes con ello el tiempo de implementación se convierte en el mínimo con la confianza de utilizar algoritmos científicamente probados y robustos. El toolbox de procesamiento de imágenes contiene un conjunto de funciones de los algoritmos más conocidos para trabajar con imágenes binarias, trasformaciones geométricas, morfología y manipulación de color que junto con las funciones ya integradas en Matlab permite realizar análisis y trasformaciones de imágenes en el dominio de la frecuencia.

CAPITULADO

1. TIPOS DE IMÁGENES 2. PROCESAMIENTO DIGITAL DE IMÁGENES Y SISTEMAS DE RECONOCIMIENTO

DE PLACAS EXISTENTES 3. DISEÑO DE SISTEMA DE RECONOCIMIENTO DE PLACAS EN MATLAB

Fecha: México D.F. Junio de 2009 M. en C. Orlando Beltrán Navarro M. en C. Braulio Sánchez Zamora

Ing. Ignacio Monroy Ostria

Page 3: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

INDICE Planteamiento del problema

Justificación

Objetivo general

CAPITULO 1. Tipos de imágenes Pág. 1.1 Introducción 2 1.2 Biometría 2 1.3 Percepción de colores 3 1.4 Imágenes digitales 4 1.5 Representación de colores en imágenes digitales 5 1.6 Resolución de las imágenes digitales 6 1.7 Tipos de imágenes 6

CAPITULO 2. Procesamiento digital de imágenes y sistemas de reconocimiento de placas existentes

2.1 Conceptos básicos de las imágenes en Matlab 8 2.2 Procesamiento de imágenes 8 2.3 Procesamiento óptico 9 2.4 Procesamiento digital de imágenes 10 2.5 Utilidad del procesamiento de imágenes 12 2.6 Reconocimiento de Imágenes 13 2.7 Reconocimiento de caracteres 13

2.9 Filtros para la detección de bordes 14 2.8 Filtros 13

2.10 Aplicaciones del reconocimiento de imágenes 14 2.11 Sistemas de reconocimiento de placas existentes 15 2.12 Algoritmos y pasos a seguir para realizar el ANPR 17 2.13 Dificultades para el buen funcionamiento 17 2.14 Técnicas de evasión del ANPR 19 2.15 Otros usos2.16 Control de acceso a estacionamientos, casetas de cobro y

del ANPR 20

algunas variantes 21 2.17 Empresas existentes 23

CAPITULO 3 Diseño de sistema de reconocimiento de placas en MatLab

3.1 Desarrollo de proyecto 24

Conclusiones 51

Bibliografía 52

Page 4: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Planteamiento del problema

Los robos de automóviles y el mal uso de muchos de ellos para realizar ilícitos

además de una mala gestión y poca cultura vehicular hacen de este trabajo una necesidad y

actualmente una realidad capaz de simplificar muchas actividades además de brindar un

buen control y monitoreo del vehículo que se desee.

Objetivo general

Diseñar un sistema mediante MATLAB para el reconocimiento automático de matriculas

vehiculares capaz de procesar una imagen para posteriormente tomar información de la

misma y poder ser almacenada en una base de datos coherente.

Agilizar la gestión de la información vehicular en un sector determinado para poder brindar

seguridad a todos los usuarios.

Justificación

Este proyecto se lleva a cabo para desarrollar un sistema de reconocimiento de matriculas

vehiculares (implementado en MATLAB), actualmente en el mercado hay sistemas que

cumplen esta función, pero estos dispositivos tienen un costo muy elevado.

Se diseña para ayudar a reducir el alto índice de robos así como para poder gestionar el

flujo y trafico vehicular en un área determinada.

Con un dispositivo que tenga la capacidad de brindarnos una imagen adecuada (cámara

fotografica) y el software ya mencionado se diseñara este sistema el cual se plantea como

una herramienta de fácil manejo y ambiente de trabajo amigable.

Page 5: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

CAPITULO 1

Tipos de imágenes

Page 6: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capitulo 1 Tipos de imágenes

2

1.1 INTRODUCCION

La implementación de algoritmos en visión por computador resulta muy costosa en tiempo

que se requiere de la manipulación de punteros, gestión de memoria, etc. Hacerlo en

lenguaje C++ (que por sus características compartidas de alto y bajo nivel lo hacen el mas

apropiado para la implementación de algoritmos de visión computacional) supondría la

inversión de tiempo y sin la seguridad de que lo queremos implementar funcionará.

Además utilizar C++ para el periodo de prueba exige un tiempo normal de corrección de

errores debidos al proceso de implementación del algoritmo, es decir errores programáticos

efectuados por ejemplo al momento de multiplicar dos matrices, etc. Todos estos problemas

pueden ser resueltos si la implementación de prueba es realizada en Matlab utilizando su

toolbox de procesamiento de imágenes con ello el tiempo de implementación se convierte

en el mínimo con la confianza de utilizar algoritmos científicamente probados y robustos.

El toolbox de procesamiento de imágenes contiene un conjunto de funciones de los

algoritmos mas conocidos para trabajar con imágenes binarias, trasformaciones

geométricas, morfología y manipulación de color que junto con las funciones ya integradas

en Matlab permite realizar análisis y trasformaciones de imágenes en el dominio de la

frecuencia (trasformada de Fourier).

1.2 Biometría

La biometría es el reconocimiento del cuerpo humano a través de ciertas

características físicas, como el tamaño de los dedos de la mano, las huellas dactilares o los

patrones en las retinas de los ojos.

Los sistemas de computadoras actuales permiten tener mejores niveles de seguridad

utilizando la biometría. Por ejemplo, una persona puede tener acceso a un área restringida,

por medio del reconocimiento de las características físicas de su mano en un dispositivo

especial. Si en el proceso de validación se verifica que la persona tiene permiso para entrar

al área, entonces le permitirá el acceso. Este tipo de sistemas se está volviendo cada vez

Page 7: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capitulo 1 Tipos de imágenes

3

más utilizado, desplazando los sistemas antiguos de identificación, de esta forma es como

tomamos este concepto para aplicarlo al sistema que se diseñara.

1.3 Percepción de colores

El ojo tiene dos tipos de receptores: bastones y conos. Los bastones transmiten

diferentes intensidades de gris y los conos le permiten al cerebro percibir la tonalidad de los

colores. Existen tres tipos de conos, el primero es sensible a la luz rojo/naranja, el segundo

a la luz verde y el tercero a la luz azul/violeta. Cuando un cono es estimulado, el cerebro

percibe el color correspondiente. Por ejemplo, cuando los conos verdes son estimulados, se

percibe el color verde; cuando los conos rojo/naranja son estimulados, se percibe el color

rojo. Si son estimulados simultáneamente ambos tipos de conos, los verdes y los

rojo/naranja, se percibe el color amarrillo.

El ojo no puede diferenciar entre un color amarillo espectral, y alguna combinación de rojo

y verde. Lo mismo sucede con nuestra percepción de los colores cian, agenta, y los otros

colores espectrales intermedios. Debido a esta respuesta fisiológica, el ojo puede percibir

una amplia gama de tonalidades por medio de la variación de solo tres colores: rojo, verde

y azul.

Cualquier color puede ser espectralmente analizado usando un prisma para determinar sus

intensidades primarias de rojo, verde y azul.

Page 8: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capitulo 1 Tipos de imágenes

4

1.4 Imágenes digitales

La digitalización de imágenes es el proceso por medio del cual se convierte una imagen en

un formato interpretable por las computadoras. Una imagen digital se puede obtener

utilizando cámaras fotográficas digitales, escáneres, etcétera.

En la década de los ochenta solo era posible utilizar cuatro colores en las pantallas de las

computadoras. Esto evolucionó rápidamente y actualmente se utilizan millones de colores.

Una imagen digital es un arreglo de dos dimensiones de píxeles (picture element) y un píxel

es la unidad mínima que conforma una imagen digital.

Figura 1.1. Representación de una imagen digital.

1.5 Representación de colores en imágenes digitales.

Normalmente, los colores primarios son el rojo, el amarillo y el azul, y a partir de la

mezcla de estos se crean los otros colores. Sin embargo, en las imágenes digitales los

colores primarios son el rojo (Red), el verde (Green) y el azul (Blue) y se utilizan las

intensidades de luz para obtener nuevos colores. Esto dio lugar al sistema RGB.

Page 9: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capitulo 1 Tipos de imágenes

5

Una imagen digital está compuesta por una matriz bidimensional de elementos RGB. En

imágenes digitales de color verdadero, se utilizan 8 bits (1 byte) para representar la

intensidad de cada componente o canal de color, y por ser 3 componentes por color, se

necesitan 24 bits (3 bytes) para formar un solo color, lo que es equivalente a un píxel.

Entonces, una imagen de 10 x 10 píxeles utiliza 2400 bits o sea 300 bytes.

Siguiendo el esquema de 1 byte por cada componente o canal, y sabiendo que el valor

máximo que puede ser representado por 1 byte es 255, la intensidad de una canal está en un

rango de 0 a 255, por lo que un píxel estará compuesto por tres diferentes intensidades de

R, G y B en un rango de 0 a 255.

El sistema RGB no es el único utilizado en las imágenes digitales. Se han creado diversos

sistemas para representar los colores según la aplicación. El sistema RGB es nativo de las

computadoras, pero no siempre es el más adecuado. Es un sistema aditivo porque el color

blanco se logra mezclando los tres colores rojo, verde y azul, y el negro es la ausencia de

color. Por el contrario, en el sistema CMY (Cyan, Magenta, Yellow) utilizado para los

medios impresos, expresa las intensidades de los colores cian, magenta y amarillo, es un

sistema sustractivo porque el color negro se logra mezclando los tres colores y el blanco es

la ausencia de color.

En el sistema RGB el blanco es RGB (255, 255, 255) y el negro es RGB (0, 0, 0), en donde

los valores entre paréntesis son las intensidades de cada uno de los canales RGB. RGB

(255,0,0), RGB(0,255,0) y RGB(0,0,255) representan el rojo, el verde y el azul

respectivamente. Al mezclar el color rojo con el azul se obtiene el color morado, RGB

(255, 0, 255). Se pueden crear todos los colores disponibles variando las intensidades de las

componentes RGB.

Otro sistema es el YUV, que fue adoptado por National Television System Commitee

(NTSC) para la transmisión de señales de televisión a color. Su propósito es hacer uso de

las características del ojo humano para maximizar la utilización de un ancho de banda

definido. El sistema visual humano es más sensible a los cambios de intensidad del color

que a los cambios de la tonalidad.

Page 10: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capitulo 1 Tipos de imágenes

6

Existe una fórmula para convertir de un sistema de representación de colores a otro. En la

conversión no se pierde la información sino se representa de una forma distinta.

1.6 Resolución de las imágenes digitales

La resolución es un factor que se utiliza para convertir las dimensiones de una

imagen física a píxeles de una imagen digital y viceversa. Si una fotografía es digitalizada a

300 dpi (Dots Per Inch) o puntos por pulgada, significa que por cada pulgada de la

fotografía física original se van a obtener 300 píxeles en la imagen digitalizada. Si se

imprime una imagen a 75 dpi, quiere decir que por cada 75 píxeles se imprimirá una

pulgada sobre papel.

1.7 Tipos de imágenes

JPEG

Las imágenes en formato JPEG (con extensión JPG) son imágenes en color real (paleta de

colores RGB de 24 bits) comprimidas mediante un algoritmo matemático.

Figura 1.2. Imagen en formato JPEG.

Page 11: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capitulo 1 Tipos de imágenes

7

GIF

En el formato GIF, las imágenes sólo se representan mediante una paleta de 256 colores,

por lo que no permiten la presentación de imágenes muy complejas. Son las más empleadas

por su pequeño tamaño

Figura 1.3. Imagen en formato GIF.

GIF animado

Consiste en una serie de imágenes en formato GIF, y por tanto en 256 colores) que se

alternan en la pantalla del ordenador, obteniéndose una película. El GIF animado puede

repetirse un número determinado de veces o indefinidamente, de forma que la película se

repita ininterrumpidamente, volviendo al principio cuando se ve la última imagen.

Page 12: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

CAPITULO 2

Procesamiento digital de imágenes y sistemas de

reconocimiento de placas existentes

Page 13: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capitulo 2 Procesamiento digital de imágenes y sistemas de reconocimiento de placas existentes

8

2.1 Conceptos básicos de las imágenes en Matlab

En Matlab una imagen a escala de grises es representada por medio de una matriz

bidimensional de m x n elementos en donde n representa el numero de píxeles de ancho y m

el numero de píxeles de largo. El elemento v11 corresponde al elemento de la esquina

superior izquierda, donde cada elemento de la matriz de la imagen tiene un valor de 0

(negro) a 255 (blanco).

Por otro lado una imagen de color RGB (la mas usada para la visión computacional,

además de ser para Matlab la opción default) es representada por una matriz tridimensional

m x n x p, donde m y n tienen la misma significación que para el caso de las imágenes de

escala de grises mientras p representa el plano, que para RGB que puede ser 1 para el rojo,

2 para el verde y 3 para el azul.

2.2 Procesamiento de imágenes

El procesamiento de imágenes tiene como objetivo mejorar el aspecto de las

imágenes y hacer más evidentes en ellas ciertos detalles que se desean hacer notar. La

imagen puede haber sido generada de muchas maneras, por ejemplo, fotográficamente, o

electrónicamente, por medio de monitores de televisión. El procesamiento de las imágenes

se puede en general hacer por medio de métodos ópticos, o bien por medio de métodos

digitales, en una computadora.

El matemático Jean-Baptiste-Joseph Fourier (1768-1830) nació en Auxerre, alrededor de

160 km al sureste de París. Perdió a sus padres a la temprana edad de ocho años, quedando

al cuidado del obispo de Auxerre, gracias a la recomendación de una vecina. Desde muy

pequeño mostró una inteligencia y vivacidad poco comunes. Siguió una carrera religiosa en

una abadía, al mismo tiempo que estudiaba matemáticas, para más tarde dedicarse a

impartir clases. Sus clases eran muy amenas, pues constantemente mostraba una gran

erudición y conocimientos sobre los temas más variados.

Page 14: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capitulo 2 Procesamiento digital de imágenes y sistemas de reconocimiento de placas existentes

9

Fourier estaba muy interesado en la teoría del calor, y además tenía una gran obsesión

práctica por él. Se dice que mantenía su habitación tan caliente que era muy incómoda para

quienes lo visitaban, y que aparte de eso, siempre llevaba puesto un grueso abrigo. Algunos

historiadores atribuyen esta excentricidad a los tres años que pasó en Egipto con el ejército

de Napoleón Bonaparte.

La teoría de Fourier se consideró tan importante desde de sus inicios, que lord Kelvin dijo

de ella: "El teorema de Fourier no solamente es uno de los resultados más hermosos del

análisis moderno, sino que además se puede decir que proporciona una herramienta

indispensable en el tratamiento de casi todos los enigmas de la física moderna."

El teorema de Fourier afirma que una gráfica o función, cualquiera que sea su forma, se

puede representar con alta precisión dentro de un intervalo dado, mediante la suma de una

gran cantidad de funciones senoidales, con diferentes frecuencias. Dicho de otro modo,

cualquier función, sea o no sea periódica, se puede representar por una superposición de

funciones periódicas con diferentes frecuencias. La variación de la irradiación o brillantez

de una imagen, medida a lo largo de una dirección cualquiera es entonces una función que

se puede representar mediante el teorema de Fourier, con una suma de distribuciones

senoidales de varias frecuencias. Sin entrar en detalles técnicos innecesarios, simplemente

afirmaremos aquí que atenuar o reforzar individualmente algunas de estas componentes

senoidales puede tener un efecto dramático en la calidad de una imagen, mejorándola o

empeorándola, según el caso. Este es el fundamento del procesamiento de imágenes, tanto

por medios ópticos como digitales.

2.3 Procesamiento óptico

Los principios del procesamiento óptico de imágenes están bien establecidos desde

el siglo pasado, cuando se desarrolló la teoría de la difracción de la luz. Sin embargo, su

aplicación práctica data apenas del principio de la década de los sesenta, cuando se

comenzó a disponer del rayo láser.

Page 15: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capitulo 2 Procesamiento digital de imágenes y sistemas de reconocimiento de placas existentes

10

El procesamiento óptico se basa en el hecho de que la imagen de difracción de Fraunhofer

de una transparencia colocada en el plano focal frontal de una lente es una distribución

luminosa que representa la distribución de las frecuencias de Fourier que componen la

imagen, a la que se le llama técnicamente transformada de Fourier.

Cada porción de la transformada de Fourier corresponde a una frecuencia espacial diferente

sobre el objeto. Por lo tanto, mediante los diafragmas adecuados se pueden eliminar las

frecuencias espaciales, llamadas también de Fourier, que se deseen quitar.

2.4 Procesamiento digital de imágenes

Figura 2.1. Procesamiento óptico de imágenes. (a) imagen original, con líneas de

barrido, tipo imagen de televisión; (b) transformada de Fourier del objeto; (c)

transformada de Fourier modificada, después de filtrar y (d) imagen procesada, sin

las líneas de barrido.

Al igual que en el caso del procesamiento óptico, los principios fundamentales del

procesamiento digital de imágenes están establecidos hace muchos años, pero no se

llevaban a cabo debido a la falta de computadoras. Con la aparición de las computadoras de

Page 16: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capitulo 2 Procesamiento digital de imágenes y sistemas de reconocimiento de placas existentes

11

alta capacidad y memoria, era natural que se comenzara a desarrollar este campo. Uno de

los primeros lugares donde se empezó a realizar el procesamiento digital fue en el Jet

Propulsion Laboratory, en 1959, con el propósito de mejorar las imágenes enviadas por los

cohetes. Los resultados obtenidos en un tiempo relativamente corto fueron tan

impresionantes que muy pronto se extendieron las aplicaciones del método a otros campos.

Figura 2.2. División de una imagen en pixeles.

El procesamiento digital de imágenes se efectúa dividiendo la imagen en un arreglo

rectangular de elementos. Cada elemento de la imagen así dividida se conoce con el

nombre de pixel. El siguiente paso es asignar un valor numérico a la luminosidad promedio

de cada pixel. Así, los valores de la luminosidad de cada pixel, con sus coordenadas que

indican su posición, definen completamente la imagen.

Todos estos números se almacenan en la memoria de una computadora.

El tercer paso es alterar los valores de la luminosidad de los pixeles mediante las

operaciones o transformaciones matemáticas necesarias, a fin de hacer que resalten los

detalles de la imagen que sean convenientes. El paso final es pasar la representación de

estos pixeles a un monitor de televisión de alta definición, con el fin de mostrar la imagen

procesada.

Page 17: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capitulo 2 Procesamiento digital de imágenes y sistemas de reconocimiento de placas existentes

12

Figura 2.3. Procesamiento digital de imágenes. Cefalograma en el que se han reforzado las

componentes de Fourier de alta frecuencia. (Tomado de S. W. Oka y H. J. Trussell, The

Angle Ortodontist, 48, núm. 1, 80, 1978). (a) Imagen original y (b) imagen procesada.

2.5 Utilidad del procesamiento de imágenes

La utilidad del procesamiento de imágenes es muy amplia y abarca muchos campos.

Un ejemplo son las imágenes obtenidas con fines de diagnóstico médico. Otro ejemplo son

las imágenes aéreas obtenidas para realizar exámenes del terreno. Mediante este método se

pueden analizar los recursos naturales, las fallas geológicas del terreno, etcétera.

El procesamiento digital de imágenes es el conjunto de técnicas que se aplican a las

imágenes digitales con el objetivo de mejorar la calidad o facilitar la búsqueda de

información.

Las operaciones que se pueden realizar con imágenes se dividen en:

• Operaciones de punto

• Operaciones de entorno

• Operaciones con dos o más imágenes

Page 18: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capitulo 2 Procesamiento digital de imágenes y sistemas de reconocimiento de placas existentes

13

2.6 Reconocimiento de Imágenes

Los sistemas de computadoras son cada vez más potentes y menos costosos, lo que

permite crear nuevas formas de arte que antes no eran posibles, y algunas otras formas de

arte antiguas pueden ahora verse beneficiadas con novedosas técnicas asistidas por

computadora.

El reconocimiento de imágenes ha evolucionado a medida que mejora la tecnología. Puede

encontrarse en numerosos campos.

2.7

El reconocimiento óptico de caracteres, conocido también como OCR (Optical

Character Recognition), es un proceso por el cual en una imagen digital se reconocen los

caracteres con la finalidad de poder editarla como texto. Este tipo de aplicaciones son

utilizadas como complemento en escáneres y otros dispositivos de captura de imágenes

digitales.

Reconocimiento de caracteres

Los filtros se utilizan para la modificación de imágenes ya sea para detectar los

bordes de una escena o para modificar el aspecto, otra función de los filtros es para la

eliminación de ruido de la imagen.

2.8 Filtros

Al hablar de un filtro nos estamos refiriendo a realizar una Convolución de una matriz con

respecto a un pixel y la vecindad de este, esto quiere decir, si la imagen es de 200x300

pixeles y el filtro con el cual se va a realizar la convolución es una matriz de 3x3 entonces

se irá desplazando el filtro pixel a pixel iniciando en la posición (1,1) hasta llegar a la

(199,299). La magnitud del gradiente es entonces calculada con la siguiente fórmula:

Page 19: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capitulo 2 Procesamiento digital de imágenes y sistemas de reconocimiento de placas existentes

14

2.9 Filtros para la detección de bordes

Un filtro para la detección de bordes que es un clásico el de Sobel el cual utiliza dos

mascaras o filtros los cuales uno detecta los bordes verticales y el otro los horizontales, para

obtener los bordes completos se realiza la suma de las imágenes que nos resultaron con los

bordes verticales y horizontales.

Otro filtro para la detección de bordes es Prewitt, el cual consta de 8 matrices, que se

aplican pixel a pixel en la imagen y luego se suman las imágenes para obtener los bordes

bien marcados. El filtro de Prewitt, marca muy bien los bordes, ya que sus matrices atacan

estos de seis lados diferentes, en general cada matriz toma el nombre de un punto cardinal:

Norte, Sur, Este, Oeste, Noroeste, Noreste, Suroeste, Sureste.

2.10 Aplicaciones del reconocimiento de imágenes

A) Información inteligente de tráfico vehicular

Esta aplicación nos permite obtener información de flujos o volumen de transito en

calles para que al contar con información estadística, se pueda mejorar los parámetros de

circulación, por ejemplo, tiempos de espera de semáforos, determinación de tiempos y

lugares críticos para operativos de agilización de flujos, etc.

Al igual que otras aplicaciones, con el mismo equipo puede conjuntarse esta funcionalidad

y generar un dispositivo mucho más complejo.

B) Identificación de personas para investigaciones policíacas.

Page 20: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capitulo 2 Procesamiento digital de imágenes y sistemas de reconocimiento de placas existentes

15

Aunque las técnicas aun están en desarrollo en este campo, y aun no existe una

aplicación totalmente confiable, es evidente la importancia del reconocimiento de imágenes

para la identificación de personas en investigaciones policíacas.

Muchas veces en investigaciones de crímenes un testigo puede describir con mucho detalle

el rostro de un criminal. Un dibujante profesional convierte la descripción verbal del testigo

en un dibujo sobre papel. El trabajo de la computadora consiste en buscar el rostro del

criminal en una base de datos de imágenes. En las investigaciones policíacas también se

utiliza la búsqueda de huellas dactilares en una base de datos.

2.11 Sistemas de reconocimiento de placas existentes.

El reconocimiento automático de matrículas (Automatic number plate

recognition o ANPR en inglés) es un método de vigilancia en masa que utiliza

reconocimiento óptico de caracteres en imágenes para leer las matrículas de los vehículos.

En 2005, los sistemas ya podían escanear las matrículas con una frecuencia aproximada de

una por segundo en vehículos con velocidades de hasta 160 km/h. Y este sistema se

complementaba al utilizar el circuito cerrado de televisión existente o radares, o equipos

diseñados específicamente para dicha tarea. En principio comenzaron a ser utilizadas por

las diversas fuerzas de policía y como método de recaudación electrónica de peaje en las

autopistas de pago de algunos países , y para vigilar la actividad del tránsito.

El ANPR se puede utilizar para almacenar las imágenes capturadas por las cámaras

fotográficas, así como el texto de la matrícula, y algunas se pueden configurar para

almacenar una fotografía del conductor. Estos sistemas a menudo utilizan iluminación

infrarroja para hacer posible que la cámara pueda tomar fotografías en cualquier momento

del día. En al menos una versión de cámara fotográfica para la supervisión de

intersecciones se incluye un flash de gran alcance, que sirve para iluminar la escena y hacer

que el infractor se dé cuenta de su error. La tecnología ANPR tiende a ser específica para

una región, debido a la variación entre matrículas de un lugar a otro.

El software del sistema se ejecuta sobre un hardware de PC estándar y puede ser enlazado

con otras aplicaciones o bases de datos. Primero utiliza una serie de técnicas de

Page 21: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capitulo 2 Procesamiento digital de imágenes y sistemas de reconocimiento de placas existentes

16

manipulación de la imagen para detectar, normalizar y realzar la imagen del número de la

matrícula, y finalmente reconocimiento óptico de caracteres para extraer los alfanuméricos

de la matrícula. Los sistemas ANPR/ALPR se pueden utilizar de dos modos; uno permite

que el proceso sea realizado en su totalidad en el lugar de la toma en tiempo real, mientras

que el otro transmite todas las imágenes de muchas cámaras a un ordenador remoto en que

se realiza el proceso de OCR más tarde. Cuando se realiza “in situ” es decir en el mismo

lugar donde ocurrió el incidente, la información capturada de la matrícula alfanumérica,

fecha y hora, identificación del lugar y cualquier otra información que se requiera es

completada en unos 250 milisegundos. Esta información, convertida ahora en pequeños

paquetes de datos, se puede transmitir fácilmente a algún ordenador remoto para un

posterior procesamiento en caso de que sea necesario, o ser almacenado en el lugar para ser

recuperada posteriormente. En la otra disposición, típicamente hay una gran cantidad de

PC’s usados en un sitio de servidores para manejar altas cargas de trabajo, como por

ejemplo los que se encuentran en el proyecto de carga de congestión de Londres. A menudo

en dichos sistemas existe la necesidad de emitir imágenes al servidor remoto y éste puede

requerir medios de transmisión con un gran ancho de banda. Los inconvenientes de estos

sistemas están centrados en el temor en cuanto a la privacidad de los movimientos de los

ciudadanos y los informes de los medios sobre la identificación errónea y altas tasas de

error. Sin embargo, según se han ido desarrollando, estos sistemas han logrado ser mucho

más exactos y fiables.

Al ANPR se le conoce a veces con otros términos:

Diversidad de nombres para este sistema

• Identificación automática de vehículos (Automatic vehicle identification, AVI)

• Reconocimiento de matrículas de vehículos (Car plate recognition, CPR)

• Reconocimiento de matrículas (Licence plate recognition, LPR)

ANPR utiliza reconocimiento óptico de caracteres (OCR) en las imágenes tomadas por las

cámaras fotográficas. Algunas matrículas utilizan cambios en los tamaños de las fuentes y

en la posición - los sistemas ANPR deben poder hacer frente a estas diferencias para ser

Page 22: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capitulo 2 Procesamiento digital de imágenes y sistemas de reconocimiento de placas existentes

17

verdaderamente eficaces. Algunos sistemas más complicados pueden distinguir variantes

internacionales, aunque muchos programas se adaptan a cada país individualmente.

Hay ciertos algoritmos principales que el software necesita para identificar una

matrícula:

2.12 Algoritmos y pasos a seguir para realizar el ANPR

1. Localización de la matrícula - responsable de encontrar y aislar la matrícula en la

imagen.

2. Orientación y tamaño de la matrícula - compensa los ángulos que hacen que la

matrícula parezca "torcida" y ajusta las dimensiones al tamaño requerido.

3. Normalización - ajusta el brillo y el contraste de la imagen.

4. Segmentación de los caracteres - encuentra los distintos caracteres presentes en la

matrícula.

5. Reconocimiento óptico de caracteres.

6. Análisis sintáctico y geométrico - comprueba los caracteres encontrados y sus

posiciones con las reglas específicas del país al que pertenece la matrícula.

La complejidad de cada una de estas subdivisiones del programa determina la exactitud del

sistema. Durante la tercera fase (normalización) algunos sistemas utilizan técnicas de

detección de borde para aumentar la diferencia en la imagen entre las letras y el fondo de la

placa. También se puede utilizar un filtro digital de punto medio para reducir el "ruido"

visual de la imagen.

El software debe ser capaz de afrontar diferentes dificultades posibles, que incluyen:

2.13 Dificultades para el buen funcionamiento.

• Resolución de imagen pobre, a menudo porque la matrícula está demasiado lejos,

aunque a menudo es resultado del uso de una cámara de baja calidad.

Page 23: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capitulo 2 Procesamiento digital de imágenes y sistemas de reconocimiento de placas existentes

18

• Imágenes desenfocadas, en particular desenfoque de movimiento y muy a menudo

en unidades móviles

• Iluminación pobre y bajo contraste debido a sobreexposición, reflexión o sombras

• Un objeto que oscurece (parte de) la matrícula, a menudo una barra del remolque, o

suciedad en la matrícula

• Técnicas de evasión

Los primeros sistemas ANPR eran incapaces de leer letras blancas o plateadas sobre un

fondo negro, como se permitía en los vehículos de algunos países como Reino Unido

fabricados antes de 1973.

Aunque algunos de estos problemas se pueden corregir en el software, se dejan sobre todo

en el lado del hardware del sistema para ofrecer soluciones a estos problemas. El aumento

de la altura de la cámara puede evitar problemas con los objetos (tales como otros

vehículos) que oscurecen la placa, pero introduce y aumenta otros problemas como el ajuste

según la oblicuidad creciente de la placa.

Muchos países utilizan matrículas retroreflectivas. Esto devuelve la luz hacia la fuente y

mejora así el contraste de la imagen. En algunos países los caracteres de la matrícula no son

reflectantes, dando un alto nivel del contraste con el fondo reflectante bajo cualquier

condición de iluminación. Una cámara que utiliza imagen infrarroja (con un filtro normal

de color sobre la lente y una fuente luminosa infrarroja al lado de ella) beneficia en gran

medida, reflejándose las ondas infrarrojas desde la matrícula. Sin embargo, esto sólo es

posible en cámaras ANPR dedicadas, por lo que las cámaras usadas para otros propósitos

deben confiar en mayor medida en las capacidades del software. Además, cuando se

necesita una imagen a todo color y la captación de detalles es necesario tener una cámara

con infrarrojos y una cámara normal (en color) funcionando conjuntamente.

Imágenes borrosas dificultan el OCR – los sistemas ANPR deberían tener altas velocidades

de disparo para evitar el desenfoque de movimiento

Para evitar el desenfoque es ideal tener la velocidad del obturador de la cámara fijada a

1/1000 segundos. Debido a que el coche está en movimiento, el uso de velocidades más

Page 24: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capitulo 2 Procesamiento digital de imágenes y sistemas de reconocimiento de placas existentes

19

reducidas podría dar lugar a una imagen demasiado borrosa para ser leída con el software

OCR, especialmente si la cámara está en una posición mucho más alta que el vehículo.

Cuando el tránsito es lento o cuando la cámara fotográfica está a una altura inferior y el

vehículo está en un ángulo de aproximación a la cámara, no es necesario que la velocidad

del obturador sea tan alta. Velocidades del obturador de 1/500 pueden funcionar

correctamente con vehículos con una velocidad de hasta 64 kilómetros por hora y 1/250

hasta 8 kilómetros por hora.

En algunos coches, las barras de remolque pueden oscurecer uno o dos caracteres de la

matrícula. Las bicicletas en las defensas también oscurecer la placa, aunque en algunos

países y jurisdicciones, estos casos no generan ningún tipo de infracción y dificultan la

acción del ANPR

Algunos sistemas a escala reducida permiten algunos errores en la matrícula. Cuando se

utiliza para ofrecer acceso específico de los vehículos a una zona con barrera, la decisión

puede ser tomada con un índice de error aceptable de un carácter. Esto es así porque la

probabilidad de que un coche desautorizado con una matrícula tan similar se considera que

es absolutamente pequeña. Sin embargo, este nivel de imprecisión no sería aceptable en la

mayoría de las aplicaciones de un sistema ANPR.

Los propietarios de vehículos han utilizado una variedad de técnicas para intentar

evadir los sistemas ANPR. Un método consiste en incrementar las propiedades de reflexión

de las letras y aumentar así la probabilidad de que el sistema no sea capaz de localizar la

matrícula o de producir suficiente nivel de contraste para lograr leerla. Esto normalmente se

realiza usando una tapadera de matrículas o recubriendo la placa con aerosol, aunque hay

dudas sobre la efectividad de este último. En la mayoría de las jurisdicciones, tanto de

nuestro país como alrededor del mundo, las tapaderas son ilegales y está contemplado bajo

leyes existentes, mientras que en la mayoría de los países no hay ninguna ley que rechace el

uso de los aerosoles.

2.14 Técnicas de evasión del ANPR

Page 25: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capitulo 2 Procesamiento digital de imágenes y sistemas de reconocimiento de placas existentes

20

En Argentina la matrícula tiene la misma consideración que un documento público, por lo

que se considera delito su modificación.

En una ruta de transporte publico de Toronto (Canadá), la policía ha registrado varias

técnicas avanzadas que algunos conductores han tratado de llevar a cabo. Un empleado de

esta ruta tenía un mecanismo que le permitía levantar un cable del asiento del conductor

que hacía que se mostrara una matrícula diferente en el momento en que pasaba por las

zonas vigiladas con cámara. Otros han tratado de manchar su matrícula con suciedad o

utilizar cubiertas para enmascararla.

Los novedosos marcos alrededor de las matrículas han sido declarados ilegales en diversos

lugares siendo los pineros de esta restricción los Estados Unidos porque causaban

problemas en los sistemas ANPR. Esta ley convierte el uso de dichos marcos en un delito

menor.

Hay algunos paneles traseros para coche con una inserción en ángulo para la matrícula, lo

que cambia la alineación de caracteres de la rejilla de lectura, quizás la manera más fácil de

invalidar el reconocimiento es simplemente permitir que la pintura reflectante de las placas

se degrade por la edad y se haga por tanto ilegible.

Si un sistema ANPR no puede leer la placa de matrícula avisará, por medio de una señal

acústica, para llamar la atención de los operadores humanos, que pueden entonces tratar de

identificar los caracteres visualmente. Es entonces posible hacer operaciones de búsqueda

usando caracteres comodín que sustituyan cualquier parte oculta de la matrícula y utilizar

los detalles del coche (fabricante y modelo, por ejemplo) para refinar la búsqueda.

2.15 Otros usos

Los sistemas ANPR también pueden ser usados para:

del ANPR

• Cruce de fronteras

• Estaciones de servicios para llevar un registro de los conductores que abandonan la

estación sin realizar algún pago.

• Control de acceso a estacionamientos públicos o de algún particular.

Page 26: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capitulo 2 Procesamiento digital de imágenes y sistemas de reconocimiento de placas existentes

21

• Una herramienta de mercadotecnia para llevar un registro de patrones de uso en

alguna bodega o empresas dedicadas a la logística.

• Sistemas de gestión de tráfico, para determinar el flujo de tráfico usando el tiempo

que tardan los vehículos en pasar por dos sitios dotados de ANPR

2.16 Control de acceso a estacionamientos, casetas de cobro y algunas variantes

Con esta aplicación podemos controlar el acceso a estacionamientos de

dependencias y estacionamientos públicos o corporativos, controlando no solo quien entra y

quien sale, sino también el horario en que estas transacciones deben de ocurrir, pudiendo

restringir el acceso después de un tiempo de tolerancia o salida a personal que todavía debe

estar laborando.

Figura 2.4. Aplicación de control para la identificación de placas.

Incluso se puede reconocer colores y patrones del vehículo para evitar suplantación de

placas, por ejemplo que entren con un carro compacto y salgan con un carro de lujo

cambiándole la placa al vehículo.

Page 27: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capitulo 2 Procesamiento digital de imágenes y sistemas de reconocimiento de placas existentes

22

Reconocimiento y detección en tiempo real de placas usando tecnología de

análisis de video

Esta tecnología permite el reconocimiento de placas usando video en tiempo real, lo

cual permite tener un sin número de aplicaciones tanto para control estadístico, seguridad

pública, control de velocidades, etc.

Figura 2.5. Reconocimiento y detección en tiempo real de placas.

Velocidad Promedio

Esta aplicación nos permite controlar la velocidad promedio de los vehículos

pasando a través de dos puntos de control. Al saber la distancia y el tiempo podemos

determinar la velocidad promedio, que es una ventaja con respecto a los radares

convencionales dado que esos solo miden la velocidad instantánea.

De la misma forma se puede interactuar con otros sistemas para poder enviar la placa y la

foto del vehículo, para procesar la infracción correspondiente sin necesidad de intervención

humana, agilizando el proceso y evitando errores.

Page 28: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capitulo 2 Procesamiento digital de imágenes y sistemas de reconocimiento de placas existentes

23

2.17 Empresas existentes

Adaptive Recognition es una compañía dedicada a producir equipos inteligentes los

cuales procesan imágenes en el contexto de seguridad y control de tráfico. Las solucione de

Adaptive Recognition son utilizadas hoy en día mundialmente para asegurar todo tipo de

documentos y control de tráfico por medio del reconocimiento de placas.

CARMEN ANPR

Este producto el cual se basa en reconocimiento de caracteres por medio de redes

neuronales, nos permite identificar las placas de los automóviles convirtiéndolas a texto

para posteriormente ser utilizadas como mejor sea conveniente. A esta tecnología se le

conoce como ANPR (Automated Number Plate Recognition) por sus siglas en inglés y

está altamente probada en más de 60 países con miles de sistemas instalados a la fecha.

Existen dos versiones, la primera (Carmen FreeFlow) para ser utilizada en vías rápidas

la cual permite reconocer placas con velocidades hasta de 250 km/h y la segunda

(Carmen Parking) para ser utilizada en controles de acceso a estacionamientos, garajes,

etc.

Page 29: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

CAPITULO 3

Diseño del sistema de reconocimiento de placas en MatLab

Page 30: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

24

3.1 Desarrollo del proyecto

Restricciones: Las imágenes tomadas pueden ser de cualquier tamaño, pero la placa debe

cumplir con las siguientes condiciones de 150 a 210 pixeles y de 50 a 110 pixeles. Además,

las fotos tomadas de la placa no pueden estar inclinadas.

Procedimiento: Inicialmente se necesita diferenciar si la imagen está en escala de grises o

en RGB para poder hacer la conversión correspondiente. Se utiliza el siguiente código:

I=imread('C:\foto104.jpg');

info=imfinfo('C:\foto104.jpg');

if info.ColorType=='truecolor' %Ciclo para determinar si es a color o en

I=rgb2gray(I); %escala de grises para poder hacer o no la

else %conversion necesaria

I=I;

End

Una vez realizado esto se recorta la imagen para poder eliminar zonas en las que no existe

información relevante a la placa como los bordes superiores y externos, se muestra en la

figura 3.1. Se observaron las fotos para determinar cual es el rango aproximado que se

puede cortar.

Page 31: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

25

Figura 3.1. Imagen Recortada

Después del recorte se determina el umbral óptimo de la imagen. Esto se hace calculando

el gradiente de la imagen utilizando la técnica de Sobel para hallar posibles picos en la

imagen, y luego las siguientes ecuaciones:

Se implementó el siguiente código para definir una función para calcular el umbral óptimo

de cada foto en particular:

% umbral=UmbralOptimo(imagen, filasImagen, columnasImagen, gradiente);

% Algoritmo para calcular el umbral optimo para la binarizacion.

function umbral=UmbralOptimo(imagen, filasImagen, columnasImagen, gradiente)

% Creo una variable que me dice de que color era el último grupo que guarde

% de esta forma se que la cola del final de la fila pertenece al otro color

% la variable se llama ultimoColor, si vale cero fue oscuro y si vale uno

% fue claro.

Page 32: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

26

numOscuros=0;

numClaros=0;

oscuros=0;

claros=0;

cont=0;

acum=0;

% Este if es para solucionar el problema que ocurre si no hay bordes en la

% primer fila entonces no se sabe si es clara o oscura.

% Supongo continuidad en los colores, si en la segunda fila tampoco hay bordes

% estos los supongo del mismo color que la primera.

if imagen(1,1)<(max(max(imagen))/2)

% Como es oscuro pongo que el ultimo color fue claro.

ultimoColor=1;

else

% Como es claro pongo que el ultimo color fue oscuro.

ultimoColor=0;

end

for i=1:filasImagen

if ultimoColor==0

Page 33: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

27

numClaros=numClaros+cont;

cont=0;

claros=claros+acum;

acum=0;

else

numOscuros=numOscuros+cont;

cont=0;

oscuros=oscuros+acum;

acum=0;

end

for j=1:columnasImagen

if gradiente(i,j)==0

cont=cont+1;

acum=acum+imagen(i,j);

else

if gradiente(i,j)==-1

numOscuros=numOscuros+cont;

cont=1;

oscuros=oscuros+acum;

acum=imagen(i,j);

ultimoColor=0;

else

numClaros=numClaros+cont;

Page 34: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

28

cont=1;

claros=claros+acum;

acum=imagen(i,j);

ultimoColor=1;

end

end

end

end

if ultimoColor==0

numClaros=numClaros+cont;

claros=claros+acum;

else

numOscuros=numOscuros+cont;

oscuros=oscuros+acum;

end

% Media de los claros.

mediaClaros=claros/numClaros;

% Media de los oscuros.

mediaOscuros=oscuros/numOscuros;

% Umbral optimo para la binarizacion.

umbral=(mediaOscuros*numClaros+mediaClaros*numOscuros)/(numClaros+numOscuros);

Page 35: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

29

Se definió la siguiente función para calcular el gradiente de Sobel:

% gradienteSobel=Sobel(imagen, filasImagen, columnasImagen, X_Porciento);

function gradienteSobel=Sobel(imagen, filasImagen, columnasImagen, X_Porciento)

% Kernel Sobel para calcular el gradiente en la direccion horizontal.

kernel=(1/8)*[-1 0 1; -2 0 2; -1 0 1];

gradiente=Filtro(imagen, filasImagen, columnasImagen, kernel);

% Calculo del umbral para clasificar la respuesta del Sobel, este es tal que

% solo un X% de los gradientes van a superar el umbral.

moduloGradiente=abs(gradiente(:));

maximoModuloGradiente=round(max(moduloGradiente));

minimoModuloGradiente=round(min(moduloGradiente));

nivelesGradiente=maximoModuloGradiente-minimoModuloGradiente;

histogramaGradiente=hist(moduloGradiente, nivelesGradiente);

histogramaGradienteAcumulado=cumsum(histogramaGradiente);

umbralSobel=nivelesGradiente;

while (umbralSobel > 0)&(histogramaGradienteAcumulado(umbralSobel) >

(filasImagen*columnasImagen*(1-(X_Porciento/100))))

umbralSobel=umbralSobel-1;

end

umbralSobel=minimoModuloGradiente+umbralSobel;

Page 36: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

30

% Clasificacion de la respuesta del Sobel en 1, 0 o -1.

gradienteSobel=[];

for i=1:filasImagen

for j=1:columnasImagen

if gradiente(i,j) > umbralSobel

gradienteSobel(i,j)=1;

else

if gradiente(i,j) < -umbralSobel

gradienteSobel(i,j)=-1;

else

gradienteSobel(i,j)=0;

end

end

end

end

Finalmente se implementó el siguiente código para el recorte y la determinación del

umbral:

[R C]=size(I); %Halla el tamaño de la imagen

cropsize=[(R*0.25) (C*0.15) (C*0.625) (R*0.6)]; %Determina seccion a cortar

Ic=imcrop(I,cropsize); %Recorta la imagen para eliminar fondo innecesario

figure; imshow(Ic) %Grafica Zona recortada

Id=double(Ic); [R C]=size(Ic) %Convierte imagen a doble para operaciones

Page 37: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

31

I2=sobel(Id,R,C,2.5); %Halla gradiente de sobel

umbral=umbraloptimo(Id,R,C,I2); %Halla umbral optimo

Posteriormente se realizan operaciones morfológicas. Inicialmente se utilizará un elemento

estructurante circular de radio 10 píxeles para realizar una transformación “bottom-hat”,

que primero hace una operación de “closing” (dilatación y luego erosión) y luego resta la

imagen obtenida de la imagen original para resaltar la placa y ciertos bordes como se puede

ver en la figura 3.2. Luego se aplica el umbral hallado anteriormente como se muestra en

la figura 3.3. Para eliminar el ruido se hace primero una operación de “closing” (dilatación

y luego erosión) utilizando un elemento estructurante horizontal hallado basándose en la

separación que existe entre los caracteres de la placa como se muestra en la figura 3.4.

Después se realiza “opening” (erosión y luego dilatación) con un elemento estructurante

vertical hallado basándose en la altura de los caracteres de la placa como se ve en la figura

3.5. Finalmente se realizan dilataciones verticales y horizontales para expandir la zona de

la placa como se ve en la figura 3.6. Se implementó el siguiente código:

st=strel('disk',10); %Elemento estructurante de 10 pixeles de radio

IM2=imbothat(Ic,st); %Hace Bottom-Hat

I3=IM2>umbral; %Aplica Umbral

LH=strel('line',60,0); %Elemento estructurante lineal horizontal

IM3=imclose(I3,LH); %Closing con elemento estructurante

LV=strel('line',20,90); %Elemento estructurante lineal vertical

IM4=imopen(IM3,LV); %Hace opening con elemento estructurante

figure;imshow(IM4) %Muestra Imagen

DIV=strel('line',35,90); %Elemento estructurante lineal vertical

DIH=strel('line',20,0); %Elemento estrucutrante lineal horizontal

IM5=imdilate(IM4,DIV); %Dilata con E.E. vertical

Page 38: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

32

IM6=imdilate(IM5,DIH); %Dilata con E.E. horizontal

figure; imshow(IM6) %Muestra imagen

Figura 3.1. Top-Hat

Figura 3.2. Umbral

Figura 3.3. Closing Horizontal

Figura 3.4. Opening Vertical

Figura 3.5. Dilatación

Page 39: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

33

Page 40: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

34

Finalmente a partir de la imagen binarizada de la zona de la placa, se pueden hallar la

ubicación de la placa y sus dimensiones para hacer un recorte de la imagen original de la

zona de la placa como se muestra en la figura 3.7. Se implementó el siguiente código:

L=bwlabel(IM6); %Crea regiones

stats=regionprops(L,'all'); %Estadisticas de las regiones

Idx=find([stats.Area]>(7000)); %Diferencia las regiones con Area > 7000

IM6=ismember(L,Idx); %Crea una imagen con dichas regiones

L=bwlabel(IM6); %Crea regiones

stats = regionprops(L,'all'); %Estadisticas de las regiones

E=stats(1).BoundingBox; %Toma tamaño de la region

X=E.*[[1] [0] [0] [0]]; X=max(X); %Determina eje X esquina superior Izq. Placa

Y=E.*[[0] [1] [0] [0]]; Y=max(Y); %Determina eje Y esquina superior Der. Placa

W=E.*[[0] [0] [1] [0]]; W=max(W) %Determina Ancho Placa

H=E.*[[0] [0] [0] [1]]; H=max(H); %Determina Altura placa

Corte=[X Y W H]; %Determina coordenadas de corte

IMF=imcrop(Ic,Corte); %Realiza el corte

figure; imshow(IMF) %Muestra imagen de la zona de la placa

Page 41: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

35

Figura 3.6. Recorte Placa.

A continuación procedemos a binarizar la imagen de la placa recortada con un umbral de

120, para poder recortar aun más la placa y así borrar las líneas y elementos que nos

producen ruido (Figura 3.8). Esto lo podemos realizar mediante una estadística de la región

tomada, y aplicando un porcentaje de recorte posible por las características estándar que

tienen las placas. Se realiza un filtro para ayudar a depurar un poco mas la imagen (Figura

3.9). Se binariza la imagen obtenida (Figura 3.10). Y por ultimo se aplica una propiedad de

región para que solo las áreas mayores a 1.5% del total queden presentes. El siguiente es el

código implementado:

umbral=120; %Aplico un Umbral de 120

placa=IMF>umbral; %Aplica umbral a placa

L=bwlabel(placa); %Crea regiones

stats=regionprops(L,'all'); %Estadisticas de las regiones

placadx=find([stats.Area]>(4500)); %Diferencia las regiones con Area > 4500

placa=ismember(L,placadx); %Crea una imagen con dichas regiones

L=bwlabel(placa); %Crea regiones

stats=regionprops(L,'all'); %Estadisticas de las regiones

E2=stats(1).BoundingBox; %Toma tamaño de la region

X2=E2.*[[1] [0] [0] [0]]; X2=max(X2); %Determina eje X esquina superior Izq. Placa

Page 42: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

36

Y2=E2.*[[0] [1] [0] [0]]; Y2=max(Y2); %Determina eje Y esquina superior Der. Placa

W2=E2.*[[0] [0] [1] [0]]; W2=max(W2); %Determina Anchura placa

H2=E2.*[[0] [0] [0] [1]]; H2=max(H2); %Determina Altura placa

Corte2=[X2 Y2 W2 H2]; %Determina coordenadas de corte

C2=imcrop(IMF,Corte2); %Realiza el corte

Wx=round(W2*0.94); Hx=round(H2*0.756);

Cortex=[4 12 Wx Hx];

C2=imcrop(C2,Cortex);

figure; imshow(C2) %Muestra Imagen

C3=imbothat(C2,st);

figure; imshow(C3)

umbral2=90;

C5=C3>umbral2;

figure; imshow(C5)

L=bwlabel(C5);

stats=regionprops(L,'all');

placadx=find([stats.Area]>((W2*H2)*0.015)); %Diferencia las regiones con Area > 1.5% del

%area total

placa=ismember(L,placadx); %Crea una imagen con dichas regiones

figure; imshow(placa)

Page 43: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

37

FIGURA 3.8. Recorte de la placa para

eliminar ruido.

FIGURA 3.9. Filtro para ayudar a depurar

la imagen.

FIGURA 3.10. Propiedad de región.

El siguiente paso es recortar cada carácter por separado, para esto utilizamos el comando

bwlabel para que nos divida la imagen en regiones y poder determinar el área que posee

cada región (que en este caso nos demarcará el área ocupada por el carácter) y poder

recortarlo con el comando imcrop, obteniendo cada carácter en una variable por separado.

Luego, a cada carácter se le realiza un nuevo dimensionamiento (24*42) para estandarizar

los caracteres y poder realizar el reconocimiento de la letra y del número. La figura 3.11

muestra los 6 caracteres recortados. El código utilizado es el siguiente:

L=bwlabel(placa);

stats=regionprops(L,'all');

E3=stats(1).BoundingBox; %Toma tamaño de la region 1, primer

caracter

Page 44: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

38

X3=E3.*[[1] [0] [0] [0]]; X3=max(X3); %Determina eje X esquina superior

Izq. Placa

Y3=E3.*[[0] [1] [0] [0]]; Y3=max(Y3); %Determina eje Y esquina superior

Der. Placa

W3=E3.*[[0] [0] [1] [0]]; W3=max(W3); %Determina Anchura placa

H3=E3.*[[0] [0] [0] [1]]; H3=max(H3); %Determina Altura placa

Corte3=[X3 Y3 W3 H3]; %Determina coordenadas de corte

L1=imcrop(C2,Corte3); %Realiza el corte

L1b=imresize(L1,[42 24]);

L1b=L1b>150;

figure; imshow(L1b) %Muestra el primer caracter

E3=stats(2).BoundingBox; %Toma tamaño de la region 2, segundo

caracter

X3=E3.*[[1] [0] [0] [0]]; X3=max(X3); %Determina eje X esquina superior

Izq. Placa

Y3=E3.*[[0] [1] [0] [0]]; Y3=max(Y3); %Determina eje Y esquina superior

Der. Placa

W3=E3.*[[0] [0] [1] [0]]; W3=max(W3); %Determina Anchura placa

H3=E3.*[[0] [0] [0] [1]]; H3=max(H3); %Determina Altura placa

Corte3=[X3 Y3 W3 H3]; %Determina coordenadas de corte

L2=imcrop(C2,Corte3); %Realiza el corte

L2b=imresize(L2,[42 24]);

L2b=L2b>150;

figure; imshow(L2b) %Muestra el segundo caracter

E3=stats(3).BoundingBox; %Toma tamaño de la region 3, tercer

caracter

Page 45: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

39

X3=E3.*[[1] [0] [0] [0]]; X3=max(X3); %Determina eje X esquina superior

Izq. Placa

Y3=E3.*[[0] [1] [0] [0]]; Y3=max(Y3); %Determina eje Y esquina superior

Der. Placa

W3=E3.*[[0] [0] [1] [0]]; W3=max(W3); %Determina Anchura placa

H3=E3.*[[0] [0] [0] [1]]; H3=max(H3); %Determina Altura placa

Corte3=[X3 Y3 W3 H3]; %Determina coordenadas de corte

L3=imcrop(C2,Corte3); %Realiza el corte

L3b=imresize(L3,[42 24]);

L3b=L3b>150;

figure; imshow(L3b) %Muestra el tercer caracter

E3=stats(4).BoundingBox; %Toma tamaño de la region 4, cuarto

caracter

X3=E3.*[[1] [0] [0] [0]]; X3=max(X3); %Determina eje X esquina superior

Izq. Placa

Y3=E3.*[[0] [1] [0] [0]]; Y3=max(Y3); %Determina eje Y esquina superior

Der. Placa

W3=E3.*[[0] [0] [1] [0]]; W3=max(W3); %Determina Anchura placa

H3=E3.*[[0] [0] [0] [1]]; H3=max(H3); %Determina Altura placa

Corte3=[X3 Y3 W3 H3]; %Determina coordenadas de corte

L4=imcrop(C2,Corte3); %Realiza el corte

L4b=imresize(L4,[42 24]);

L4b=L4b>150;

figure; imshow(L4b) %Muestra el cuarto caracter

E3=stats(5).BoundingBox; %Toma tamaño de la region 5, quinto

caracter

Page 46: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

40

X3=E3.*[[1] [0] [0] [0]]; X3=max(X3); %Determina eje X esquina superior

Izq. Placa

Y3=E3.*[[0] [1] [0] [0]]; Y3=max(Y3); %Determina eje Y esquina superior

Der. Placa

W3=E3.*[[0] [0] [1] [0]]; W3=max(W3); %Determina Anchura placa

H3=E3.*[[0] [0] [0] [1]]; H3=max(H3); %Determina Altura placa

Corte3=[X3 Y3 W3 H3]; %Determina coordenadas de corte

L5=imcrop(C2,Corte3); %Realiza el corte

L5b=imresize(L5,[42 24]);

L5b=L5b>150;

figure; imshow(L5b) %Muestra el quinto caracter

E3=stats(6).BoundingBox; %Toma tamaño de la region 6, sexto

caracter

X3=E3.*[[1] [0] [0] [0]]; X3=max(X3); %Determina eje X esquina superior

Izq. Placa

Y3=E3.*[[0] [1] [0] [0]]; Y3=max(Y3); %Determina eje Y esquina superior

Der. Placa

W3=E3.*[[0] [0] [1] [0]]; W3=max(W3); %Determina Anchura placa

H3=E3.*[[0] [0] [0] [1]]; H3=max(H3); %Determina Altura placa

Corte3=[X3 Y3 W3 H3]; %Determina coordenadas de corte

L6=imcrop(C2,Corte3); %Realiza el corte

L6b=imresize(L6,[42 24]);

L6b=L6b>150;

figure; imshow(L6b) %Muestra el sexto carácter

Page 47: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

41

Figura 3.11. Caracteres de la placa.

Desarrollo del OCR: En este momento ya poseemos los caracteres individuales que

componen el numero de la placa, por lo que se procederá a realizar una base de datos de las

24 letras del alfabeto en mayúscula (no se tiene en cuanta la letra CH ni la Ñ), y los dígitos

del 0 al 9. Para ello se realizaran archivos de imagen con los caracteres de 21*42 pixeles,

binarizados, que serán cargados a Matlab mediante variables, y luego se creara una matriz

denominada alfabeto que contenga todas la letras del alfabeto, Figura 3.12, y una matriz

denominada numeral que contiene todos los dígitos del 0 al 9, Figura 3.13. El siguiente es

el código implementado.

a=imread('C:\MATLAB6p5\work\A.bmp'); b=imread('C:\MATLAB6p5\work\B.bmp');

c=imread('C:\MATLAB6p5\work\C.bmp'); d=imread('C:\MATLAB6p5\work\D.bmp');

e=imread('C:\MATLAB6p5\work\E.bmp'); f=imread('C:\MATLAB6p5\work\F.bmp');

g=imread('C:\MATLAB6p5\work\G.bmp'); h=imread('C:\MATLAB6p5\work\H.bmp');

i=imread('C:\MATLAB6p5\work\I.bmp'); j=imread('C:\MATLAB6p5\work\J.bmp');

k=imread('C:\MATLAB6p5\work\K.bmp'); l=imread('C:\MATLAB6p5\work\L.bmp');

m=imread('C:\MATLAB6p5\work\M.bmp'); n=imread('C:\MATLAB6p5\work\N.bmp');

o=imread('C:\MATLAB6p5\work\O.bmp'); p=imread('C:\MATLAB6p5\work\P.bmp');

q=imread('C:\MATLAB6p5\work\Q.bmp'); r=imread('C:\MATLAB6p5\work\R.bmp');

s=imread('C:\MATLAB6p5\work\S.bmp'); t=imread('C:\MATLAB6p5\work\T.bmp');

u=imread('C:\MATLAB6p5\work\U.bmp'); v=imread('C:\MATLAB6p5\work\V.bmp');

w=imread('C:\MATLAB6p5\work\W.bmp'); x=imread('C:\MATLAB6p5\work\X.bmp');

y=imread('C:\MATLAB6p5\work\Y.bmp'); z=imread('C:\MATLAB6p5\work\Z.bmp');

uno=imread('C:\MATLAB6p5\work\1.bmp'); dos=imread('C:\MATLAB6p5\work\2.bmp');

Page 48: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

42

tres=imread('C:\MATLAB6p5\work\3.bmp'); cuatro=imread('C:\MATLAB6p5\work\4.bmp');

cinco=imread('C:\MATLAB6p5\work\5.bmp'); seis=imread('C:\MATLAB6p5\work\6.bmp');

siete=imread('C:\MATLAB6p5\work\7.bmp'); ocho=imread('C:\MATLAB6p5\work\8.bmp');

nueve=imread('C:\MATLAB6p5\work\9.bmp'); cero=imread('C:\MATLAB6p5\work\0.bmp');

alfabeto=[[a] [b] [c] [d] [e] [f] [g] [h] [i] [j] [k] [l] [m] [n] [o] [p] [q] [r] [s] [t]

[u] [v] [w] [x] [y] [z]];

numeral=[[uno] [dos] [tres] [cuatro] [cinco] [seis] [siete] [ocho] [nueve] [cero]];

Figura 3.12. Matriz alfabeto.

Figura 3.13 Matriz numeral.

Procedemos a realizar una conversión de matrices a un arreglo de celdas de las variables

numeral, alfabeto y matricula, para poder trabajar con elementos separados y definidos por

una posición para poder realizar operaciones individuales sobre cada uno de los elementos.

El siguiente es el código utilizado:

matricula=[[L1b] [L2b] [L3b] [L4b] [L5b] [L6b]];

ab=mat2cell(alfabeto,[42],[24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24

24 24 24 24]);

numero=mat2cell(numeral,[42],[24 24 24 24 24 24 24 24 24 24]);

plac=mat2cell(matricula,[42],[24 24 24 24 24 24]);

Page 49: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

43

Por ultimo, debemos encontrar un método adecuado para realizar el reconocimiento del

carácter hallado en la placa con uno presenta en la base de datos. En este caso se utilizo la

técnica de correlación. Matlab permite calcular el coeficiente de correlación entre dos

matrices bidimensionales, dando como resultado un valor que representa la igualdad entre

dos matrices. corr2 realiza el coeficiente de correlación usando la expresión:

donde A = mean2(A), and B = mean2(B)

Se desarrolló un ciclo, el cual toma los valores de la correlación del carácter que está siendo

analizado y lo introduce en una matriz de 3 filas por 26 o 10 columnas, según sean letras o

números respectivamente. Posteriormente se hallan los máximos de las tres columnas y son

almacenados en otra matriz. Finalmente se encuentran las posiciones en las que estaban los

máximos para así determinar la letra o el número al que corresponden y mediante otro ciclo

se muestra esto en pantalla. El código implementado fue el siguiente:

%Ciclo que reconoce las letras y les asigna la posicion en la matriz de abecedario

fila=1;

ind=1;

while fila < 4

posp=1;

for posp=1:3

plc=plac{1,posp};

pos=1;

Page 50: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

44

temp=0;

while pos<27

temp=ab{1,pos};

co=corr2(temp,plc);

letra(fila,pos)=co;

pos=pos+1;

end

fila=fila+1;

posp=posp+1;

end

end

for ind = 1:3

maxs=max(letra,[],2);

[posx posy]=find(letra==maxs(ind,1));

letras(ind)=posy

ind=ind+1;

end

%Ciclo que reconoce los numeros y les asigna la posicion en la matriz de

%numeros

fila=1;

ind=1;

while fila < 4

posp=4;

Page 51: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

45

for posp=4:6

plc=plac{1,posp};

pos=1;

temp=0;

while pos<11

temp=numero{1,pos};

co=corr2(temp,plc);

num(fila,pos)=co;

pos=pos+1;

end

fila=fila+1;

posp=posp+1;

end

end

for ind = 1:3

maxs=max(num,[],2);

[posx posy]=find(num==maxs(ind,1));

nums(ind)=posy

ind=ind+1;

end

close all

mal='a';

ltr=1;

Page 52: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

46

lt=1;

while ltr < 4

while lt < 4

if letras(ltr)== 1

mal(lt)='A'

elseif letras(ltr) == 2

mal(lt)='B'

elseif letras(ltr) == 3

mal(lt)='C'

elseif letras(ltr) == 4

mal(lt)='D'

elseif letras(ltr) == 5

mal(lt)='E'

elseif letras(ltr) == 6

mal(lt)='F'

elseif letras(ltr) == 7

mal(lt)='G'

elseif letras(ltr) == 8

mal(lt)='H'

elseif letras(ltr) == 9

mal(lt)='I'

elseif letras(ltr) == 10

mal(lt)='J'

Page 53: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

47

elseif letras(ltr) == 11

mal(lt)='K'

elseif letras(ltr) == 12

mal(lt)='L'

elseif letras(ltr) == 13

mal(lt)='M'

elseif letras(ltr) == 14

mal(lt)='N'

elseif letras(ltr) == 15

mal(lt)='O'

elseif letras(ltr) == 16

mal(lt)='P'

elseif letras(ltr) == 17

mal(lt)='Q'

elseif letras(ltr) == 18

mal(lt)='R'

elseif letras(ltr) == 19

mal(lt)='S'

elseif letras(ltr) == 20

mal(lt)='T'

elseif letras(ltr) == 21

mal(lt)='U'

elseif letras(ltr) == 22

Page 54: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

48

mal(lt)='V'

elseif letras(ltr) == 23

mal(lt)='W'

elseif letras(ltr) == 24

mal(lt)='X'

elseif letras(ltr) == 25

mal(lt)='Y'

elseif letras(ltr) == 26

mal(lt)='Z'

else

mal(lt)='Paila'

end

lt=lt+1;

ltr=ltr+1;

end

end

nmr=1;

man='1';

nm=1;

while nmr < 4

while nm < 4

if nums(nmr)== 1

Page 55: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

49

man(nm)='1'

elseif nums(nmr) == 2

man(nm)='2'

elseif nums(nmr) == 3

man(nm)='3'

elseif nums(nmr) == 4

man(nm)='4'

elseif nums(nmr) == 5

man(nm)='5'

elseif nums(nmr) == 6

man(nm)='6'

elseif nums(nmr) == 7

man(nm)='7'

elseif nums(nmr) == 8

man(nm)='8'

elseif nums(nmr) == 9

man(nm)='9'

elseif nums(nmr) == 10

man(nm)='0'

else

disp('Paila')

end

nm=nm+1;

Page 56: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

50

nmr=nmr+1;

end

end

plate=horzcat(mal,man);

disp(plate)

Page 57: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

51

CONCLUSIONES

• La utilización de los elementos estructurantes, definidos en Matlab, es una

herramienta poderosa para simplificar los procedimientos a realizar cuando

trabajamos con imágenes y debemos eliminar estructuras y objetos irrelevantes al

objetivo propuesto.

• No es aconsejable utilizar elementos estructurantes y propiedades morfológicas si el

objetivo es implementar el código en otro compilador y programa diferente al de

Matlab, pero por facilidad y economía de tiempo se podrían utilizar para tener un

conocimiento inicial de los pasos que se deben realizar para cumplir el objetivo

propuesto a la imagen.

Al utilizar métodos tradicionales de filtrado, erosionado y dilatado de imágenes, aseguramos la portabilidad del código hacia otros programas y dispositivos, como DSP´s, aunque su implementación es mas larga, dificultosa y de mayor cuidado.

Page 58: SEMINARIO DE TITULACIÓN “PROCESAMIENTO DIGITAL DE …...“procesamiento digital de seÑales” diseÑo de sistema de reconocimiento de placas utilizando matlab . t e s i n a

Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB ESIME CULHUACAN Capítulo 1 Diseño del sistema de reconocimiento de placas en MATLAB

52

BIBLIOGRAFIA

1) Digital filters and signal processing with MATLAB, exercises /Leland B. Jackson. Boston: Kluwer Academic Publishers, c1996. 2) Introducción a los filtros digitales /Jesus Barrios Romano. México: Universidad Autónoma Metropolitana, Unidad Iztapalapa , 1992.

3) Digital Image Processing, Third Edition/William K. Pratt Los Altos, California, 2001.