Está en la página 1de 8

Reconocimiento de placas sencillo

Visin Artificial Aplicada








Rendn Mhur Diego Erwin


Objetivo
Identificar diferentes tipos de placas de coches, se tomaran 5 fotografas de 10 placas
distintas y se llevara a cabo un mtodo de procesamiento que indique el tipo de placa al
que pertenece una placa introducida para su anlisis.

Desarrollo
Se aprecia en la siguiente figura como funciona el programa, primero pide 5 tipos de
placas que sern los permitidos a ingresar, despus lleva a cabo el anlisis de las 50 placas,
luego pregunta que placa est ingresando e informa si le est permitido o no ingresar a
ese vehculo.


Placas empleadas

Placa 1


Placa 2


Placa 3


Placa 4


Placa 5


Placa 6


Placa 7


Placa 8


Placa 9

Placa 10


Se analiz solamente el rea de inters, que es donde se localizan los caracteres,
obteniendo imgenes de la siguiente apariencia:

Esta imagen ya se encuentra en negativo, pues de esta manera es mas fcil identificar los
caracteres con el valor mximo en escala de grises.
Una vez obtenidas las imgenes reducidas y binarizadas de cada placa se procede a
realizar una OR lgica entre las 5 imgenes de cada placa, obteniendo de esta manera los
patrones para cada una de las placas. Los patrones obtenidos son los siguientes:


El procedimiento para reconocer a qu tipo de placa pertenece una imagen analizada es el
siguiente: Se realiza una AND entre la imagen a analizar y todos los patrones, luego se
calcula con cual patrn tuvo un porcentaje mayor de coincidencia al momento de realizar
la AND.


CDIGO PRINCIPAL
% Rendn Mhur Diego Erwin
% Examen extra de Vision Aplicada
% Deteccion de placas


close all;
clear all;
clc;

% Se pide al usuario las placas que seran permitidas
y=input('Qu tipos de placa son los permitidos a ingresar [a,b,c,d,e]?
\n');

% Adquisicion de imagenes
for i=1:10
for j=1:5
n=((i*5)-5);
nn=n+j;
n1=num2str(nn);
imagen=cat(2,n1,'.jpg');

a=imread(imagen);
b=rgb2gray(a);
c=imresize(b,0.25);

placas(:,:,i,j)=c; % todas quedan guardadas en la matriz 'placas'
end
end

% Obtencion del negativo de cada placa
for i=1:10
for j=1:5
placas2(:,:,i,j)=uint8((255*ones(100,400))-
(double(imresize(placas(90:210,:,i,j),[100,400]))));

%placas3(:,:,i,j)=im2bw(placas2(:,:,i,j),graythresh(placas2(:,:,i,j)));
placas3(:,:,i,j)=im2bw(placas2(:,:,i,j),0.75);
end
end

% Obtencion de los patrones
for i=1:10

placas4(:,:,i)=placas3(:,:,i,1)|placas3(:,:,i,2)|placas3(:,:,i,3)|placas3
(:,:,i,4)|placas3(:,:,i,5);
end

% Comparacion con patrones
for i=1:10
for j=1:5
for k=1:10

revision(k)=2*sum(sum(placas3(:,:,i,j)&placas4(:,:,k)))/(sum(sum(placas3(
:,:,i,j)))+sum(sum(placas4(:,:,k))));
end
[a1, a2]=max(revision);
chequeo(i,j)=a2;
end
end

s=1;
while s==1
% Se pregunta que placa desea analisar
x=input('Cual es la placa del vehiculo que desea ingresar [tipo,
numero]? \n');
i=x(1);
j=x(2);
if i==11
s=0;
else
% Se lleva a cabo la revision en la base de datos
for k=1:10

revision(k)=2*sum(sum(placas3(:,:,i,j)&placas4(:,:,k)))/(sum(sum(placas3(
:,:,i,j)))+sum(sum(placas4(:,:,k))));
end
% Resultado del analisis
[a1, a2]=max(revision);

% Se imprime en pantalla el resultado
fprintf('La placa pertenece al tipo de placa %d \n',a2);
if a2==y(1)||a2==y(2)||a2==y(3)||a2==y(4)||a2==y(5)
fprintf('El vehiculo esta autorizado, adelante por favor.
\n');
else
fprintf('Este vehiculo no esta autorizado a ingresar. \n');
end
end
end



Resultados
Se obtuvo 100% de precisin en la deteccin de placas, a continuacin se aprecia la matriz
de resultados, donde cada fila representa las 5 placas de cada tipo que se analizaron,
como se ve, cada fila posee los mismos nmeros y estos estan en orden, 1 en la primer
fila, 2 en la segunda, as hasta la fila 10, esto indica que las 5 fotos de cada placa fueron
detectadas acertadamente.


Conclusin
El mtodo empleado facilita el procesamiento, se cuenta con un aprendizaje sencillo,
mientras la imagen pertenezca a cierto tipo de placa, esta se agregara al patrn mediante
un proceso OR con el patrn. Un mtodo muy efectivo para comparar similitud de
imgenes y objetos binarizados.