Documentos de Académico
Documentos de Profesional
Documentos de Cultura
LUGAR DE REALIZACIN:
CENTRO DE CIENCIAS APLICADAS Y DESARROLLO TECNOLOGICO
(CCADET), UNAM
ASESOR INTERNO:
AGUEDA LUNA TORRES
ASESOR EXTERNO:
DRA. FABIOLA MIROSLABA VILLALOBOS CASTALDI
PRESENTA:
GUSTAVO LOPEZ BERNAL
No DE CONTROL:
111080239
MEXICO, D.F.
ABRIL / 2016
RESUMEN
El presente documento detalla la metodologa y las actividades para el desarrollo de un
sistema experto en la deteccin de emociones a travs de puntos especficos en el rostro.
Dicho sistema se desarroll con el lenguaje CHEHRA, MATLAB y C++, para generas los
recursos del sistema.
INDICE
RESUMEN ......................................................................................................................... 2
INDICE .............................................................................................................................. 3
1.1 Introduccin ................................................................................................................. 4
1.2 Justificacin ................................................................................................................. 5
1.3 Objetivo general ........................................................................................................... 6
1.4 Objetivo particular ........................................................................................................ 6
1.5 Generalidades De La Empresa .................................................................................... 7
1.6 Problemas a resolver, priorizndolos ........................................................................... 9
1.7 Fundamento terico ................................................................................................... 10
1.8 Investigacin del Rostro Humano .............................................................................. 12
1.8.2 Puntos Bsicos Del Rostro ..................................................................................... 13
1.8.3 Partes Del Rostro Humano ..................................................................................... 14
1.9 Emociones ................................................................................................................. 15
1.9.1 Deteccin y Reconocimiento de Emociones ........................................................... 15
1.9.2 Escalas de la Imagen para su Estudio .................................................................... 16
2.1 Programas Para Desarrollo de Cdigo....................................................................... 18
3.1 Desarrollo del software .............................................................................................. 21
4.1 Pruebas Del Sistema ................................................................................................. 44
5.1 Resultados ................................................................................................................. 48
5.2 Conclusiones ............................................................................................................. 52
ANEXO ............................................................................................................................ 53
6.1 Bibliografa ................................................................................................................. 69
1.1 Introduccin
El reconocimiento es un atributo bsico de los humanos. La localizacin de los puntos faciales
es el paso inicial para determinar la expresin y apariencia del rostro. Esto lleva a que podemos
determinar con una mayor claridad las expresiones en tiempo real. Para determinar las
expresiones faciales debemos tener en cuenta varias partes del rostro tales como las esquinas
de los ojos, las esquinas de las cejas, las esquinas y los puntos medios exteriores de los labios,
esquinas de las ventanas de la nariz, la punta de la nariz, y la punta de la barbilla. Dicha
deteccin de puntos faciales es a menudo el primer paso en aplicaciones de visin por
ordenador, tales como la deteccin e identificacin del rostro, el reconocimiento de
expresiones faciales, el seguimiento en tiempo real del rostro y la lectura de labios.
El Modelo de Algoritmos, son ampliamente utilizados hoy en da para la alineacin de la cara
y el seguimiento. Actualmente, sin embargo, esta etapa se lleva a cabo usualmente mediante
el etiquetado manualmente el requerido cambio de agujas. La localizacin de los puntos
faciales estables, tales como las esquinas interiores de los ojos y las esquinas interiores de
las fosas nasales tambin se utiliza generalmente para registrar cada marco de una secuencia
de imgenes de entrada con el primer fotograma de la misma. A su vez, la robustez del
algoritmo de deteccin de punto de caracterstica facial altamente afecta al rendimiento global
del sistema.
Los mtodos anteriores para la deteccin de puntos de caractersticas faciales podran
clasificarse en dos categoras: a base de textura y mtodos basados en la forma. Los mtodos
basados en la textura modelo local textura alrededor de un punto determinada caracterstica,
por ejemplo el pxel valores en una pequea regin alrededor de una esquina de la
boca. Forma- mtodos basados consideran todos los puntos de caractersticas faciales como
la forma, el cual se aprende a partir de un conjunto de caras marcadas, y tratar de encontrar.
1.2 Justificacin
Las emociones o sentimientos son parte de nuestra vida y nos proporcionan la energa para
resolver un problema o realizar una actividad nueva. En definitiva, actan como resortes que
nos impulsan a actuar para conseguir nuestros deseos y satisfacer nuestras necesidades.
Algunas de las reacciones fisiolgicas y comportamentales que desencadenan las emociones
son innatas, mientras que otras pueden adquirirse. Unas se aprenden por experiencia directa,
como el miedo o la ira, pero la mayora de las veces se aprende por observacin de las
personas de nuestro entorno.
Si podemos contar con un sistema que pueda detectar las emociones a travs de programas
basados en un lenguaje de programacin, podramos obtener un porcentaje ms alto en
cuanto a la expresin facial que da el ser humano esto podra beneficiar en gran medida, ya
que tendramos una precisin en nuestros resultados.
2. Tendr una aplicacin en cualquiera mbito del procesamiento del rostro, ya sea en
reconocimiento facial, seguimiento del rostro y anlisis de expresiones.
3. Podr ser utilizado en cualquier proyecto que requiera y utilice una investigacin en el
mbito de visin por computadora y expresin facial del ser humano.
Implementar el algoritmo en una interfaz grfica que nos permita ver resultados.
Misin:
La misin del CCADET es realizar investigacin, desarrollo tecnolgico, formacin de recursos
humanos y difusin en los campos de la instrumentacin, micro y nanotecnologas, tecnologas
de la informacin y educacin en ciencia y tecnologa, con un enfoque multidisciplinario,
integrando las actividades de investigacin y desarrollo tecnolgico y buscando aplicar el
conocimiento generado a la solucin de problemas relevantes de nuestro entorno.
Visin:
Transformarse en una entidad acadmica con reconocimiento nacional e internacional por la
calidad de sus investigaciones; su capacidad para generar, asimilar, y transferir tecnologa; su
papel sobresaliente en la promocin de la investigacin aplicada y el desarrollo tecnolgico a
travs de programas y proyectos multidisciplinarios e integradores de ciencia y tecnologa, con
impacto en la solucin de problemas nacionales y globales; y su compromiso con la formacin
de recursos humanos de alta calidad en sus reas de especialidad.
Objetivos:
nacionales
de
mayor
impacto.
Otro problema muy frecuente es la obtencin de la imagen ya que son muy pocos datos los
que pueden arrojar la imagen en tiempo real y tenga una resolucin buena en cuanto a la
utilizacin de los pixeles.
El encontrar una solucin a este problema es difcil, lo que se tratara en este trabajo es
encontrar la forma de tener una mayor precisin en cuanto a la imagen y la deteccin de puntos
especifico en el rostro, el sistema pretende dar un resultado satisfactorio en condiciones que
estn mejor definidas y tenga una mayor precisin en cuanto a la lectura del rostro en especial
a la de emociones.
Una manera muy eficiente de poder detectar emociones es a travs de imgenes y videos, ya
que estos nos permiten tener una captura del rostro en tiempo real. Las imgenes son
ampliamente utilizadas como fuentes importantes de informacin en el uso de aplicaciones
de Face-Tracking (Seguimiento de la Cara). Su aplicacin son centradas en el ser humano
principalmente en el rostro y llevada a: vigilancia de seguridad, desarrollo de sistemas
biomtricos, juegos multimedia de interaccin hombre-mquina, robtica y realidad virtual.
Gracias al gran avance tecnolgico en crear ciertos programas para la captura y estudio de
imgenes referente al rostro se ha podido crear nuevas y mejores aplicaciones dndole un
nuevo enfoque y haciendo una mayor precisin en el estudio de las expresiones faciales.
Verificacin
Autentificacin e Identificacin.
La cara (tambin rostro y faz) es la parte frontal de la cabeza, en los humanos la parte
anteroinferior, desde las cejas a la barbilla.
Una vez comprendido las partes del rostro conoceremos sus partes bsicas, dichas partes
sern las que nos lleven en todo el proyecto para su comprensin y utilizacin en la deteccin
de emociones.
Cejas
Ojos
Nariz
Boca
Labios
Barbilla.
Ojos
Nariz
Cejas
Labios
Boca
Barbilla
1.9 Emociones
1.9.1 Deteccin y Reconocimiento de Emociones
El primer paso para iniciar este sistema es el reconocimiento del rostro ya sea que podamos
obtenerlo en imagen o en video independientemente de cmo lo queramos utilizar, en este
caso nos basaremos a la toma de una imagen con una serie de patrones en regiones
especficas del rostro, aunque algunas veces es una complicacin la toma de una imagen
debido a muchos factores ya sea la iluminacin, la posicin, la escala del rostro, edad de la
persona y la orientacin de la misma.
El reconocimiento de emociones se lleva a cabo en la vida diaria, el estudio de Paul Ekman
revela que nosotros los humanos podemos tener y crear ms de 7,000 expresiones y cambios
en el rostro lo que hace ms difcil la deteccin de ellos ya que son en micro- segundos.
Pero en este estudio y para crear el sistema se pretender reconocer solo los ms bsicos que
son la ira, la felicidad, sorpresa, asco, enfado, desprecio, tristeza y miedo. (Figura 1.3)
La resolucin se utiliza tambin para clasificar casi todos los dispositivos relacionados con las
imagen digital, ya sean pantallas de ordenador o televisin, impresoras, escneres, cmaras
digitales, etc.
La resolucin total expresa el nmero de pxeles que forman una imagen de mapa de bits. La
calidad de una imagen tambin depende de la resolucin que tenga el dispositivo que la capta.
En el caso de las cmaras, el nmero de pxeles que contenga una fotografa depende de la
configuracin y, como mximo, de cuntos pxeles utilice el sensor CCD (Charge- CoupledDevice) de la cmara para captar la imagen.
Figura 1.4.La imagen de la izquierda es de 256 x 256 pixeles cada pixel ocupa un
punto en el monitor. Mientras que la imagen de la derecha es de 32 x 32 pixeles
(cada pixel ocupa 64 puntos en el monitor).
2.1.1 MATLAB
MATLAB es un entorno de clculo tcnico de altas prestaciones para clculo numrico y
visualizacin. Integra:
Anlisis numrico
Clculo matricial
Procesamiento de seales
Grficos
En un entorno fcil de usar, donde los problemas y las soluciones son expresados como se
escriben matemticamente, sin la programacin tradicional. El nombre MATLAB proviene de
``MATrix LABoratory'' (Laboratorio de Matrices). MATLAB fue escrito originalmente para
proporcionar
un
acceso
sencillo
al
software
matricial
desarrollado
por
los
Estas son muy importantes para la mayora de los usuarios de MATLAB y son conjuntos de
funciones MATLAB que extienden el entorno MATLAB para resolver clases particulares de
problemas como:
Procesamiento de seales
Identificacin de sistemas
Implementacin de las matrices como elemento bsico del lenguaje, lo que permite una
gran reduccin del cdigo, al no necesitar implementar el clculo matricial.
Fig.1.5 MATLAB
2.1.2 Chehra
Chehra (que significa "cara" en Hindi) es un completamente automtico cara en tiempo real
y deteccin de ojos punto de referencia y software de seguimiento capaz de manejar las caras
bajo entorno natural incontrolada.
Ha sido desarrollado por Akshay Asthana y Stefanos Zafeiriou en el Imperial College de
Londres.
a) Blank GUI(Default)
Esta opcin grafica de usuario en blanco (viene predeterminada), nos presenta un
formulario nuevo, con el cual empezaremos a disear nuestro programa.
b) GUI with Uicontrols
Esta opcin presenta un ejemplo en el cual la masa, dada la densidad y el volumen, en
alguno de los dos sistemas de unidades. Podemos ejecutar este ejemplo y obtener
resultados.
c) GUI with Axes and Menu
Esta opcin es otro ejemplo el cual contiene el men File con las opciones Open, Print
y Close. En el formulario tiene un Pop men, un push button y un objeto Axes, podemos
ejecutar el programa eligiendo alguna de las seis opciones que se encuentran en el
men desplegable y haciendo click en el botn de comando.
d) Modal Question Dialog
Con esta opcin se muestra en la pantalla un cuadro de dialogo comn, el cual consta
de una pequea imagen, una etiqueta y dos botones Yes y No, dependiendo del botn
que se presione, el GUI retorna el texto seleccionado (la cadena de caracteres Yes o
No).
Para nuestro proyecto utilizaremos la primera opcin ya que se iniciara desde cero y se le dar
diseo a nuestro programa.
Para ello daremos click en la opcin Blank GUI (Default) con lo cual nos aparecer nuestro
entorno de diseo en GUI como el siguiente:
Una vez iniciada nuestra interfaz utilizaremos las herramientas que estn del lado derecho de
la pantalla como se muestra a continuacin:
Cada uno tiene funcin diferente, nosotros solo nos basaremos a 4 de estas funciones para
poder llevar a cabo nuestro sistema.
En la siguiente tabla se da una explicacin de todas las funciones y posteriormente
mostraremos cmo se utilizan con nuestro cdigo.
Control
Check box
Editable Text
Pop-up men
List Box
Push Button
Radio Button
Toggle Button
Slider
Static Text
Panel Button
Button Group
Valor de estilo
checkbox
Edit
popupmenu
Listbox
Pushbutton
Radio
Togglebutton
Slider
text
Descripcin
Indica el estado de una opcin o atributo.
Caja para editar texto
Provee una lista de opciones
Muestra una lista deslizable
Invoca un evento inmediatamente
Indica una opcin que puede ser seleccionada
Solo dos estados, on o off
Usado para representar un rango de valores
Muestra un string de texto en una caja
Agrupa botones como un grupo
Permite exclusividad de seleccin con los radio
button
1.1Tabla de funciones
Fig.1.12 Pushbutton
Daremos doble click y nos mostrara las propiedades (figura 1.13) Nos iremos a la opcin Tag
y borramos su contenido y escribiremos video que ser nuestro nombre de inicio en la interfaz.
Dentro del mismo asignaremos el nombre en la opcin String, borramos el contenido y
daremos el nombre de seleccionar_video.
Para aislar el botn se utilizara la opcin Panel, y de la misma forma dimos doble click nos
dirigimos a la opcin String y cambiamos el nombre a PROCESAR VIDEO (FRAMES) de tal
forma que nos quede de esta manera (Figura 1.14).
Esto nos ayudara a dar un ttulo a cada botn que se utilizara en la interfaz.
Una vez terminada esta opcin procedemos a introducir otro pushbutton que ser para abrir
la imagen a estudiar.
Iniciamos dando click en pushbutton, lo colocamos en nuestra interfaz y se realiza el mismo
paso como el botn anterior, solo que esta vez el nombre cambia a Seleccionar_Imagen. Y
agregaremos otro Panel con el nombre de IMAGEN DE ESTUDIO. (Figura 1.14).
Ahora asignaremos donde se ver la imagen ya con el estudio de puntos en el rostro. Para
eso nos dirigimos a las herramientas y utilizamos la opcin Axes, daremos click y la colocamos
en nuestra interfaz, despus daremos doble click y al abrir propiedades nos vamos a Tag y
colocamos el nombre de axImage. Agregamos otro Panel con el nombre de IMAGEN
PROCESADA. (Figura 1.15).
Fig.1.15 Axes
Enseguida colocaremos dos Text, el primer Text contendr las 7 emociones que se utilizaran
para cada imagen a estudiar y el segundo Text contendr el porcentaje de cada emocin.
Nos vamos a la opcin Text la pones en nuestra interfaz, le damos doble click, nos vamos a
la opcin String y colocamos las opciones que son Sorpresa, Alegra, Asco, Ira, Tristeza y
Miedo. Y en el segundo Text le asignaremos el nombre en el String de 0% que ser para
obtener el resultado. Aqu utilizamos otro Panel con el nombre de RESULTADOS DE
EXPRESION (Figura 1.16).
Una vez terminado esto pasaremos a colocar un Popupmenu que nos ayudara a saber la
distancia entre puntos que queremos saber dependiendo cada imagen y que nos dar tres
enfoques en el rostro con diferente patrn en el porcentaje.
Para ello nos dirigimos a la opcin Popupmenu damos click y la colocamos en nuestra
interfaz, ahora daremos doble click en el mismo y nos dirigimos a String, y asignaremos el
Av. Telecomunicaciones S/N, Col. Chinampac de Jurez, C.P. 09208
Iztapalapa, D.F., Tel. 5773-8210, e-mail:
informes@itiztapalapa.edu.mx
www.itiztapalapa.edu.mx
Fig.1.17 Puntos
Una vez generada completamente la interfaz a utilizar nos quedara de la siguiente manera
(Figura 1.18).
Procedemos a guardarla con el nombre de DETECTOR.fig esto nos permitir llamarla cuando
nos encontremos en el editor y demos correr a nuestro cdigo.
Elija salida de lnea de comandos para la interfaz grfica de usuario por defecto.
handles.output = hObject;
Actualizacin se encarga de la estructura
guidata(hObject, handles);
UIWAIT hace que espera la respuesta del usuario GUI (ver UIRESUME) uiwait
(handles.figure1);
Las salidas de esta funcin se devuelven a la lnea de comandos.
function varargout = GUI_OutputFcn(hObject, eventdata, handles)
Arreglo de celdas varargout para el retorno de argumentos de salida (ver VARARGOUT);
HObject manejar con la figura eventdata reservados que se definirn en una futura versin
de MATLAB se ocupa de la estructura con asas y los datos de usuario.
%Obtener predeterminado la salida de lnea de comandos de la estructura de asas
varargout{1} = handles. Output;
%Ejecuta el botn a presionar btnSelectImage.
function btnSelectImage_Callback(hObject, eventdata, handles)
% HObject maneja a btnSelectImage (ver GCBO )
% Eventdata reservados - que se definirn en una futura versin de MATLAB
% Se ocupa de la estructura con asas y los datos de usuario (vase guidata )
%Ejecuta durante la creacin del objeto, despus de ajustar todas las propiedades.
function uipanel1_CreateFcn(hObject, eventdata, handles)
% HObject maneja a uipanel1 (ver GCBO )
% Eventdata reservados - que se definirn en una futura versin de MATLAB
% Maneja vaco - mangos no se crea hasta que todos llaman CreateFcns
Dentro del editor aparece este cdigo que se representa cada herramienta que pusimos dentro
de la interfaz y que nos ayudara a colocar en cada opcin el cdigo que se desarroll y el
cdigo establecido Chehra, para la deteccin de mentiras y emociones.
Ahora se mostrara donde se colocara cada cdigo y al final del mismo se mostrara su funcin.
La primera parte de nuestro programa ser introducir el cdigo del programa Chehra con
algunas modificaciones para el completo uso del mismo. El cdigo se colocara en la opcin:
function varargout = GUI_OutputFcn(hObject, eventdata, handles)
%Arreglo de celdas varargout para el retorno de argumentos de salida ( ver VARARGOUT ) ;
% HObject manejar con la figura
% Eventdata reservados - que se definirn en una futura versin de MATLAB
Av. Telecomunicaciones S/N, Col. Chinampac de Jurez, C.P. 09208
Iztapalapa, D.F., Tel. 5773-8210, e-mail:
informes@itiztapalapa.edu.mx
www.itiztapalapa.edu.mx
ngulos
del
rostro
(65
imgPath=strcat(image_path,image_name);
[emotion, testOut, testIndices,I,landmarks]=f_annClassifyAnImage(imgPath);
%imshow(I);hold on;
puntos=landmarks{1,2};%image landmarks
c1=puntos{1}; c2=puntos{2}; o1=puntos{3}; o2=puntos{4}; n=puntos{5}; b=puntos{6};
all_landmarks=[c1;c2;o1;o2;n;b]; % puntos all-n(4,:)
testOut
end
list_emotion={'surprise','happiness','disgust','anger','sadness','fear'};
testOut=round(testOut*10000)/100;
textoPerformance={strcat(':',num2str(testOut(1)),'%');strcat(':',num2str(testOut(2)),'%');
strcat(':',num2str(testOut(3)),'%');strcat(':',num2str(testOut(4)),'%');strcat(':',num2str(tes
tOut(5)),'%');strcat(':',num2str(testOut(6)),'%')};
vari=findobj(gcbf, 'Tag','txtPerformance');
set(vari,'String',textoPerformance);
El cdigo Chehra contiene funciones establecidas por el mismo.
Nosotros solo adaptamos algunos cambios para nuestra interfaz y que al momento de leer la
imagen se genere los puntos correctamente y nos muestre el resultado en los Texts que
asignamos anteriormente.
Primera evaluacin:
Dentro de este cdigo se lee la imagen atravez de los enfoques, y se utiliza condiciones para
poder cambiar la evaluacin de la imagen, esto nos mostrara diferente puntos en el rostro
como se puede ver en la lnea de cdigo.
Cuando se lee se evala y el resultado se enva al Text que asignamos con el nombre de 0%
ya que en el se mostrara el nmero del resultado en porcentaje.
function[all_landmarks]= classifyImage(image_path,image_name,handles)
value = get(handles.popupmenu, 'Value');
if value==1
vari=findobj(gcbf, 'Tag','txtDescripcion');
set(vari,'String','ste enfoque usa 40 distancias');
main_features={'5.4' '1.1';'5.4' '1.2';'5.4' '1.3';'5.4' '1.4';'5.4' '1.5';'5.4' '2.1';'5.4' '2.2';'5.4'
'2.3';'5.4' '2.4';'5.4' '2.5';'5.4' '3U.1';'5.4' '3U.2';'5.4' '3U.3';'5.4' '3U.4';'5.4' '3L.1';'5.4'
'3L.2';'5.4' '4U.1';'5.4' '4U.2';'5.4' '4U.3';'5.4' '4U.4';'5.4' '4L.1';'5.4' '4L.2';'6U.1' '5.4';'6U.2'
'5.4' ;'6U.3' '5.4';'6U.4' '5.4';'6U.5' '5.4' ;'6U.6' '5.4' ;'6U.7' '5.4' ;'6L.4' '5.4' ;'6L.5' '5.4' ;'6L.6'
'5.4' ;'6L.7' '5.4' ;'6L.8' '5.4' ;'6U.10' '5.4' ;'6U.9' '5.4' ;'6U.8' '5.4' ;'6L.3' '5.4' ;'6L.2' '5.4' ;'6L.1'
'5.4' };
nna_name='nettr_w40distancesRafdCk6ClassSuHaDiAnSaFe_83ts_94all';
[testOut,
emotion_result,
fdistances,
all_landmarks]=f_nna_distances(image_path,image_name,nna_name,main_features);
Av. Telecomunicaciones S/N, Col. Chinampac de Jurez, C.P. 09208
Iztapalapa, D.F., Tel. 5773-8210, e-mail:
informes@itiztapalapa.edu.mx
www.itiztapalapa.edu.mx
Segunda evaluacion:
elseif value==2
vari=findobj(gcbf, 'Tag','txtDescripcion');
set(vari,'String','ste enfoque usa 20 distancias principales');
main_features={'3L.1' '3U.3';'3L.2' '3U.2';'4U.1' '2.1';'4L.2' '2.2';'4L.2' '4U.2';'5.1'
'2.1';'6U.3' '5.6';'6U.4' '5.7';'6U.7' '6U.1';'6L.4' '6U.6';
'6L.4' '6U.7';'6L.8' '6U.1';'6U.9'
'6L.6';'6L.3' '6U.5';'6L.3' '6U.7';'6L.3' '6U.8';'6L.2' '6U.4';'6L.2' '6U.9';'6L.1' '6U.2';'6L.1'
'6U.10'};
nna_name='nettr_w20distancesRafdCk6ClassSuHaDiAnSaFe_87ts_93all';
[testOut,
emotion_result,
fdistances,
all_landmarks]=f_nna_distances(image_path,image_name,nna_name,main_features);
Tercera evaluacion:
elseif value==3
vari=findobj(gcbf, 'Tag','txtDescripcion');
set(vari,'String','ste enfoque usa distancias y ngulos del rostro (65
caractersticas)');
imgPath=strcat(image_path,image_name);
[emotion, testOut, testIndices,I,landmarks]=f_annClassifyAnImage(imgPath);
%imshow(I);hold on;
puntos=landmarks{1,2};%image landmarks
c1=puntos{1}; c2=puntos{2}; o1=puntos{3}; o2=puntos{4}; n=puntos{5}; b=puntos{6};
all_landmarks=[c1;c2;o1;o2;n;b]; % puntos all-n(4,:)
testOut
end
Y por ltimo la asignacin al segundo Text que evaluara las emociones y nos dar el resultado
en el Command Windows, as como el nmero de la imagen de estudio.
list_emotion={'surprise','happiness','disgust','anger','sadness','fear'};
testOut=round(testOut*10000)/100;
textoPerformance={strcat(':',num2str(testOut(1)),'%');strcat(':',num2str(testOut(2)),'%');
strcat(':',num2str(testOut(3)),'%');strcat(':',num2str(testOut(4)),'%');strcat(':',num2str(tes
tOut(5)),'%');strcat(':',num2str(testOut(6)),'%')};
vari=findobj(gcbf, 'Tag','txtPerformance');
set(vari,'String',textoPerformance);
Una vez terminado el inicio de nuestro cdigo con el programa Chehra, procedemos a seguir
con las herramientas que utilizamos en nuestra interfaz para que se pueda leer la imagen y
estudiarla. A continuacin se iniciara con los pushbutton del video y la imagen.
El primer Pushbutton ser el del video, en l se har la funcin de cortar cuadro por cuadro
del video seleccionado ya que para el estudio de las emociones se requiere una imagen en
tiempo real (segundo a segundo), para mayor precisin.
El cdigo que se desarrolla se colocara dentro de la funcin de video como se muestra a
continuacin:
%Ejecuta el botn de prensa en vdeo .
function Video_Callback(hObject, eventdata, handles)
%hObject manejar de vdeo (ver GCBO)
% Eventdata reservados - que se definirn en una futura versin de MATLAB
% Se ocupa de la estructura con asas y los datos de usuario (vase guidata)
captura = tempname('C:/Users/cr7/Desktop/escuela/captura/');
mkdir(captura,'capturas')
mkdir(captura,'images')
[nombre,ruta]=uigetfile('*.mp4','ABRIR VIDEO');
shuttleVideo = VideoReader([ruta nombre]);
i=1;
while hasFrame(shuttleVideo)
img = readFrame(shuttleVideo);
filename = [sprintf('%03d',i) '.jpg'];
fullname = fullfile(captura,'images',filename);
imwrite(img,fullname) % Write out to a JPEG file (img1.jpg, img2.jpg, etc.)
i= i+10;
end
imageNames = dir(fullfile(captura,'images','*.jpg'));
imageNames = {imageNames.name}';
outputVideo = VideoWriter(fullfile(captura,'shuttle_out.avi'));
outputVideo.FrameRate = shuttleVideo.FrameRate;
open(outputVideo)
for ii = 1:length(imageNames)
img = imread(fullfile(captura,'images',imageNames{ii}));
writeVideo(outputVideo,img)
end
close(outputVideo)
shuttleAvi = VideoReader(fullfile(workingDir,'shuttle_out.avi'));
ii = 1;
while hasFrame(shuttleAvi)
mov(ii) = im2frame(readFrame(shuttleAvi));
ii = ii+1;
end
msgbox('Video Cargado Correctamente','DETECTOR DE MENTIRAS')
En estas lneas se crea un directorio en el que se guardaran las imgenes a cortar (frames), y
los nombres de las carpetas.
captura = tempname('C:/Users/cr7/Desktop/escuela/captura/');
mkdir(captura,'capturas')
mkdir(captura,'images')
i= i+10;
end
La siguiente lnea de cdigo guardara la imagen en la carpeta del directorio que asignamos al
principio, asi como un video que es el residuo de las imgenes y que nos mostrara que el video
se va leyendo cuadro a cuadro.
imageNames = dir(fullfile(captura,'images','*.jpg'));
imageNames = {imageNames.name}';
outputVideo = VideoWriter(fullfile(captura,'shuttle_out.avi'));
outputVideo.FrameRate = shuttleVideo.FrameRate;
open(outputVideo)
for ii = 1:length(imageNames)
img = imread(fullfile(captura,'images',imageNames{ii}));
writeVideo(outputVideo,img)
end
close(outputVideo)
Al final el video que se genera con las imgenes cortadas se guarda en el directorio asignado,
y se arroja un aviso de que el video y los frames son cargados correctamente.
shuttleAvi = VideoReader(fullfile(workingDir,'shuttle_out.avi'));
ii = 1;
while hasFrame(shuttleAvi)
mov(ii) = im2frame(readFrame(shuttleAvi));
ii = ii+1;
end
msgbox('Video Cargado Correctamente','DETECTOR DE MENTIRAS')
Procederemos a checar que el cdigo funciona y que las imgenes son cortadas
correctamente como se muestra a continuacin:
Al seleccionar el video le damos abrir y esperamos a que el video sea cortado (frames).para
ver que el video est siendo cortado nos vamos al destino donde se guardaran las imgenes
(Figura1.20).
Como se observa en la imagen anterior el cdigo esta correcto ya que corta segundo a
segundo y esta asignando un nombre a cada imagen.
Una vez terminado con el video procederemos a pasar con la seleccin de la imagen para ello
utilizaremos el siguiente Pushbutton al cual le asignamos el nombre de btnSelectImage,
dentro del cdigo indicaremos el llamado de la imagen y se la asignaremos al Axes.
% --- Ejecuta el botn de prensa en btnSelectImage.
function btnSelectImage_Callback (hObject, eventdata, handles)
% HObject manejar a btnSelectImage (ver GCBO)
% Eventdata reservados - que se definirn en una futura versin de MATLAB
% Se ocupa de la estructura con asas y los datos de usuario (vase guidata)
hold off;
addpath(genpath('./'));
global image_name;
global image_path;
[image_name,image_path] = uigetfile({'*.jpg';'*.png';'*.tiff';'*.gif'},'Selecciona la imagen');
if(~isempty(image_name)&&~isempty(image_path))
imgPath=strcat(image_path,image_name);
imshow(imgPath); hold on;
[all_landmarks]=classifyImage(image_path,image_name,handles);
plot(all_landmarks(:,1), all_landmarks(:,2),'gx','MarkerSize',2.5);
vari=findobj(gcbf, 'Tag','axImage');
set(vari,'units','normalized','outerposition',[0 1 1 1]);
end
El cdigo que se utiliza se interpreta de la siguiente manera:
-Las primeras 4 lneas de cdigo son el inicio, esto indica que son las que utilizaremos como
variables constantes que darn un valor entero dentro del cdigo.
hold off;
addpath(genpath('./'));
global image_name;
global image_path;
La siguiente lnea es el comando de llamado de la imagen a un directorio de la computadora
o ya sea a la carpeta donde se encuentre, tambin se genera el tipo de formato en el que
buscara la imagen.
uigetfile({'*.jpg';'*.png';'*.tiff';'*.gif'},'Selecciona la imagen');
Enseguida viene una condicin la cual funcionara para generar la imagen y al darle click en
abrir la guardara y mostrara dentro del axes que ser nuestra salida (nombre que se le asigno
en el axes anterior axImage).
Av. Telecomunicaciones S/N, Col. Chinampac de Jurez, C.P. 09208
Iztapalapa, D.F., Tel. 5773-8210, e-mail:
informes@itiztapalapa.edu.mx
www.itiztapalapa.edu.mx
if(~isempty(image_name)&&~isempty(image_path))
imgPath=strcat(image_path,image_name);
imshow(imgPath); hold on;
[all_landmarks]=classifyImage(image_path,image_name,handles);
plot(all_landmarks(:,1), all_landmarks(:,2),'gx','MarkerSize',2.5);
vari=findobj(gcbf, 'Tag','axImage');
set(vari,'units','normalized','outerposition',[0 1 1 1]);
end
Terminada la condicin corremos la interfaz para ver que no exista error, de tal manera que al
presionar el botn Seleccionar_Imagen nos mande directo al buscador para la imagen
(figura1.21).
Esto indica que nuestro cdigo funciona correctamente. Ahora procederemos a la asignacin
del Popupmenu que nos ayudara a que la imagen sea leda 3 veces ya que en el inicio del
cdigo se le asigna nombre para poder tener varias instancias en los puntos a estudiar del
rostro y sin este no podr reconocer el cdigo Chehra, ni la imagen.
isequal(get(hObject,'BackgroundColor'),
En el primer Popupmenu leeremos la imagen con una condicin que indica que si no se
encuentra una imagen no podr asignar los puntos y nos retornara a un error.
global image_name;
global image_path;
if(~isempty(image_name)&&~isempty(image_path))
[all_landmarks]=classifyImage(image_path,image_name,handles);
plot(all_landmarks(:,1), all_landmarks(:,2),'gx','MarkerSize',2.5);
end
El segundo Popupmenu solos nos dar una advertencia que es un retorno lgico del primer
if que utilizamos en el primero, no nos confundamos es la misma lnea de cdigo solo que se
les asigna diferente posicin debido a las opciones que se dan.
if
ispc
&&
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
isequal(get(hObject,'BackgroundColor'),
El primer paso es llamar a nuestra interfaz (figura1.22), una vez ejecutada abriremos un video
en especfico (Figura 1.23) como se muestra a continuacin:
Una vez seleccionado el video lo abrimos y esperamos un tiempo para que el video sea
procesado y cortado (frames).Pasado el tiempo de espera vamos a la carpeta donde se
guardaron las imgenes del video ya procesado:
Una vez seleccionada la imagen esperaremos el proceso de la misma y cuando este cargada
se mostrara en pantalla con un mensaje de imagen cargada correctamente tal como se
muestra a continuacin:
Pero para saber si funciona correctamente se hicieron diferentes pruebas en varios sujetos
para ver el resultado de la emocin con los que se muestran a continuacin:
Fig.1.27 Sujeto 1
Fig.1.28 Sujeto 2
5.1 Resultados
Durante las pruebas de nuestro sistema se propuso utilizar un producto comestible en este
caso el producto era mango deshidratado con ello tendremos pruebas de gusto olor sabor y
textura a 100 personas. Con ellos podremos hacer una grfica de los datos que valla arrojando
nuestro sistema e ir comparndolo con las respuestas de nuestros candidatos esto es con el
fin de saber que tan factible resulta y que porcentaje tiene en cuanto a la efectividad del
sistema.
Primeramente debemos saber las opciones que se plasmaban en nuestra encuesta para as
saber que contestaron nuestros candidatos:
1 .MALO
2 .REGULAR
3 .BUENO
4 .MUY BUENO
5 .EXCELENTE
Pero para hacer ms factible el resultado en nuestro sistema, fueron monitoreados sin su
permiso, es decir, fueron grabados en todo momento para que as la expresin no fuera
afectada o simularan otra cosa.
Una vez terminada la prueba nos dirigimos a verificar los videos y las encuestas, se verifico a
las 100 personas que probaron el alimento.
Se realiz el proceso con el sistema con cada sujeto y al final comparamos su respuesta con
la expresin. Para dar un balance de las 100 personas sometidas al sistema se propuso
realizar grficas para tener una estadstica de respuestas con expresin. Pasemos a verificar
las grficas y dar los resultados de nuestra prueba.
En la siguiente grafica (Figura 1.1) nos muestra el 100% como las personas que hicieron la
prueba del producto y las opciones que la persona puso, lo que representa que sin aplicar el
sistema:
RESULTADO DE ENCUESTA
100%
90%
80%
70%
60%
50%
50%
40%
30%
20%
10%
0%
20%
5%
A.MALO
20%
5%
2.REGULAR
3.BUENO
4.MUY BUENO
4.EXCELENTE
Las 100 personas sin ser sometidas al sistema respondieron de acuerdo a lo que sentan en
el momento ahora les mostraremos la grfica cuando fue aplicado el sistema y veremos si
las cifras cambian. (Se analizaron las respuestas con la expresin pero debido al nmero de
personas solo se pondr la grfica).
En la siguiente grafica (Figura1.2) nos muestra que hubo cambios en el porcentaje ya con la
aplicacin del sistema con lo cual quedara de la siguiente manera:
Del 5% de las personas que respondieron que era malo subi a 23% lo que quiere
decir que el 18% minti en cuanto a su respuesta original
Del 5% de las personas respondieron que era regular subi a 25% lo cual quiere decir
que el 20% minti en cuanto a su respuesta original.
Del 50% de las personas que respondieron que era bueno bajo a 35% lo que quiere
decir que el 15 % minti en cuanto a su respuesta original.
Del 20% de las personas respondieron que era muy bueno bajo a 9% con lo que
quiere decir que 11% minti en cuanto a su respuesta original.
El 20% de las personas respondieron que era excelente bajo a 8% con lo que quiere
decir que 12% minti en cuanto a su respuesta original.
35%
23%
25%
9%
0%
8%
Lo que nos da como resultado que el 76% de las personas minti en cuanto a la respuesta
que originalmente dio en la encuesta. Por lo que podemos decir que el sistema funciona
correctamente y que nos es factible en un 80 % de probabilidad de ser exacto.
5.2 Conclusiones
En nuestro desarrollo del proyecto se analiz cada uno de los procesos de la interfaz grfica
con su respectivo cdigo. Nuestro proceso fue probado mediante entrevistas y encuestas de
productos en vas de salir al mercado, con lo cual hara ms exacto saber si el comprador o
en este caso el sujeto a probar el producto contesta de acuerdo a una seria de preguntas
hechas en ese momento. Durante la implantacin del sistema nos encontramos con varias
inquietudes en parte de la aplicacin, los cuestionamientos eran que tan efectiva era la
herramienta y que tan exacta seria. Para responder a dicho cuestionamiento se realizaron
pruebas con varios individuos que se sometieron a una encuesta previa. Con lo cual nos dio
un 90% de probabilidad de que el sistema daba el resultado correcto, y as fue llevado a campo
para ser probado en reas de productos.
En cuanto al funcionamiento del sistema podemos decir que es una herramienta capaz de
detectar emociones y mentiras en tiempo real, ya que podemos ver que las emociones son
difciles de percibir a simple vista, nuestro sistema da la emocin en un porcentaje de 1 a 100
con lo cual podemos tener un diagnstico ms preciso y dar un buen resultado. Le podemos
dar muchas aplicaciones ya sea en una entrevista de trabajo o en alguna investigacin con
respecto al rea de investigacin de un criminal, entre otros.
ANEXO
Herramientas Fsicas
Piezas del Soporte Oftalmolgico (SolidWords)
1.1 Diseo de la base de la donde se colocara la cara del sujeto.
Slidos
Nombre de documento
y referencia
Tratad
o
como
Saliente-Extruir4
Slido
Propiedades
volumtricas
Masa:7.55856 kg
Volumen:0.00096164
8 m^3
Densidad:7860
kg/m^3
Peso:74.0739 N
Ruta al documento/Fecha de
modificacin
C:\Users\cr7\Desktop\SOPOR
TE OFTAL\base boca
2.SLDPRT
Oct 13 22:08:16 2015
Referencia de modelo
Propiedades
Componentes
Tipo
VON: Tensin de von Mises
Mn.
0.983779 N/m^2
Nodo: 17
Mx.
1686.6 N/m^2
Nodo: 62
Nombre
Displacement
Tipo
URES: Desplazamiento resultante
Mn.
0 mm
Nodo: 35
Mx.
3.38633e-006 mm
Nodo: 148
Nombre
Tipo
Mn.
Mx.
Nombre
Factor of Safety
Tipo
Tensin de von Mises
mx.
Mn.
173130
Nodo: 62
Mx.
2.96815e+008
Nodo: 17
Slidos
Nombre de documento y
referencia
Tratado como
Propiedades volumtricas
Ruta al
documento/Fec
ha de
modificacin
Redondeo1
Slido
Masa:0.925927 kg
Volumen:0.000342936 m^3
Densidad:2700 kg/m^3
Peso:9.07408 N
C:\Users\cr7\De
sktop\SOPORT
E OFTAL\base
boca.SLDPRT
Oct 13 21:59:43
2015
Referencia de modelo
Propiedades
Nombre:
Tipo de modelo:
Criterio de error
predeterminado:
Lmite elstico:
Lmite de
traccin:
Nombre
Displacement
Tipo
URES: Desplazamiento resultante
Componentes
Aleacin 1060
Isotrpico
elstico lineal
Tensin mxima
de von Mises
2.75742e+007
N/m^2
6.89356e+007
N/m^2
Mn.
0 mm
Nodo: 33
Slido
1(Redondeo1)(base
boca)
Mx.
0.00019813 mm
Nodo: 799
Nombre
Factor of Safety
Tipo
Tensin de von Mises mx.
Mn.
716.635
Nodo: 95
Mx.
1.03151e+006
Nodo: 12783
Nombre
Stress
Tipo
VON: Tensin de von Mises
Mn.
26.7318 N/m^2
Nodo: 12783
Mx.
38477.3 N/m^2
Nodo: 95
1.3 Diseo de un tubo para el soporte de la base de la boca y la barra mvil del mismo.
Slidos
Nombre de documento
y referencia
Tratad
o
como
Cortar-Extruir1
Slido
Propiedades
volumtricas
Masa:0.18555 kg
Volumen:6.87223
e-005 m^3
Densidad:2700
kg/m^3
Peso:1.81839 N
Ruta al documento/Fecha de
modificacin
C:\Users\cr7\Desktop\SOPOR
TE OFTAL\base tubo.SLDPRT
Oct 16 09:25:21 2015
Referencia de modelo
Nombre
Stress
Propiedades
Componentes
Slido
1(CortarExtruir1)(base
tubo)
Tipo
VON: Tensin de von Mises
Mn.
31.9447 N/m^2
Nodo: 5227
Mx.
122.468 N/m^2
Nodo: 601
Nombre
Tipo
Mn.
Mx.
Displacement URES: Desplazamiento resultante 0 mm
3.64213e-007 mm
Nodo: 153 Nodo: 9419
Slidos
Nombre de documento y
referencia
Saliente-Extruir2
Tratad
o como
Slido
Referencia de modelo
Propiedades
volumtricas
Masa:0.0449824
kg
Volumen:4.41004e
-005 m^3
Densidad:1020
kg/m^3
Peso:0.440828 N
Ruta al documento/Fecha de
modificacin
C:\Users\cr7\Desktop\SOPORT
E OFTAL\sostenedor.SLDPRT
Oct 20 11:41:15 2015
Propiedades
Componentes
Nombre
Stress
Tipo
VON: Tensin de von
Mises
Mn.
0.00189059 N/m^2
Nodo: 14638
Mx.
20184.4 N/m^2
Nodo: 14829
sostenedor-SimulationXpress Study-Tensiones-Stress
Nombre
Displacement
Tipo
URES: Desplazamiento
resultante
Mn.
0 mm
Nodo: 1
Mx.
2.76936e-005
mm
Nodo: 474
Nombre
Tipo
Mn.
Mx.
sostenedor-SimulationXpress Study-Desplazamientos-Displacement
Nombre
Deformation
Tipo
Forma deformada
sostenedor-SimulationXpress Study-Desplazamientos-Deformation
Tratad
o como
Slido
Propiedades
volumtricas
Masa:0.0240035
kg
Volumen:3.05388e
-006 m^3
Densidad:7860
kg/m^3
Peso:0.235234 N
Ruta al documento/Fecha de
modificacin
C:\Users\cr7\Desktop\SOPORT
E OFTAL\tornillo
mariposa.SLDPRT
Oct 22 15:59:34 2015
Referencia de modelo
Propiedades
Componentes
Slido
Nombre: 201 Acero
inoxidable
1(Redondeo2)(torn
recocido (SS)
illo mariposa)
Tipo de modelo: Isotrpico
elstico lineal
Criterio de error Tensin mxima
predeterminado: de von Mises
Lmite elstico: 2.92e+008 N/m^2
Lmite de traccin: 6.85e+008 N/m^2
Nombre
Stress
Tipo
VON: Tensin de von
Mises
Mn.
0.00283634 N/m^2
Nodo: 11694
Mx.
111863 N/m^2
Nodo: 16126
Nombre
Displacement
Tipo
URES: Desplazamiento
resultante
Mn.
0 mm
Nodo: 1
Mx.
4.20885e-007
mm
Nodo: 13048
Nombre
Tipo
Mn.
Mx.
Nombre
Factor of Safety
Tipo
Tensin de von Mises
mx.
Mn.
2610.34
Nodo: 16126
Mx.
1.0295e+011
Nodo: 11694
6.1 Bibliografa
6.1.1 Libros
6.1.2 Internet
https://sites.google.com/site/chehrahome/
http://www.mathworks.com
http://www.lawebdelprogramador.com/
https://www.youtube.com/watch?v=2hEKIfoYrGo
https://www.dspace.espol.edu.ec/bitstream/123456789/10740/11/MATLAB_GUIDE.pd
f