nbins = 20; figure,hist(allgrains,nbins) 0 0.5 1 1.5 2 2.5 3 x 104 0 20 40 60 80 100 120 140 160 180 200 AMBIENTE GUI
Con los datos obtenidos se creo un ambiente gráfico para que el usuario tuviera la posibilidad de hacer uso de este programa a través de un menú, dentro de este se listan las posibles acciones a realizar, desde la simple visualización de la imagen hasta la comparación con una base datos haciendo uso de una red neuronal. Los resultados de muestras a continuación:
Página 75
Pantalla de bienvenida
Página 76
Seleccionar imagen para el reconocimiento
Página 77
Fondo de la imagen
Página 78
Histograma de área de grises
Página 79
Mejoramiento de la imagen
Página 80
Comparación de la imagen
Si la huella se encuentra dentro de la base de datos:
Página 81
Página 82 JUSTIFICACIÓN ECONÓMICA
Existen varios sistemas existentes para el reconocimiento de huellas pero son realmente costosos. Para la realización de este proyecto sólo fue necesario contar con una computadora de escritorio, el software de matlab y nuestro trabajo intelectual, por la realización del proyecto no genero un costo directo.
Si consideramos que actualmente en cualquier lugar contamos con una computadora de escritorio sólo sería necesario adquirir los siguientes elementos:
ELEMENTOS NECESARIO PARA EL DESARROLLO DEL PROTOTIPO
COSTO
ESCÁNER PARA LECTURA DE HUELLA DACTILAR $500.00
LICENCIA DE MATLAB $3500.00
COSTO TOTAL $4000.00
Si agregamos $1000.00 como ganancias que se generaría por el trabajo empleado, tendríamos a la venta un sistema de control de acceso dactilar, similar a los existentes actualmente.
Por lo que podemos observar el costo de nuestro sistema es mucho menor a los existentes actualmente, esto nos permitiría que fuera más fácil de adquirir y ayudaría a implementar sistemas de acceso más seguros.
COSTO DE UN SISTEMA A LA VENTA ACUTUALMENTE
COSTO DEL SISTEMA
PROPUESTO 1100 €
$ 16500.00
35 €
Página 83 TRABAJO A FUTURO
Para el trabajo a futuro sería adecuado realizar un escáner para la lectura de las huellas dactilares, así como también realizar una mejora al software y poder hacerlo más amigable a los usuarios. Además que este mismo software nos permitiría realizar la identificación también con el iris o la palma de la mano.
Una implementación seria tanto para los sistemas de seguridad como para el empleo de la solución de crímenes en las agencias de investigaciones.
Página 84 CONCLUSIONES
La importancia actual de tener mejores sistemas de seguridad, nos ha llevado a buscar nuevas alternativas. El control de seguridad empleando técnicas biométricas es un sistema cada día más usado y seguro, las ventajas que ofrecen estos sistemas es que están basados en características propias del individuo y cada individuo cuenta con características especificas que lo hacen ser único. Este sistema no recurren al uso de claves personalizadas, tarjetas, etc., los cuales son fácilmente de olvidar o violables. El primero paso a realizar es adquirir las imágenes biométricas, para así poder realizar el análisis de ella y poder extraer las características necesarias para realizar el control adecuado. Para el caso de este trabajo tomamos una base de datos existente para así poder minimizar los costos del proyecto, dichas bases de datos se encuentran disponibles para que se continúen las investigaciones para proponer nuevos software, además que en este trabajo nos enfocamos al desarrollo de un nuevo software específicamente.
Cuando se realiza la adquisición de la imagen esta puede presentar varios problemas en cuanto a su contraste, brillo o puede estar movida, por lo cuál es necesario realizar un procesamiento de la imagen, lo que nos permitirá manipular y poder corregir dichas imperfecciones y realizar mejoras a esta misma.
Para el procesamiento digital de imágenes utilizamos el toolbox de procesamiento digital de imágenes de matlab, ya que es fácil de utilizar y cuenta con las herramientas necesarias para el procesamiento de la imagen.
Una vez que ya realizamos la mejora de la imagen, se realizar la extracción de las características de cada una de las imágenes tomadas, para que se puedan tomar los parámetros que se van a utilizar para la evaluación dentro del sistema. Para el caso del análisis de la huella digital es necesario considerar las identificaciones de las líneas y de las terminaciones existentes de cada uno.
Una vez que se tiene procesada la imagen y se tienen adquiridas las características propias de cada individuo, utilizamos una red neuronal para realizar la comparación con nuestra base de datos, el cuál debe de tener almacenado los diferentes patrones de cada imagen. Se decidió utilizar una red neuronal porque nos permitía realizar una comparación muy aproximada de los datos existentes en nuestro sistema además de tener un menor rango de error de aproximadamente un 3%. La red neuronal que utilizamos fue una red estática, debido a que esta ya fue entrenada para obtener los valores que utilizaremos los cuales estarán contenidos en una base de datos (sistema) específico.
Página 85 GLOSARIO DE TERMINOS EN INGLES
*Arch: Arco
* Rigde Ending: Final Cresta
* Rigde Bifurcation: Bifurcación de la Cresta *Tented Arch: Arco Pronunciado
*Right Loop: Bucle hacia la Derecha *Left Loop: Bucle hacia la Izquierda *Twin Loop: Doble Bucle
* Whorlt: Remolino
*fingercode: Código de la huella *Smart Card: Tarjeta Inteligente *Hardware:Dispositivos
*Software: Programa *Scanner: Escaner
*Precise Biometrics: Biometría Precisa * inkless
* off-line: Fuera de Línea
*Region of Interest: Región de Interés
* enhancement: Aumento
* morphological thinning: Adelgazamiento Morfológico * Hit-miss
* Skeleton: Esqueleto
* End points: Fin de Señales
* Feature extraction: Representación de la Extracción. *test: Prueba
Página 86 * Live Recognition :Reconocimiento en Vida
* Liveness Check
Página 87 MEDIOS DE INFORMACION
Redes Neuronales: Conceptos fundamentales y aplicaciones a control
automático. Edgar Nelson Sánchez Camperos, Alma Yolanda Alanis García. Ed. Prentice Hall. Madrid, España. 2006.
Neural Networks a Comprehensive fundation. Simon Hyking. Ed. Hamilton
Printing Company. United Status of America. 1994.
Tecnologías Biométricas aplicadas a la seguridad. Marino Tapiador Mateos,
Juan A. Sigüenza Pizano. Ed. Alfaomega. México DF. Septiembre 2005.
Redes de Neuronas Artificiales: Un enfoque Práctico. Pedro Isasi Viñuela, Inés
Gálvan León. Ed. Pearson Prentice Hall. Madrid, España. 2004.
Tratamiento Digital de Imágenes. González, R.C. , Woods, R. E. Ed.Addison-
Página 88 APENDICE DESARROLLO DE LA APLICACIÓN function presentacion clear,clc,cla,close all figdiag=figure('Units','Normalized','Position',[0.0725 0.0725 0.57 0.57], … 'Number','off','Name','Comunicaciones y Electrónica', ... 'Menubar','none','color',[0 0 0]); axes('Units','Normalized','Position',[0 0 1 1]); [x,map]=imread('imagen.jpg','jpg'); image(x),colormap(map),axis off,hold on
text(220,50,'Procesamiento Digital de','Fontname','Arial', ...
'Fontsize',20,'Fontangle','Italic','Fontweight','Bold','color',[0 1 1]); text(50,110,'Imágenes Biométricas Aplicado al Control','Fontname', ... 'Arial','Fontsize',20,'Fontangle','Italic','Fontweight','Bold', 'color',[0 1 1]); text(210,170,'de Sistemas de Seguridad','Fontname','Arial', ...
'Fontsize',20,'Fontangle','Italic','Fontweight','Bold','color',[0 1 1]); text(50,280,'Presentan:','Fontname','Comic Sans MS','Fontangle', ... 'Italic','Fontweight','Bold','Fontsize',14,'color',[1 1 1]);
text(120,330,'Lozada Méndez Cynthia Arlette','Fontname','Comic Sans MS', ... 'Fontangle','Italic','Fontweight','Bold','Fontsize',14,'color',[1 1 1]);
text(120,380,'Luis Pineda Loyda Florencia','Fontname','Comic Sans MS', ... 'Fontangle','Italic','Fontweight','Bold','Fontsize',14,'color',[1 1 1]);
botok=uicontrol('Style','pushbutton', ... 'Units','normalized', ...
'Position',[.84 .03 .12 .05], ... 'String','CONTINUAR',...
Página 89
function varargout = proyecto(varargin) gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @proyecto_OpeningFcn, ... 'gui_OutputFcn', @proyecto_OutputFcn, ... 'gui_LayoutFcn', [] , ...
'gui_Callback', []); if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1}); end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else
gui_mainfcn(gui_State, varargin{:}); end
function proyecto_OpeningFcn(hObject, eventdata, handles, varargin) background = imread('escudo.jpg');
imshow(background);
background = imread('escudo1.jpg'); imshow(background);
handles.output = hObject;
function varargout = proyecto_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;
Página 90
function pushbutton10_Callback(hObject, eventdata, handles)
function pushbutton21_Callback(hObject, eventdata, handles)
function pushbutton04_Callback(hObject, eventdata, handles)
function pushbutton05_Callback(hObject, eventdata, handles) I = imread(handles.direccion); I2 = imsubtract(I,handles.background); I3 = imadjust(I2); level = graythresh(I3); bw = im2bw(I3,level); imshow(bw) handles.bw=bw;
function pushbutton24_Callback(hObject, eventdata, handles)
function pushbutton07_Callback(hObject, eventdata, handles) graindata = regionprops(handles.labeled,'basic')
graindata(50).Area
allgrains = [graindata.Area];
max_area = max(allgrains) % Buscando el valor máximo del área para todos los granos. biggrain = find(allgrains==max_area)
mean(allgrains nbins = 20;
Página 91
function pushbutton08_Callback(hObject, eventdata, handles) I = imread(handles.direccion);
Iad = imadjust(I); imshow(Iad);
function pushbutton09_Callback(hObject, eventdata, handles) I=imread('handles.direccion'); I2=imread('110_4.tif'); I3=[I I2]; i=0; if I3(:,1:300)==I imshow(I) end for j=1:512 for i=1:256 if I3[j,i]==I imshow(I3); else input('NO ENCONTRADO'); end end end
function pushbutton02_Callback(hObject, eventdata, handles) I = imread(handles.direccion);
Página 92
function pushbutton29_Callback(hObject, eventdata, handles)
function pushbutton06_Callback(hObject, eventdata, handles) [labeled,numObjects] = bwlabel(handles.bw,4);
handles.labeled=labeled; numObjects
rect = [105 125 10 10]; grain = imcrop(labeled,rect)
RGB_label = label2rgb(labeled, @spring, 'c', 'shuffle'); imshow(RGB_label);
function axes2_ButtonDownFcn(hObject, eventdata, handles)
function close_pushbutton_Callback(hObject, eventdata, handles) pos_size = get(handles.figure1,'Position');
user_response = final('Title','Confirm Close'); switch user_response
case {'No'} case 'Si'
delete(handles.figure1) end
function pushbutton01_Callback(hObject, eventdata, handles) [FileName Path]=uigetfile({'*.jpg;*.bmp;*.tif'},'Abrir Imagen'); if isequal(FileName,0)
Página 93
else
imag=imread(strcat(Path,FileName)); end
handles.direccion=strcat(Path,FileName);
function pushbutton03_Callback(hObject, eventdata, handles) I = imread(handles.direccion); background = imopen(I,strel('disk',15)); handles.background=background; guidata(hObject,handles) axes(handles.axes2) axis off; surf(double(background(1:8:end,1:8:end))),zlim([0 255]); set(gca,'ydir','reverse');