Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Reconocimiento de Huella Digital

No description
by

Stephanie Alva

on 10 December 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Reconocimiento de Huella Digital

ALUMNOS:
- Alva Baltazar, Stephanie 11200046
- Rodriguez Vargas, David 11200189

CURSO:
- Algoritmica III

PROFESOR:
- Ruiz de la Cruz, Melo.

-2014-
Reconocimiento de Huella Digital
INTRODUCCION
En la actualidad la seguridad en las transacciones electrónicas se ha vuelto una parte indispensable para los programadores de sistemas, la identificación para el acceso a los registros y demás cuestiones relacionadas deben de ser tomadas en cuenta para poder validar que alguna persona está accediendo realmente a lo que debe acceder, es esencial hacer que (en medida de lo posible) nadie pueda hacerse pasar por alguien que no es al momento de identificarse en un sistema. Aquí es donde la biometría juega un papel sumamente interesante.
De todos los sistemas de identificación biométrica existentes, las huellas digitales es la única legalmente reconocida como prueba fidedigna de identidad. Es un sistema que además de ser efectivo, es cómodo de aplicar y la autenticación se puede obtener rápidamente.

OBJETIVOS
OBJETIVO GENERAL
Investigar y Desarrollar un Sistema de Reconocimiento de Huellas Dactilares usando herramientas biométricas aplicadas al reconocimiento de las mismas, partiendo de una comparación gráfica con patrones digitales visuales almacenados en una Base de Datos para obtener la identidad de una determinada persona y su información personal relevante.
OBJETIVOS ESPECÍFICOS
- Desarrollar un Sistema que permita el Reconocimiento de huellas digitales identificando a quien pertenece basándose en la información almacenada en una base de datos.

- Evaluar y Seleccionar métodos de asignación de información personal de un determinado patrón digital.

- Realizar Pruebas de validación y verificación de los resultados del sistema.




HERRAMIENTAS USADAS
- El JRE (Java Runtime Environment).
- IDE de programación NetBeans.
- Un lector de huella digital digital persona U.areu.4500
- El API de programación del lector para Java.
- Un servidor de bases de datos en MySQL.
El ingreso de huellas digitales se realizará de forma manual (huellas estáticas), mediante un scanner.

Mediante comparaciones de patrones de huellas digitales el sistema determinará la identidad de una persona y su información que se encontrarán almacenadas en una base de datos.

ALCANCE DEL SISTEMA
RECONOCIMIENTO DE HUELLA DIGITAL
MODOS DE OPERACIÓN
MODO REGISTRO
MODO VERIFICACIÓN
MODO IDENTIFICACIÓN
Permite el ingreso de los datos de las personas al sistema de base datos para esto deberá realizar los siguientes pasos:

Coloque un dedo en el scanner 4 veces, comprobando que la plantilla haya sido obtenida, con el fin de que se obtengan 4 plantillas de un mismo dedo y reducir asi el margen de error.
El lector obtendrá las caracteristicas de las 4 plantillas de la huella y las guardará.
Presionar el boton guardar, e introducir los datos de la persona, darle aceptar,
Saldrá un texto que nos indicará si los datos de la persona y la plantilla fueron guardados correctamente en la base de datos.
Permite la búsqueda de los datos de una persona mediante el procesamiento de la huella que se ingresa en la base de datos para esto deberá seguir los siguientes pasos:

Coloque el dedo en el lector permitiendo que éste obtenga su huella.
El lector obtendrá las caracteristicas de la huella y creará una plantilla
Ingrese el nombre de la persona que desea verificar la huella.
El sistema realizará la búsqueda de la plantilla y el nombre en la base de datos, si la información existe y coinciden, en el sistema se mostrará los datos y la huella resultante.
En caso contrario aparecerá un mensaje que indica que no existe un registro de huella para la persona, o que el registro de huella no coincide con el de la persona.
Permite la búsqueda de los datos de una persona mediante el procesamiento de la huella que se ingresa obteniendo un patrón de búsqueda en la base de datos para esto deberá realizar los siguientes pasos:

Coloque el dedo en el lector permitiendo que éste obtenga su huella.
El lector obtendrá las caracteristicas de la huella y creará una plantilla la cual será comparada con todas las demás almacenadas en la base de datos.
Si existe el registro, se mostraran los datos de la persona.
En caso que no existe, se mostrará un mensaje que indique que la huella obtenida no presenta registro creado.
La adquisición de las huellas dactilares se realizó desde el dispositivo biométrico UareU 4500 de Digital Persona Inc. Las imágenes fueron capturadas con una resolución de 512 DPI y un tamaño de 340x340 píxeles en escala de grises.
Debemos tener presente que en una imagen entre mayor sea su calidad, menor es la probabilidad de encontrar falsas minucias debido a que una falsa minucia es creada en muchas ocasiones por una mala calidad de la imagen de entrada.
Cuando se utiliza un sensor óptico, es casi imposible que la huella dactilar de una misma persona proporcione exactamente la misma información cuando se escanea una y otra vez.

INTRODUCCION DEL SISTEMA
Para evitar posibles errores en el reconocimiento posterior, la información de los extremos será eliminada, para poder asegurar que solamente la información central sea procesada al momento de la extracción de minucias. En caso de que esta distorsión no fuera eliminada, el algoritmo podría detectar falsas minucias.
Nuestro lector utiliza la técnica de EXTRACCIÓN DE MINUCIAS, que consiste en calcular el numero de pixeles que cruzan el pixel central.


DPFPCapture Lector = DPFPGlobal.getCaptureFactory().createCapture();
(Varible que permite iniciar el dispositivo de lector de huella conectado con sus distintos metodos).

DPFPEnrollment Reclutador=DPFPGlobal.getEnrollmentFactory().createEnrollment();
(Varible que permite establecer las capturas de la huellas, para determina sus caracteristicas y poder estimar la creacion de un template de la huella para luego poder guardarla)

DPFPVerification Verificador = DPFPGlobal.getVerificationFactory().createVerification();
(Esta variable tambien captura una huella del lector y crea sus caracteristcas para auntetificarla o verificarla con alguna guardada en la BD)

DPFPTemplate template;
(Variable que para crear el template de la huella luego de que se hallan creado las caracteriticas necesarias de la huella si no ha ocurrido ningun problema)
public void guardarHuella() {
//Obtiene los datos del template de la huella actual
ByteArrayInputStream datosHuella = new ByteArrayInputStream(template.serialize());
Integer tamañoHuella = template.serialize().length;
//Pregunta el nombre de la persona a la cual corresponde dicha huella
String nombre = JOptionPane.showInputDialog("Nombre:");
int id= Integer.parseInt(JOptionPane.showInputDialog("ID:"));
try {
//Establece los valores para la sentencia SQL
Connection c = con.conectar(); //establece la conexion con la BD
PreparedStatement guardarStmt = c.prepareStatement("INSERT INTO huella(ID, Huellanombre,Huellahuella) values(?,?,?)");
guardarStmt.setInt(1, id);
//contador ++;
guardarStmt.setString(2, nombre);
guardarStmt.setBinaryStream(3, datosHuella, tamañoHuella);

EXPLICACIÓN DEL CODIGO
public void ProcesarCaptura(DPFPSample sample) {
// Procesar la muestra de la huella y crear un conjunto de características con el propósito de inscripción.

featuresinscripcion = extraerCaracteristicas(sample, DPFPDataPurpose.DATA_PURPOSE_ENROLLMENT);
// Procesar la muestra de la huella y crear un conjunto de características con el propósito de verificacion.

featuresverificacion = extraerCaracteristicas(sample, DPFPDataPurpose.DATA_PURPOSE_VERIFICATION);
// Comprobar la calidad de la muestra de la huella y lo añade a su reclutador si es bueno

if (featuresinscripcion != null) {
try {
System.out.println("Las Caracteristicas de la Huella han sido creada");
Reclutador.addFeatures(featuresinscripcion);
// Agregar las caracteristicas de la huella a la plantilla a crear
// Dibuja la huella dactilar capturada.

Image image = CrearImagenHuella(sample);
DibujarHuella(image);
btnVerificar.setEnabled(true);
btnIdentificar.setEnabled(true);
} catch (DPFPImageQualityException ex) {
System.err.println("Error: " + ex.getMessage());
} finally {
EstadoHuellas();
// Comprueba si la plantilla se ha creado.

switch (Reclutador.getTemplateStatus()) {
case TEMPLATE_STATUS_READY:
// informe de éxito y detiene la captura de huellas

stop();

setTemplate(Reclutador.getTemplate());
EnviarTexto("La Plantilla de la Huella ha Sido Creada, ya puede Verificarla o Identificarla");
btnIdentificar.setEnabled(false);
btnVerificar.setEnabled(false);
btnGuardar.setEnabled(true);
btnGuardar.grabFocus();
break;
case TEMPLATE_STATUS_FAILED: /
/ informe de fallas y reiniciar la captura de huellas
Reclutador.clear();
stop();
EstadoHuellas();
setTemplate(null);
JOptionPane.showMessageDialog(CapturaHuella.this, "La Plantilla de la Huella no pudo ser creada, Repita el Proceso", "Inscripcion de Huellas Dactilares", JOptionPane.ERROR_MESSAGE);
start();
break;
}
}
}
}
//Ejecuta la sentencia
guardarStmt.execute();
contador ++;
guardarStmt.close();
JOptionPane.showMessageDialog(null, "Huella Guardada Correctamente");
con.desconectar();
btnGuardar.setEnabled(false);
btnVerificar.grabFocus();
} catch (SQLException ex) {
//Si ocurre un error lo indica en la consola
ex.printStackTrace();
System.err.println("Error al guardar los datos de la huella.");
} finally {
con.desconectar();
}
}
public void verificarHuella(String nom) {
try {
//Establece los valores para la sentencia SQL
Connection c = con.conectar();
//Obtiene la plantilla correspondiente a la persona indicada
PreparedStatement verificarStmt = c.prepareStatement("SELECT Huellahuella FROM Huella WHERE Huellanombre=?");
verificarStmt.setString(1, nom);
ResultSet rs = verificarStmt.executeQuery();
//Si se encuentra el nombre en la base de datos
if (rs.next()) {
//Lee la plantilla de la base de datos
byte templateBuffer[] = rs.getBytes("Huellahuella");
//Crea una nueva plantilla a partir de la guardada en la base de datos
DPFPTemplate referenceTemplate = DPFPGlobal.getTemplateFactory().createTemplate(templateBuffer);
//Envia la plantilla creada al objeto contendor de Template del componente de huella digital
setTemplate(referenceTemplate);
// Compara las caracteriticas de la huella recientemente capturda con la
// plantilla guardada al usuario especifico en la base de datos
DPFPVerificationResult result = Verificador.verify(featuresverificacion, getTemplate());

//compara las plantilas (actual vs bd)
if (result.isVerified()) {
JOptionPane.showMessageDialog(null, "Las huella capturada coinciden con la de " + nom, "Verificacion de Huella", JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "No corresponde la huella con " + nom, "Verificacion de Huella", JOptionPane.ERROR_MESSAGE);
}

//Si no encuentra alguna huella correspondiente al nombre lo indica con un mensaje
} else {
JOptionPane.showMessageDialog(null, "No existe un registro de huella para " + nom, "Verificacion de Huella", JOptionPane.ERROR_MESSAGE);
}
} catch (SQLException e) {
//Si ocurre un error lo indica en la consola
System.err.println("Error al verificar los datos de la huella.");
} finally {
con.desconectar();
}
}
public void verificarHuella(String nom) {
try {
//Establece los valores para la sentencia SQL
Connection c = con.conectar();
//Obtiene la plantilla correspondiente a la persona indicada
PreparedStatement verificarStmt = c.prepareStatement("SELECT Huellahuella FROM Huella WHERE Huellanombre=?");
verificarStmt.setString(1, nom);
ResultSet rs = verificarStmt.executeQuery();

//Si se encuentra el nombre en la base de datos
if (rs.next()) {
//Lee la plantilla de la base de datos
byte templateBuffer[] = rs.getBytes("Huellahuella");
//Crea una nueva plantilla a partir de la guardada en la base de datos
DPFPTemplate referenceTemplate = DPFPGlobal.getTemplateFactory().createTemplate(templateBuffer);
//Envia la plantilla creada al objeto contendor de Template del componente de huella digital
setTemplate(referenceTemplate);

// Compara las caracteriticas de la huella recientemente capturda con la
// plantilla guardada al usuario especifico en la base de datos
DPFPVerificationResult result = Verificador.verify(featuresverificacion, getTemplate());


//compara las plantilas (actual vs bd)
if (result.isVerified()) {
JOptionPane.showMessageDialog(null, "Las huella capturada coinciden con la de " + nom, "Verificacion de Huella", JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "No corresponde la huella con " + nom, "Verificacion de Huella", JOptionPane.ERROR_MESSAGE);
}

//Si no encuentra alguna huella correspondiente al nombre lo indica con un mensaje
} else {
JOptionPane.showMessageDialog(null, "No existe un registro de huella para " + nom, "Verificacion de Huella", JOptionPane.ERROR_MESSAGE);
}
} catch (SQLException e) {
//Si ocurre un error lo indica en la consola
System.err.println("Error al verificar los datos de la huella.");
} finally {
con.desconectar();
}
}
GRACIAS
Full transcript