martes, 10 de febrero de 2009

SISTEMA DE RECONOCIMIENTO EN TIEMPO REAL
Ahora se implemento el sistema de reconocimiento de placas colombianas en tiempo real, el cual reconoce el numero de una placa haciendo el reconocimiento desde una cámara conectada al computador, para esto se implemento el siguiente código en matlab.




Con la función VIDEOIMPUT localiza la cámara enviando las imágenes que esta captando, en un tamaño de 320 x 240 a color.
Posteriormente se tiene un FOR el cual se encarga de ejecutar el código de captura de la imagen en tiempo real 30 veces con el fin de tener un tiempo promedio en el cual el carro esta pasando y se hace el análisis y reconocimiento de su placa.
Para capturar la imagen se tiene la función GETSNAPSHOT, esta función toma una foto en tiempo real de lo que esta viendo la cámara y se envía a la función ensayo la cual se encarga de todo el procesamiento de reconocimiento, esta función fue descrita anteriormente cuando se trabajo con el banco de imágenes.

PROBLEMAS ENCONTRADOS

El mayor problema de este sistema de reconocimiento es el hardware, ya que se debe tener una cámara con alta resolución para que los frames que son tomados sean así mismo de alta calidad y el programa pueda extraer y segmentar la placa adecuadamente.
El mayor problema que se presenta es las distancias que deben haber entre la placa y la cámara, este sistema utiliza como método para la extracción de la placa la transformada de hough, en la cual se localiza la placa dependiendo de unas distancias ya predefinidas para empezar a ubicar el rectángulo y la posible placa, por esta razón nuestro sistema es tan dependiente de las distancias.
RESULTADOS OBTENIDOS
Los resultados obtenidos en esta etapa son básicamente los mismos que se obtuvieron al trabajar con videos, ya que cuando la cámara capta los frames en tiempo real se les hace el mismo tratamiento que cuando se trabajo con el banco de imágenes, por lo tanto los resultados y el reconocimiento tienen los mismos pasos.
Se empleo una cámara que tomara los frames desde una placa fijada a determinada distancia que simulara un carro detenido por un instante. Posteriormente se envía este frame para que sea procesado en la función ENSAYO siguiendo los mismos pasos que ya se explicaron en la etapa de banco de imágenes y video.













miércoles, 21 de enero de 2009

Resultados con video

Para el reconocimiento de placas colombianas en video se utilizo el siguiente código
close all;
clear all;
clc

%my_movie_info = aviinfo('carrote (11).avi')
videoObject = mmreader('carrote.wmv');
tic
for i=1:3;%my_movie_info.NumFrames;
mov= read( videoObject, [i] );
ENSAYO(mov);

end
toc

La función aviinfo e utilizo para extraer toda la información del video
Con esta información se puede saber el número de frames por segundo y el número de frames que nos servirá para determinar cuantos frames queremos enviar para que sean tratados por el código de reconocimiento.
En nuestro caso se necesitan enviar pocos frames ya que el video es del mismo carro por lo tanto el numero de la placa no va a cambiar y con solo analizar pocas secuencias de imágenes de video se sabrá el numero de la placa.
El programa es capaz de reconocer cualquier tipo de imagen pero bajo ciertas condiciones, las cuales deben tenerse encuentra también cuando se trabaja con video.
Las consideraciones que se deben tener son las siguientes
Máxima distancia del foco de la cámara al vehículo es de 2 mts.
Mínima distancia del foco de la cámara al vehículo es de 0.5 mts
La posición de la cámara con respecto al vehículo puede colocarse frente a este o a un lado. En el caso de ubicar la cámara a un costado, el ángulo entre la posición de la cámara con respecto al vehículo no debe ser mayor a 40º
Por lo tanto se trabajo con videos que no excedieran el metro de distancia y con una posición casi frontal al vehículo para evitar problemas de ángulos y distancias.
Los frames que se envían son tratados como imágenes y se sigue el mismo tratamiento con los mismos códigos que se utilizaron cuando se trabajo con el banco de imágenes

PROBLEMAS PRESENTADOS
Los problemas presentados al trabajar con video fueron:
Al extraer los frames de video al código de extracción de la placa se debe tener encuentra que cada frame debe tener un tamaño aproximado de 1280 x 1024 y en nuestro código cada frame es enviado de 640 x 480 por lo tanto se debe primer ampliar la imagen para que se aproxime al tamaño deseado para poder empezar a extraer el rectángulo que contiene la placa.
Cuando se toma un video en donde el vehículo empieza con una posición en donde el ángulo de la palca es muy grande excediendo el permitido, o cuando en el video en su reproducción pone el carro en una posición en donde el ángulo de la placa excede el permitido, el programa no reconocerá la placa en el frame y se detendrá la extracción de la placa y el reconocimiento
Para usar la función aviinfo se necesita que los videos estén en formato. avi, y para la función mmreader se necesita que los videos estén en formato wmv, garantizando esto se obtiene que el programa funcione correctamente.
RESULTADOS OBTENIDOS
Los resultados que se obtuvieron al usar el video fueron básicamente los mismos que al utilizar las imágenes, porque cuando el video se trata como una secuencia de imágenes, se procesa cada imagen como si fuera una sola, y en cada una se trata de reconocer la placa.
El video es tratado como una secuencia de frames y cada uno de estos es enviado al código que solo trataba con imágenes para el reconocimiento.
Se tomo un video corto saco cada frame del video para ser enviado al código antigo para el reconocimiento.
La secuencia de imágenes del video son las siguientes:


Los resultados obtenidos en el procesamiento de cada imagen sonPara encontrar la placa dentro de la imagen se utiliza el mismo código antes descrito, así mismo como todos los códigos descritos anteriormente



Obteniéndose el resultado final del numero de la placa y el tiempo de computo del procesamiento


a continuacion se muestra el video con el que se trabajo y dos vidos mas para el reconocimiento de la placa

martes, 20 de enero de 2009

DISEÑO DEL SISTEMA Y RESULTADOS

DISEÑO DEL SISTEMA Y RESULTADOS:

El programa de reconocimiento de placas de vehículos “ENSAYO”, se realizó en Matlab 7.1 y se utilizaron algunos algoritmos de procesamiento digital de imágenes incluidos en Matlab’s Image Processing Toolbox v 4.2.

%ENSAYO.m
close all
clear all
clc

%LECTURA DE IMAGEN

I= imread('car (29).jpg');
ImPlaca = DetePlacaHough(I);
if ImPlaca == 0
error('no se encontro la placa')
end

%SEGMENTACION

placa = ImPlaca;
angle = angulo(placa);%calculo del angulo de inclinacion
placares = restauracion2(placa, angle);
placabw = umbralizacion(placares);
%garantiza que el contenido de 6 caracteres
placa = filtrado2(placabw);
%funcion que separa los caracteres por componentes conec
caracterres = separaCarateres(placa);


%RECONOCIMIENTO

CaracPro = zonificacion(caracterres);%Zonificación, vector de caracteristicas
NumeroPlaca = reconocimiento(CaracPro)

IMAGEN DE ENTRADA:
Lectura de una imagen desde un banco de imágenes.
%LECTURA DE IMAGEN
I= imread('car (29).jpg');




LOCALIZACION DE LA PLACA DENTRO DE LA IMAGEN
Para localizar la placa del vehículo dentro de la imagen, primeramente se pasa la imagen original a escala de grises y se recorta tanto vertical como horizontalmente porque se supone que la placa se encuentra ubicada en el centro de la imagen.
%Funcion principal que encuentra las coordenadas de la placa; utilizando
%la transformada de Hough
function Irec = DetePlacaHough(I)
Ig=I(:,:,1); % para obtener una sola matrix de la imagen
%[alto ancho] = size(I)
%I = I(380:(alto-300), 380:(alto-200));
[alto ancho] = size(Ig); % se recorta la placa suponiendo que la placa se
%encuentra en el centro
VeCorte = ceil([ancho*0.20 alto*0.23 ancho*0.61 alto*0.55]);
I = imcrop(Ig, VeCorte);
Ir=imresize(I,0.6); %[280 280 alto-200 (alto-400)]
% se redimenciona la 60%



Para la detección de bordes se utilizó el método de canny y se identificaron las líneas verticales del contorno de la placa mediante un filtro.
%METODO DE EDGE CANNY
It= edge(Ir, 'canny',[0.1 0.5],0.6); %deteccion de bordes con Canny
%PARA LAS LINEAS VERTICALES APLICANDO UN FILTRO
h = [-1 1];
I = imfilter(It,h);
I = bwareaopen(I,20); % Se eliminan pequeños fragmentos
I = I(6:end-6,6:end-6);% para evitar posibles lineas en los limites de la imagen


iMAGEN 3





Mediante la transformada de se Hough se localizaron con precisión las coordenadas de las líneas que conforman el contorno de la placa y poder extraer en otra imagen solamente el área que se requiere.


numsearch = 0;
%contador de el numero de busquedas, cambiando de detector de bordes
done = false;
while ~ done
[h theta,rho]=houghmv(I,1,1);
[r,c] = houghpeaksm(h,4);
% h:transformada de hough, 4 val: numero de picos
linesv = houghlinesm(I, theta, rho, r,c , 20, 6);
% r , c son las coordendas
% de las filas, columnas de los picos identificadso
[lvp] = findlines(linesv);
%posicion de la estructura linesv donde se encuentran las lines verticales
%se ncuentra la longitud de la placa para calcular la relacion ancho
%alto, utilizando los puntos inicial y final de las lineas encontradas,
%donde lvp.lin contiene los pares de las posibles lineas verticales
c1 = ceil(linesv(lvp(1).lin(1)).point2(1));%
c2 = ceil(linesv(lvp(1).lin(1)).point1(1));
c3 = min(ceil(linesv(lvp(1).lin(1)).point1(2)),ceil(linesv(lvp(1).lin(1)).point2(2)));
c4 = max(ceil(linesv(lvp(1).lin(2)).point1(2)),ceil(linesv(lvp(1).lin(2)).point2(2)));
% si los puntos vienen invertidos se corrigen
if c1 > c2
ctem = c1;
c1 = c2;
c2 = ctem;
end
if c4 > c3
ctem = c3;
c3 = c4;
c4 = ctem;
end
% si cumple con la relacion ancho/alto finaliza la busqueda
if ((c3-c4)/(c2-c1) <= 1.2*(165/70)) & ((c3-c4)/(c2-c1) >= 0.75*(165/70));
done = true;
Irec = Ir(c1-30:c2+37,c4-5:c3+5);% se recorta la placa
%Irec = Ig(c1:c2,c4:c3);
numsearch == inf;
else
% si no cumple con la relacion se utiliza otra tecnica para la
%deteccón de bordes y se hace la busqueda nuevamente
if numsearch ==5
% si el numero de busquedas es 4 se finaliza con fracaso en la busqueda
error('placa no detectada')
numsearch == inf;
end

%++ DETECTORES DE BORDES ++
if numsearch == 4;
numsearch = numsearch + 1;
I = I(8:end-8,8:end-8);
I= edge(Ig, 'canny');
I = bwareaopen(I,20);
h = [-1 1];
I = imfilter(I,h);
I = bwareaopen(I,20);
I = I(8:end-8,8:end-8);
end

if numsearch == 3;
numsearch = numsearch + 1;
I = bordes(Ig);
I = bwareaopen(I,20);
h = [-1 1];
I = imfilter(I,h);
I = bwareaopen(I,20);
I = I(4:end-4,4:end-4);
end
if numsearch == 2;
numsearch = numsearch + 1;
I = edge(Ig, 'sobel',[],'vertical');% utilizando sobel
I = bwareaopen(I,20);
I = I(15:end-15,15:end-15);
end
if numsearch == 1;
numsearch = numsearch + 1;
%Ig=fliplr(Ig);
I = bordes(Ig);
I = bwareaopen(I,20);
I = I(10:end-10,10:end-10);
end
if numsearch == 0;
numsearch = numsearch + 1;
end
end
end
end







PREPROCESAMIENTO DE IMAGENES:

%Funcion que corrige la imagen de la placa de acuerdo al angulo de
%inclinacion, recibido en angulo
%Entrada: imagen de la placa, y el angulo de inclinación
%Salida: imagen de la placa corregida
function placa = restauracion2(placa , angulo)
[m n] = size(placa);
%n: ancho; m: alto angulo
switch angulo
case {2,88}
puntosbase = [1 1; n 1; 1 m; n m];
puntosentrada = [1 1; 1*n 0.0198*m; 0.0194*n 0.89*m; n m];

case {3,4,87,86}
puntosbase = [1 1; n 1; 1 m; n m];
puntosentrada = [1 1; 0.98*n 0.0598*m; 0.0394*n 0.83*m; n m];

case {5,85}
puntosbase = [1 1; n 1; 1 m; n m];
puntosentrada = [1 1; 0.99*n 0.07*m; 0.04*n 0.83*m; n m];

case {6,84}
puntosbase = [1 1; n 1; 1 m; n m];
puntosentrada = [1 1; 0.99*n 0.03*m; 0.02*n 0.9*m; n m];

case {7,83}
puntosbase = [10 1; n 1; 1 m; n m];
puntosentrada = [1 1;0.99*n 0.12*m; 0.025*n 0.8*m; n m];

case {8,9,80,82}
puntosbase = [1 1; n 1; 1 m; n m];
puntosentrada = [1 1; 0.99*n 0.13*m; 0.03*n 0.78*m; n m];

case {9,10,11,79,80,81}
puntosbase = [1 1; n 1; 1 m; n m];
puntosentrada = [1 1; 0.99*n 0.18*m; 0.03*n 0.71*m; n m];

case {12,13,14,15,16,75,76,77,78}
puntosbase = [1 1; n 1; 1 m-10; n m-10];
puntosentrada = [1 1; 0.99*n 0.20*m; 0.057*n 0.72*m; n m];

otherwise

return;
end
tform = cp2tform(puntosentrada, puntosbase, 'projective');placa = imtransform(placa, tform, 'xdata', [1 n], 'ydata', [1 m], 'size',size(placa), 'fill', 128);




IMAGEN 5





SEGMENTACION:
Programa que digitaliza la imagen y detecta seis objetos mediante la técnica de análisis de componentes conectados.

%funcion que encuentra y separa los caracateres utilizando etiquetado de
%componetes conectados
function caracNor = separaCarateres(placa)
placa = ~placa;
[bwEtiq caraEncon] = bwlabel(placa);
carac = cell(1,6);
carac(1) = {bwEtiq == 1};
carac(2) = {bwEtiq == 2};
carac(3) = {bwEtiq == 3};
carac(4) = {bwEtiq == 4};
carac(5) = {bwEtiq == 5};
carac(6) = {bwEtiq == 6};

for g = 1:6
[I,J] = find(carac{g} == 1);
carac{g} = carac{g}(min(I):max(I),min(J):max(J));
if g==6
[alto ancho] = size(carac{g});
if alto/ancho < sumhoriz =" sum(carac{g});" posbus =" ceil(alto/2);" vectbus =" sumHoriz(PosBus:end);" i="1:length(VectBus)-5"> 6
carac{g} = carac{g}(:,1:PosBus+i);
break
end
end
end
end

caracNor{g} = imresize(carac{g},[60,25],'bilinear');
caracNor{g} = ~bwareaopen(~caracNor{g},14);
end




IMAGEN 6





RECONOCIEMTO:
Este programa realiza el reconocimiento de cada objeto y lo representa como carácter en la ventana de comandos de Matlab.

function NumeroPlaca = reconocimiento(CaracPro)
for i = 1:6
carac = CaracPro{i};
try
ia=i;
load thetaexper
%contiene los datos de los vectores de caracteristicas de letras ya aprendidos
ThetaLetra=thetaexper;
load thetaexpernume
%contiene los datos de los vectores de caracteristicas de letras ya aprendidos
ThetaNume=thetaexpernume;
i=ia;
catch
end
LetNum = VecinoHo(carac,i,ThetaLetra,ThetaNume);
%calculo del vecino

if i > 3
if LetNum == 10
LetNum = 0;
end
end

if i < letn =" char(LetNum*90);" letn =" char(65+" letn =" char(49+" letn =" char(48">


EXPLICACION DE LA SOLUCION AL PROBLEMA

EXPLICACION DE LA SOLUCION:

Para efectuar un adecuado reconocimiento de placas de vehículos mediante el procesamiento digital de imágenes, se aplicarán las técnicas conocidas de adquisición de imágenes y los múltiples algoritmos del Matlab’s Image Processing Toolbox v 4.2 que Matlab incluye en su programa.

Para obtener una imagen adecuada, en la adquisición de imágenes se tendrán en cuenta características como: distancia de la captura de la imagen y posición de cámara con respecto al vehículo.

En cuanto al tratamiento de la imagen para el análisis de características e identificación y reconocimiento de la placa, se aprovecha la forma y medidas específicas que tienen las placas para hacer una localización detallada de ésta en la imagen fuente. Este proceso se ha dividido en las siguientes etapas:

IMAGEN DE ENTRADA:
Se cuenta con un banco de imágenes de 235 fotografías de vehículos colombianos de diferentes colores y tamaños donde se encuentra localizada la placa.
LOCALIZACION DE LA PLACA DENTRO DE LA IMAGEN
Se hace un acondicionamiento de la imagen original para generar una nueva imagen donde se encuentre ubicada de forma específica la placa del vehículo.
Este proceso se hace ajustando la nueva imagen a un porcentaje de ubicación de la placa dentro de la imagen (0.2, 0.8), se aumenta la intensidad mediante umbralización y se detectan bordes mediante la función de edge('canny'), utilizando el método de canny.
Se aplica un filtro para eliminar las líneas horizontales y poder ubicar las coordenadas del inicio y final de los bordes de la placa.
PREPROCESAMIENTO DE IMAGENES:
Para reducir los errores en el reconocimiento de la placa, se hace un tratamiento de la nueva imagen en escala de grises y se corrigen algunos detalles como el ángulo de la placa en la nueva imagen.
Se aplica un segundo filtro para eliminar el ruido existente en la imagen como manchas, tornillos y agujeros entre otros que limitan el proceso de segmentación.
SEGMENTACION:
En esta fase se digitaliza la imagen y se procede a la detección de objetos mediante la técnica de análisis de componentes conectados y su respectivo etiquetado utilizando conectividad de 8.
RECONOCIEMTO:
Una vez que se hayan segmentado los caracteres mediante un vector de características, se procede a realizar el reconocimiento. En esta fase se utilizará el algoritmo del vecino más cercano holográfico, y se procede a presentar el resultado en la ventana de comandos de Matlab.

lunes, 19 de enero de 2009

ESTADO DEL ARTE

ESTADO DEL ARTE

PROCESAMIENTO DIGITAL DE IMAGENES

Son muchas las aplicaciones que se vienen adelantando con el procesamiento digital de imágenes, en nuestro caso de estudio trataremos el reconocimiento de placas de vehículos colombianos, donde se utilizaran las funciones de adquisición y análisis de imágenes por computador.

Adquisición de Imágenes:
- Iluminación.
- Sensor + Optica.
- Digitalizador.

Análisis de las imágenes:
- Preprocesado.
- Segmentación.
- Reconocimiento.

Para la adquisición de imágenes se debe tener en cuenta la selección de una buena cámara o sensor, iluminar la escena adecuadamente y contar con una memoria o disco duro donde se puedan almacenar todas las imágenes digitalizadas para proceder al análisis de la imagen. [1]

En cuanto al análisis de imágenes las técnicas utilizadas son las siguientes:

Preprocesamiento:
Acondicionamiento de la imagen Representación gráfica de las frecuencias relativas con las que aparecen los distintos niveles de grises en una imagen determinada. El histograma proporciona información sobre el brillo y el contraste de la imagen, y puede ser utilizado para ajustar estos parámetros o poder eliminar ciertas tonalidades molestas o ruido en la imagen. [2]

Segmentación:
Para realizar una segmentación adecuada, se utilizan diferentes algoritmos que permiten la detección de bordes mediante operadores como: Operador de Roberts, Operador de Sobel, Operador de Prewitt, Operador laplaciano, Detector de bordes de Canny. [2]
De acuerdo a las características de la imagen y la aplicación de alguna de éstas técnicas, permite reducir el campo de acción dentro de la imagen y ubicar de manera más sencilla los objetos deseados, utilizando métodos como etiquetado de componentes conectados, picos y valles entre otros. [2]

Reconocimiento:
Después de tener los objetos seleccionados, se procede al reconocimiento que se realiza mediante la ejecución de algoritmos diseñados para tal fin como: Fuzzy ARTMAP que es un modelo de red neuronal dinámica, El vecino más cercano holográfico que está basado en los principios de Memoria Asociativa Holográfica (MAH), red multicapa feedforward usada con el algoritmo backpropagation y comparación de plantillas entre otras técnicas de reconocimiento.[2]

REFERENCIA BIBLIOGRAFICA

[1] Fases de un S.V.A., Etapas de un SVA.pdf
Ultima consulta Diciembre 2008.

[2] Preprocesado de imágenes, Monografia placas veh.pdf
Ultima consulta Diciembre 2008.

[3] Segmentación, Preprocesamiento_imagenes R Molina.pdf
Ultima consulta Diciembre 2008.

jueves, 15 de enero de 2009

Requerimientos

REQUERIMIENTOS
Para el reconocimiento de la placa de un vehículo colombiano mediante el procesamiento digital de imágenes, se han propuesto tres prototipos en los cuales se deben cumplir los siguientes requerimientos:
Requerimientos del primer prototipo:
1. Identificar la placa de un vehículo colombiano a partir de una fotografía en formato digital, utilizando el programa Matlab o LabView.
2. La fotografía debe escogerse desde un banco de imágenes con 50 imágenes como mínimo.
3. La imagen del vehículo en la fotografía digital, debe haberse tomado a una distancia mínima de 0.5 metros y una distancia máxima de 2 metros entre el foco de la cámara y el vehículo. La posición de la cámara con respecto al vehículo no debe sobrepasar un ángulo de 40 grados.
4. El resultado de la identificación de la placa del vehículo debe ser presentada en la ventana principal de la aplicación mediante seis (6) caracteres: Los tres primeros corresponden a letras mayúsculas del alfabeto castellano y los tres últimos corresponden a números entre el cero (0) y el nueve (9).
Requerimientos del segundo prototipo:
1. Identificar la placa de un vehículo colombiano a partir de un video en formato digital, utilizando el programa Matlab o LabView.
2. El video debe escogerse desde un banco de videos con 50 videos como mínimo.
3. El video debe haberse capturado mediante una cámara con posición fija cuya distancia debe oscilar entre 0.5 metros y 2 metros entre el foco de la cámara y el vehículo. La posición de la cámara con respecto al vehículo no debe sobrepasar un ángulo de 40 grados.
4. El vehículo debe desplazarse con una velocidad entre cero y 15 kilómetros por hora.
5. La duración del video debe oscilar entre 3 y 5 segundos.
6. El resultado de la identificación de la placa del vehículo debe ser presentada en la ventana principal de la aplicación mediante seis (6) caracteres: Los tres primeros corresponden a letras mayúsculas del alfabeto castellano y los tres últimos corresponden a números entre el cero (0) y el nueve (9).
Requerimientos del tercer prototipo:
1. Identificar la placa de un vehículo colombiano a partir de una señal de video permanente en formato digital, utilizando el programa Open-CV.
2. El video debe capturarse mediante una cámara con posición fija cuya distancia debe oscilar entre 0.5 metros y 2 metros entre el foco de la cámara y el vehículo. La posición de la cámara con respecto al vehículo no debe sobrepasar un ángulo de 40 grados.
3. El programa debe detectar la presencia de un vehículo y proceder a la identificación de la placa.
4. El vehículo debe desplazarse con una velocidad entre cero y 15 kilómetros por hora.
5. El resultado de la identificación de la placa del vehículo debe ser presentada en la ventana principal de la aplicación mediante seis (6) caracteres: Los tres primeros corresponden a letras mayúsculas del alfabeto castellano y los tres últimos corresponden a números entre el cero (0) y el nueve (9).

martes, 9 de diciembre de 2008

Diseño del sistema y resultados

DISEÑO DEL SISTEMA Y RESULTADOS



Se tomaron fotografías de vehículos desde diferentes distancias, bajo diferentes condiciones de iluminación y como fueron tomadas manualmente se tiene variación en el ángulo de inclinación de la placa.
Otro aspecto importante es que algunas imágenes obtenidas presentan brillo debido a los árboles que se encuentran cerca y generan sombras, esto ocasiona problemas en algunos métodos de localización.
El deterioro de la placa también ocasiona problemas con algunos métodos de localización que se acumulan y afectan las etapas siguientes.



Transformada de Hough


Con este método se logro un porcentaje de éxito de 85%, el cual no es un buen resultado. Esto es porque es muy dependiente del tamaño de la placa con respecto a la imagen total. Para obtener un buen resultado es necesario que en la imagen de entrada esté únicamente la parte delantera del vehiculo.
Se hicieron pruebas con 90 imágenes, se logró la detección correcta en 77 imágenes y en 13 imágenes no se logró obtener un buen resultado, en 4 casos se la detectó pero recortando un caracter, contándose como error de detección.







Ventajas: La principal ventaja es que se puede localizar la placa sin importar el tipo de vehiculo, además no depende de la rotación de la placa, se puede encontrar justamente el rectángulo que conforma la placa y puede variar en escala (hasta cierta distancia).

Desventajas: emplea demasiado tiempo para localizar la placa y depende demasiado de la imagen de entrada y del deterioro de la placa.

SEGMENTACION

PRUEBAS DE SEGMENTACIÓN

Los resultados de la segmentación de los caracteres dependen por una parte de la exactitud de la localización, es decir que no se recorte o no se obtenga un área sobrante grande, por otra parte influye también la umbralización y el ángulo de inclinación.

PROGRAMA PRINCIPAL
Función DETEPLACAHOUGH la cual extrae la placa de la imagen original
Función que calcula el ángulo de la placa para corregirlo
Función que restaura la imagen de la placa
Función que se encarga de la umbralización
Función que borra el ruido de la placa
Función que se encarga de separar los caracteres para la identificación
Función que se encarga del vector de características
Función reconocimiento que identifica loas letras y los números que conforman la placa