28
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FES ACATLÁN MAC SISTEMAS NTELIGENTES “RECONOCEDOR DE PLACAS INTEGRANTES: Prof. Ulises Abraham Chavez Ramírez

Proyecto SI

Embed Size (px)

Citation preview

Page 1: Proyecto SI

UNIVERSIDAD NACIONAL AUTÓNOMA

DE MÉXICO

FES ACATLÁN

MAC

SISTEMAS NTELIGENTES

“RECONOCEDOR DE PLACAS”

INTEGRANTES:

Prof. Ulises Abraham Chavez Ramírez

Fecha: Lunes 4 de Junio de 2012

Page 2: Proyecto SI

RESUMEN / ABSTRACT

En este proyecto desarrollamos la manera en cómo reconocer los caracteres numéricos de

una placa vehicular, el algoritmo utilizado ha sido diseñado tanto en el campo de

procesamiento digital de imágenes como en el de redes neuronales artificiales.

Dentro del desarrollo del trabajo se realiza una breve descripción del modelo de red

neuronal tipo Hopfield, estableciendo los fundamentos teóricos necesarios para la

construcción y entrenamiento de dicha red. Además, se establecen los parámetros para el

diseño de la arquitectura de este tipo de red que nos permite una solución satisfactoria

para la problemática de clasificar los caracteres.

Lo que logramos como producto final, fue un programa que reconoce el área

perteneciente a la placa para, después, extraer cada uno de los caracteres de la placa que

son manipulados como objetos y posteriormente clasificarlos por medio de redes

neuronales.

Page 3: Proyecto SI

Al final del trabajo, se encuentra un análisis de los resultados obtenidos junto con algunas

de las complicaciones que se presentaron en el desarrollo del mismo, además, dejamos

mencionado que para reconocer el resto de los caracteres se sigue un procedimiento muy

similar.

Page 4: Proyecto SI

INTRODUCCIÓN

Actualmente, la situación del país es muy lamentable en todos los aspectos, pero con lo que

respecta al robo de autos, que ha incrementado, se han dispuesto diversas propuestas de solución

inmediata.

En este proyecto se desarrollará una técnica para el reconocimiento de placas, el cual se usa

principalmente para detectar a aquellos conductores que viajan a alta velocidad por la ciudad y

que en la mayoría de los casos no son multados. Con esta implementación se busca identificar a

esos conductores y aplicarles la sanción requerida, así mismo, tendrá la utilidad de detectar ciertos

autos que han sido robados y no localizados.

Hemos desarrollado un avance de los objetivos completos del proyecto. Trabajamos identificando,

únicamente, los caracteres numéricos. Sin embargo para detectar el resto de los caracteres se

seguiría un proceso similar.

Para el desarrollo del proyecto, que es el reconocimiento de los caracteres numéricos, utilizamos

la red neuronal de Hopfield discreto.

La red neuronal de Hopfield es conocida como un modelo de memoria auto asociativa de

patrones, ya que es capaz de aprender a reconstruir los patrones de entrada que memorizan

durante su entrenamiento a partir de información incompleta sobre los patrones.

La arquitectura de la red neuronal de Hopfield consiste en una única capa formada por n

elementos de procesamiento interconectados que cambian sus valores de activación

independientemente, cada una conectada a todas las demás, por lo tanto todos los elementos son

a su vez, entradas y salidas. Las neuronas de la red de Hpfield poseen dos estados, generalmente

{-1, 1} o {0, 1} (según convenga), que vienen determinados por el nivel de activación que recibe la

neurona. Además los pesos asociados a pares de neuronas son simétricos, es decir, existe la

igualdad W ij=W ji.

Page 5: Proyecto SI
Page 6: Proyecto SI

METODOLOGÍA

PROCESAMIENTO DIGITAL DE IMÁGENES CON MATLAB

El procesamiento digital d imágenes se refiere a la manipulación de imágenes del mundo real de

forma digital haciendo uso de las computadoras. El principal objetivo es el mejorar el aspecto de

las imágenes y hacer más visibles en ellas ciertas características relevantes para la aplicación que

se desee desarrollar en su momento. La visión artificial se define como el conjunto de procesos

para la adquisición, caracterización e interpretación de imágenes. Éstos procesos pueden ser

subdivididos en cinco áreas:

1. Captura. Es el proceso a través del cual se obtiene una imagen digital utilizando un

dispositivo de captura, ya sea una cámara digital, video cámara, escáner, etc.

2. Pre procesamiento. Incluye técnicas que permiten mejorar la calidad de la imagen

tales como la reducción del ruido, realce del contraste, realce de ciertos detalles, o

características de la imagen.

3. Segmentación. Es el proceso mediante el cual se divide la imagen en regiones

importantes para los intereses de la aplicación.

4. Descripción. Es el proceso que obtiene características de los objetos dentro de una

imagen, las cuales permitirán diferenciar, un tipo de objeto del otro, como la forma, el

tamaño, el área, etc.

5. Reconocimiento e interpretación. Es la etapa en la que se identifica y se asocia un

significado a os diferentes objetos previamente segmentados en la imagen.

El toolbox de procesamiento de imágenes que proporciona MATLAB son un conjunto de funciones

que amplían las capacidades del software para el desarrollo de aplicaciones y de nuevos

algoritmos en el campo del procesamiento y análisis de imágenes. Entre las operaciones más

importantes que MATLAB soporta están:

Transformaciones espaciales de imágenes

Diseño de filtros y recuperación de imágenes

Page 7: Proyecto SI

Mejora de imágenes

Operaciones morfológicas

Definición de mapas de colores y modificación gráfica

El toolbox de procesamiento de imágenes de MATLAB maneja cuatro tipos de imágenes básicos:

1. Imágenes indexadas

2. Imágenes con intensidad (niveles de grises)

3. Imágenes binarias

4. Imágenes RGB

Además soporta los siguientes formatos de imagen: JPEG, TIFF, GIF, BMP, PNG, HDF, PCX, XWD,

ICO y CUR.

MATLAB almacena la mayoría de las imágenes como arreglos bidimensionales (matrices) en los

cuales cada elemento de la matriz corresponde a la intensidad de un pixel en l a imagen.

A continuación se hará una descripción de las operaciones utilizadas para el procesamiento de las

imágenes en MATLAB.

OPERACIONES MORFOLÓGICAS

La morfología matemática es una técnica de procesado no lineal de imágenes, interesada en la

geometría de los objetos. Las operaciones morfológicas son operaciones sobre imágenes basadas

en formas o estructuras. Estas operaciones toman como entrada una imagen regresando como

resultado una imagen del mismo tipo pero modificada, el valor de cada pixel de la imagen

resultado es basado en el valor del correspondiente pixel de la imagen original y sus vecinos. Entre

sus principales aplicaciones están la eliminación de ruido y segmentación de objetos.

Existen tres tipos de morfología: morfología binaria, morfología de niveles de gris y morfología de

imágenes policromáticas.

Page 8: Proyecto SI

ELEMENTOS DE PROCESAMIENTO MORFOLÓGICO

Los fundamentos del análisis y procesado morfológico se basan en el álgebra de conjuntos. Existen

tres elementos en el proceso:

1. Conjuntos (imágenes). En una imagen binaria los conjuntos están formados por

puntos en un espacio 2D, donde cada elemento es un punto de coordenadas (x,y) con

un valor de cero (que es el fondo) o uno (primer plano).

En una imagen de niveles de gris los elementos que forman los conjuntos se

encuentran en un espacio 3D, donde los dos primeros componentes de cada

elementos de refieren a las coordenadas de cada pixel y el tercer componente está

relacionado con la intensidad del mismo.

2. Elemento estructural. El elemento estructural es un conjunto de puntos que forman

una pequeña imagen que determinará la estructura de la imagen sobre la que se

aplicará la operación morfológica. Éste será el responsable de la forma y el tamaño de

los objetos que comprenden la imagen. El elemento estructural puede tener cualquier

tamaño y forma (horizontal, vertical, cuadrado, circular, etc.). En MATLAB se lo

implementa a través de la función strel el cual crea un elemento de estructura

morfológica.

3. Operaciones morfológicas

a. Dilatación. Expande los pixeles de los objetos presentes en la imagen sobre la

que se aplica. En MATLAB se lo implementa mediante la función imdilate.

b. Erosión. Es la operación inversa a la dilatación, produce un efecto de

encogimiento, reducción o contracción de los objetos de la imagen. Su

implementación en MATLAB se realiza mediante la función imerode.

c. Apertura (opening). Realiza una erosión seguida de una dilatación, utilizando

el mismo elemento estructural en ambas operaciones. Este método se aplica

cuando se desea eliminar los pequeños objetos y mantener el tamaño de los

Page 9: Proyecto SI

grandes (eliminar ruido). En MATLAB se implementa mediante la función

imopen.

d. Cierre (closing). Dilatación seguida de una erosión. Este proceso se caracteriza

por rellenar huecos y conectar objetos que están próximos entre sí. Su

implementación en MATLAB se realiza mediante la función imclose.

FILTROS MORFOLÓGICOS

Los filtros morfológicos se realizan sobre una imagen en escala de grises o binaria usando un

elemento estructural y resaltan objetos de color contrario al fondo. Existen dos tipos de filtros:

1. Positivo (White top-hat). Esta operación es útil para resaltar detalles en la presencia

de sombras.

2. Negativo (Black top-hat o bottom-hat). Su aplicación es fundamentalmente para

resaltar detalles oscuros sobre un fondo local blanco.

FILTRADO ESPACIAL

El filtrado espacial es una técnica para modificar o mejorar a una imagen, resaltado o atenuando

características de la misma. El filtrado es una operación de vecindario, en la cual el valor de un

pixel dado en le imagen procesada se calcula mediante algún algoritmo que toma en cuenta los

valores de los pixeles de la vecindad de la imagen original. De esta forma es necesario configurar

una matriz que considere cuales vecinos y en qué forma influirán en la determinación del nuevo

pixel. Existen dos clases: filtros de paso bajo y filtros de paso alto.

1. Filtros espaciales de paso bajo (Suavizantes). Se emplean para hacer que la imagen

aparezca algo borrosa y también para reducir el ruido. Hay dos subtipos:

a. Filtro de promedio. Se basa en el promediado de los pixeles adyacentes al

pixel que se evalúa tomando en cuenta máscaras de vecindad cuadráticas. Su

implementación en MATLAB se realiza mediante funciones fspecial e imfilter.

b. Filtro de la mediana. Éste filtro se basa en sustituir en valor de un pixel por el

de la mediana del conjunto formado por el mismo y sus ocho vecinos, se suele

Page 10: Proyecto SI

utilizar en el procesamiento de imágenes para reducir el ruido. En MATLAB

este filtro se encuentra implementado en la función medfilt2.

2. Filtros espaciales de paso alto. Los filtros espaciales de paso alto se corresponden con

las altas frecuencias, suelen corresponder a los bordes de los objetos presentes en las

imágenes. Se pueden utiliza para el realce de bordes o para la detección de contornos.

a. Realce de bordes. Consiste en resaltar aquellos pixeles que tienen un valor de

gris diferente al de sus vecinos. Si la imagen contiene ruido, su efecto se

multiplicará, por lo que primero se debe eliminar el ruido. Su implementación

en MATLAB se consigue con el uso de la función filter2.

b. Detección de contornos. Es un paso intermedio en el reconocimiento de

patrones en imágenes digitales. En una imagen, los contornos corresponden a

los límites de los objetos presentes en la imagen. Para hallar los contornos se

buscan los lugares en la imagen en los que la intensidad del pixel cambia

rápidamente. Su implementación en MATLAB se realiza usando la función

edge y se aplica a imágenes de niveles de gris. Se pueden usar varios métodos

están: Sobel, Prewitt, Robert o Canny.

SEGMENTACIÓN

La segmentación es uno de los procesos más importantes y complejos en el reconocimiento de

placas.; si la segmentación falla, un carácter puede ser inapropiadamente dividido en dos piezas, o

dos caracteres pueden ser unidos por error. La segmentación consiste en dividir la imagen digital

en regiones homogéneas o similares con respecto a una o más características (brillo, color,

tamaño, longitud, área, forma, etc.) con el fin de facilitar su posterior análisis y reconocimiento.

No existe un método universal de segmentación. Su proceso está ligado al tipo de área que se

desea resolver y termina cuando satisface los objetivos del observador, es decir, cuando se hayan

detectado todos los objetos de interés para una aplicación específica. Existen dos tipos de

segmentación:

1. Segmentación basada en el cálculo del umbral. Es un proceso que permite

convertir una imagen de niveles de gris o color en una imagen binaria, de tal forma

que los objetos de interés se etiqueten con un valor distinto de los pixeles del

Page 11: Proyecto SI

fondo. Es una técnica rápida y su costo computacional es bajo. El método de

mayor confiabilidad es el método de Otsu el cual permite encontrar el umbral

óptimo para la segmentación de la imagen a segmentar. MATLAB posee la función

graythresh, que calcula el umbral de la imagen global utilizando el método de

Otsu.

2. Segmentación basada en regiones. Es utilizada para separar los objetos de interés.

En este caso, la imagen es particionada en diferentes regiones, quedándose cada

una relacionada en ciertas características y conjuntos de pixeles conectados. Así, a

partir de la segmentación de la imagen en regiones, pueden ser realizadas las

medidas sobre cada región y las relaciones entre las regiones adyacentes pueden

ser establecidas. La segmentación por regiones está implementada en MATLAB a

través de los siguientes comandos:

Bwlabel. Etiqueta los componentes conectados en una imagen binaria.

Regionprops. Mide las propiedades de las regiones etiquetadas

previamente en un imagen. Permite tener valores de propiedades como:

área, caja que cubre la región, centroide, excentricidad, etc.

REDES NEURONALES ARTIFICIALES (RNA)

Una red neuronal artificial es u procesador masivo paralelo formado por unidades simples de

procesamiento que tienen una propensión natural para almacenar conocimiento experimental,

haciéndolo viable para sus uso. La red neuronal se asemeja al cerebro en dos aspectos:

1. El conocimiento adquirido por la red desde su entorno a través de un proceso de

aprendizaje.

2. Las fuerzas de las conexiones entre neuronas, conocidas como pesos sinápticos, son

usadas para almacenar el conocimiento.

Las redes neuronales artificiales (RNA) son un conjunto de unidades de procesamiento

elementales como una arquitectura definida que tratan de asemejar el funcionamiento de las

redes neuronales biológicas, como se puede apreciar en la siguiente imagen:

Page 12: Proyecto SI

Su unidad de procesamiento es la neurona artificial, la cual está constituida por varios elementos

como son:

Conjunto de elementos de entrada. Señales de entrada pueden ser discretas o

continuas.

Pesos sinápticos. Representan la intensidad de interacción en una sinapsis. Estos pesos

pueden ser variables o fijos.

Regla de propagación. Permite obtener a partir de las entradas y los pesos sinápticos

el valor del potencial post-sináptico.

Función de activación. Llamada también función de transferencia, proporciona el

estado actual de activación en función de su estado anterior y el valor post-sináptico

para posteriormente entregar la salida global de la neurona. Las funciones de

activación pueden ser de distintas formas.

Page 13: Proyecto SI

RED NEURONAL UTILIZADA

RED NEURONAL DE HOPFIELD

El modelo Hopfield consiste en una red monocapa estableciendo conexiones laterales (cada

neurona se encuentra conectada a las demás) pero no existen conexiones auto recurrentes, entre

las N neuronas y los valores de salida son binarios 0/1 ó -1/+1, existen 2 tipos de este modelo:

1. Hopfield discreto: Contaba con entradas y salidas binarias y las funciones de activación de

las neuronas eran de tipo escalón.

2. Hopfield continuo: En este modelo las entradas y salidas son analógicas, con funciones de

activación tipo sigmoidal.

El modelo que utilizamos en el proyecto es discreto, pues nuestras salidas y entradas son binarias,

por tanto la función de activación será de tipo escalón como se muestra en la siguiente imagen:

Función de activación tipo escalón

Page 14: Proyecto SI

En el modelo discreto de Hopfield se adopta un valor proporcional a la suma de los pesos de las

conexiones de cada neurona con el resto.

θi=k∑j=1

n

wij

Como se trabaja con los valores de salida binarios -1, +1. Suele considerarse el valor nulo para θi.

Hopfield es una red auto asociativa, así los patrones diferentes pueden ser almacenadas en la red,

durante la etapa del aprendizaje. Así cuando a la red se le presentan a la entrada alguna de las

informaciones ya almacenadas la red evoluciona hasta estabilizarse, ofreciendo en la salida la

información almacenada. Si por otro lado a la entrada se le presenta no coincide con ninguna de

las almacenadas por estar distorsionada o incompleta la red evoluciona generando como salida la

más parecida.

La información que recibe este modelo fue previamente codificada y representada en forma de

vector (como una configuración binaria para nuestra red discreta), cada neurona recibe una parte

de la información un elemento del vector que representa dicha información, la suma de todos

estos valores constituirá el valor de entrada neta de la neurona.

Este proceso continua hasta que las salidas de las neuronas se estabilizan, lo cual ocurrirá cuando

el valor deje de cambiar.

Este funcionamiento puede expresarse matemáticamente de la siguiente forma:

1. En el instante inicial (t=0) se aplica la información de entrada

S(t=0)=e 1<=i<=N

2.- La red realiza iteraciones hasta alcanzar la convergencia (hasta que s(t+1) sea igual a s(t)).

si (t+1 )=f ¿

Page 15: Proyecto SI

Esta es la función de activación de las neuronas en la red, que en el caso de nuestro modelo

discreto, si se trabaja con valores binarios -1 y +1, la salida se obtendría según la función

escalón.

El funcionamiento corresponde a una red Hopfield discreta clásica ya que se trabaja con

informaciones binarias, se pueden distinguir diferentes versiones del modelo en función de la

forma temporal en que se lleva a cabo la degeneración o actualización de las salidas de las

neuronas de la red.

APRENDIZAJE

La red de Hopfield tiene un mecanismo de aprendizaje OFF LINE. Por tanto, existe una etapa

de aprendizaje y otra de funcionamiento de la red.

Esta red utiliza un aprendizaje no supervisado de tipo hebbiano, de tal forma que el peso de

una conexión entre una neurona i y otra j se obtiene mediante el producto de los

componentes i-esimo y j-esimo del vector que representa la información o patrón que debe

almacenar.

El algoritmo de aprendizaje también puede ser expresado utilizando uan notación matricial.

Considerando tal caso se podría tener en cuenta una matriz W de dimensiones NxN que

represente los pesos de la red.

Page 16: Proyecto SI

Dicha matriz es simétrica y de y valores nulos en la diagonal principal debido a la no existencia

de valores auto recurrentes.

Un ejemplo de cómo se obtienen los pesos podría consistir en el entrenamiento de una red

para que aprenda patrones correspondientes a sendas figuras mediante un cierto número de

pixeles.

Los pixeles negros podrían representarse mediante el valor binario +1 y los blancos con el

valor de -1. En este caso las informaciones serian dos vectores M=2 de cuatro elementos N=4

que contienen los valores de los pixeles. La red por tanto tendría 4 neuronas para que cada

neurona tuviera un pixel.

Los valores de los vectores que forman la figura A y B respectivamente son:

Page 17: Proyecto SI

El aprendizaje de estas dos informaciones consistirá en la obtención de los pesos de la red

Una vez finalizada la fase del aprendizaje la red podría ser utilizada como memoria asociativa

de acceso por contenido de tal forma que al pasarle una información más parecida de la

almacenada durante el aprendizaje.

Page 18: Proyecto SI

DESARROLLO DE LA RED NEURONAL DE HOPFIELD

Comando para ejecutar el programa:

>>placas

Ejecuta la red neuronal “Hopfield”, el proceso de aprendizaje, carga el “archivo elementos. txt” el

cual contiene los vectores matriciales en forma de columna que representan los número del 0

hasta el 9.

%Red Neuronal HopField load elementos.txt % archivo donde almacenamos numeros del 0-9 en forma de vector columnaE=elementos;[fil,col]=size(E);W=zeros(fil,fil);for i=1:col v=E(:,i); V=v*v'; W=W+V;endh=0;load pruebaU.txt % archivo que contiene el numero a comparar, en forma de vector columnaP=pruebaU;P=P';fin=0;while(fin==0) R=P*W; [R]=binarizacion(R);%Cambia los elementos 0 a -1 y 1 a 1 [fin]=estabiliza(P,R);% P=R;endif(fin==1) N=anticolumna(R); N=antivectorero(N); imshow(N);end

Page 19: Proyecto SI

Nota al ingresar el numero para realizar el aprendizaje (archivo prueban.txt) el resultado que nos

arroja es una imagen en la cual reconstruye el número que más se parece, pero más sin en cambio

hemos tenido un problema pues independientemente del número (0-9)que ingresemos siempre

nos arroja el mismo resultado una imagen de la cual no se distingue bien que numero representa.

Uno Dos Nueve Cinco

Y dado que no logramos que el programa regresara el número que ingresábamos, no pudimos

continuar con el proceso de saber que combinación de números correspondía a cada placa de

automóvil.

Matriz que contiene los numero del 0-9 en forma de vector columna.

Pasos para generar el vector de “entrada” (archivo elementos.txt) de cada uno de los números (del

0 al 9)

Realzando de Imágenes, los siguientes pasos muestran las técnicas de procesado, para generar los

vectores.

1. En primer lugar tenemos que leer la imagen con la función imread siempre de tipo TIFF y

la guardamos en una variable, como lo muestra el siguiente ejemplo.

Page 20: Proyecto SI

Variable: I

Función: imread( ‘ Direccion y nombre la imagen ’ )

I=imread( ' C:/Users/PC/Documents/MATLAB/Segmentada/imagen.tif ' );

2. Se le aplica un cambio a escala de grises.

I = I( : , : , 2);

3. Se le hace un ajuste para que exista un mayor contraste.

I = imadjust(I);

4. Se binariza la imagen para que se pueda manipular mucho mejor

level = graythresh (I) devuelve la eficacia métrica, level, como el argumento de la segunda

salida. La eficacia métrica es un valor en el intervalo [0 1] que indica la eficacia del umbral

de la imagen de entrada. El límite inferior es alcanzable sólo por las imágenes que tienen

un nivel de gris único, y el límite superior es alcanzable sólo por dos valores de las

imágenes.

II = im2bw (I, level) convierte la imagen en escala de grises a una imagen binaria.

bwareaopen(II, 50) eliminará cualquier área superior a 8000 píxeles.

level = graythresh(I);

II = im2bw(I , level );

II = bwareaopen (II, 50);

5. Se hace una dilatación.

se=strel(forma, parámetros), crea un elemento estructurante de una forma determinada o

un arreglo de elementos estructurales.

II = imdilate(II,SE) y = Imerode(II,se) la imagen II puede ser binaria o en gris

se = strel( 'diamond' , 1)

II = Imdilate(II,se)

Page 21: Proyecto SI

II = Imerode(II,se)

6. Creamos un arreglo solo de unos con ones y la guardamos con imwrite().

size(ss)

m=ones(127,70);

imwrite(II , 'NombreDeLaImagen.tiff' )

Los siguientes dos pasos nos muestran como generar el vector con parámetros 1 y -1.

Cargamos la imagen ya procesada, con imread y la guardamos en una nueva variable

imaNumero= imread( ‘ Path en donde esta guarda la imagen ’ )

imaNum=read(C:/Users/PC/Documents/MATLAB/Segmentada/imagen.tif’)

Con la función ya programada llamada vectorero podremos transformar la matriz de unos y ceros

en unos y menos unos.

imaNum2 = vectorero( imaNum )

Binarizacion

function[R]=binarizacion(R)[fil,col]=size(R);for i=1:fil for j=1:col if(R(i,j)>0) R(i,j)=1; else if(R(i,j)<0) R(i,j)=-1; end end endendend

Page 22: Proyecto SI

Estabilizacion

function[fin]=estabiliza(P,R)if(P==R) fin=0;else fin=1;endend