Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SEMINARIO DE TITULACIÓN
“PROCESAMIENTO DIGITAL DE SEÑALES”
TESINA
INGENIERO EN
COMUNICACIONES Y ELECTRÓNICA.
Presentan:
ASESORES:
TESINA
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
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
Conclusiones 51
Bibliografía 52
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
Justificación
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.
CAPITULO 1
Tipos de imágenes
Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB
ESIME CULHUACAN Capitulo 1 Tipos de imágenes
1.1 INTRODUCCION
1.2 Biometría
2
Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB
ESIME CULHUACAN Capitulo 1 Tipos de imágenes
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.
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.
3
Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB
ESIME CULHUACAN Capitulo 1 Tipos de imágenes
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.
4
Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB
ESIME CULHUACAN Capitulo 1 Tipos de imágenes
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.
5
Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB
ESIME CULHUACAN Capitulo 1 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.
6
Instituto Politécnico Nacional Diseño de sistema de reconocimiento de placas utilizando MATLAB
ESIME CULHUACAN Capitulo 1 Tipos de imágenes
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
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.
7
CAPITULO 2
Procesamiento digital de
imágenes y sistemas de
reconocimiento de placas
existentes
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
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.
8
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
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.
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.
9
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
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
10
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
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.
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.
11
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
Figura 2.3. Procesamiento digital de imágenes. Cefalograma en el que se han reforzado las
Angle Ortodontist, 48, núm. 1, 80, 1978). (a) Imagen original y (b) imagen procesada.
• Operaciones de punto
• Operaciones de entorno
• Operaciones con dos o más imágenes
12
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
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.
2.8 Filtros
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.
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:
13
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
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.
Al igual que otras aplicaciones, con el mismo equipo puede conjuntarse esta funcionalidad
y generar un dispositivo mucho más complejo.
14
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
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.
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
15
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
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
16
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
Hay ciertos algoritmos principales que el software necesita para identificar una
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:
17
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
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
18
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
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
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.
19
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
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.
• 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.
20
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
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.
21
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
Velocidad Promedio
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.
22
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
CARMEN ANPR
23
CAPITULO 3
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.
I=imread('C:\foto104.jpg');
info=imfinfo('C:\foto104.jpg');
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.
24
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
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:
% 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
% fue claro.
25
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
numOscuros=0;
numClaros=0;
oscuros=0;
claros=0;
cont=0;
acum=0;
if imagen(1,1)<(max(max(imagen))/2)
ultimoColor=1;
else
ultimoColor=0;
end
for i=1:filasImagen
if ultimoColor==0
26
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
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;
27
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
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
mediaClaros=claros/numClaros;
mediaOscuros=oscuros/numOscuros;
umbral=(mediaOscuros*numClaros+mediaClaros*numOscuros)/(numClaros+numOscuros);
28
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
kernel=(1/8)*[-1 0 1; -2 0 2; -1 0 1];
% Calculo del umbral para clasificar la respuesta del Sobel, este es tal que
moduloGradiente=abs(gradiente(:));
maximoModuloGradiente=round(max(moduloGradiente));
minimoModuloGradiente=round(min(moduloGradiente));
nivelesGradiente=maximoModuloGradiente-minimoModuloGradiente;
histogramaGradiente=hist(moduloGradiente, nivelesGradiente);
histogramaGradienteAcumulado=cumsum(histogramaGradiente);
umbralSobel=nivelesGradiente;
umbralSobel=umbralSobel-1;
end
umbralSobel=minimoModuloGradiente+umbralSobel;
29
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
gradienteSobel=[];
for i=1:filasImagen
for j=1:columnasImagen
gradienteSobel(i,j)=1;
else
gradienteSobel(i,j)=-1;
else
gradienteSobel(i,j)=0;
end
end
end
end
30
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
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
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
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
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
34
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
X2=E2.*[[1] [0] [0] [0]]; X2=max(X2); %Determina eje X esquina superior Izq. Placa
35
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
Y2=E2.*[[0] [1] [0] [0]]; Y2=max(Y2); %Determina eje Y esquina superior Der. Placa
Wx=round(W2*0.94); Hx=round(H2*0.756);
Cortex=[4 12 Wx Hx];
C2=imcrop(C2,Cortex);
C3=imbothat(C2,st);
figure; imshow(C3)
umbral2=90;
C5=C3>umbral2;
figure; imshow(C5)
L=bwlabel(C5);
stats=regionprops(L,'all');
figure; imshow(placa)
36
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
FIGURA 3.8. Recorte de la placa para FIGURA 3.9. Filtro para ayudar a depurar
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');
37
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
L1b=imresize(L1,[42 24]);
L1b=L1b>150;
L2b=imresize(L2,[42 24]);
L2b=L2b>150;
38
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
L3b=imresize(L3,[42 24]);
L3b=L3b>150;
L4b=imresize(L4,[42 24]);
L4b=L4b>150;
39
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
L5b=imresize(L5,[42 24]);
L5b=L5b>150;
L6b=imresize(L6,[42 24]);
L6b=L6b>150;
40
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
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');
41
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
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]];
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]);
42
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
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:
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;
posp=1;
for posp=1:3
plc=plac{1,posp};
pos=1;
43
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
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
maxs=max(letra,[],2);
[posx posy]=find(letra==maxs(ind,1));
letras(ind)=posy
ind=ind+1;
end
%numeros
fila=1;
ind=1;
posp=4;
44
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
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
maxs=max(num,[],2);
[posx posy]=find(num==maxs(ind,1));
nums(ind)=posy
ind=ind+1;
end
close all
mal='a';
ltr=1;
45
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
lt=1;
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'
46
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
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
47
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
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 nm < 4
if nums(nmr)== 1
48
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
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;
49
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
nmr=nmr+1;
end
end
plate=horzcat(mal,man);
disp(plate)
50
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
CONCLUSIONES
51
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
BIBLIOGRAFIA
1) Digital filters and signal processing with MATLAB, exercises /Leland B. Jackson.
Boston: Kluwer Academic Publishers, c1996.
52