Facultad de Ingenieria: Escuela Académico Profesional de Ingeniería de Sistemas
Facultad de Ingenieria: Escuela Académico Profesional de Ingeniería de Sistemas
Facultad de Ingenieria: Escuela Académico Profesional de Ingeniería de Sistemas
AUTOR:
Lopez Roca, Kevin Alex
ASESOR:
Mg. Rivera Crisostomo, Rene
LÍNEA DE INVESTIGACIÓN:
Sistemas de Información y Comunicaciones
LIMA – PERÚ
2018
II
Dedicatoria
III
Agradecimiento
IV
V
VI
Resumen
Este trabajo de investigación tiene como objetivo el desarrollo de una “Aplicación móvil de
interpretación del lenguaje de señas peruanas para discapacitados auditivos en la Asociación
de Sordos de la Región Lima”, y determinar el efecto de la aplicación del mismo para dar
una explicación sobre las deficiencias que existen en el tiempo de comunicación con las
personas sordas y el costo de contratación de intérpretes que conlleva el proceso de
comunicación.
Para realizar el presente trabajo de investigación se tomó como población de las misma, las
8 personas sordas que son socios activos. Se usó como técnica de recopilación de datos la
observación que hizo uso como instrumento una ficha de registros.
De los resultados obtenidos con esta investigación se llegó a la conclusión que el aplicativo
móvil permite detectar mediante reconocimiento óptico de patrones el alfabeto dactilológico
del lenguaje de señas y que el sordo pueda formar oraciones deletreando las palabras para
que el aplicativo móvil pueda interpretarlo. De esa forma lograr entender y lograr
comunicarse con las personas sordas. Su eficacia para interpretar oraciones ha sido
demostrada con experimentación en situ en un ambiente controlado. En cuanto al
rendimiento del aplicativo móvil se concluye que solo la cámara del dispositivo permite
reconocer símbolos a partir de imágenes previamente aprendidas en un ambiente controlado,
por lo que puede ser la base para futuras investigaciones. También se ha determinado una
disminución en promedio del tiempo de comunicación con una persona sorda en una
reducción del 12% (4 a 6 minutos) con respecto de 8 a 10 minutos que se demora entender
a una persona sorda. Además, se redujo el costo promedio de contratación de intérpretes para
el proceso de comunicación de la persona sorda que le costaba contratar semanalmente entre
40 a 50 soles, con el aplicativo se logra reducir a un rango representativo de 0 a 10 soles.
VII
Abstract
This research work aims to develop a "Mobile application of interpretation of the Peruvian
sign language for hearing impaired in the Association of the Deaf in the Lima Region", and
determine the effect of the application of the same to give an explanation on the deficiencies
that exist in the time of communication with deaf people and the cost of hiring interpreters
involved in the communication process.
In order to carry out the present research work, the 8 deaf people who are active partners
were taken as their population. The observation that used a record card as an instrument was
used as a data collection technique.
From the results obtained with this research it was concluded that the mobile application
allows detecting by means of optical pattern recognition the sign language alphabet and that
the deaf man can form sentences by spelling the words so that the mobile application can
interpret it. In this way, we can understand and achieve communication with deaf people. Its
effectiveness in interpreting sentences has been demonstrated through on-site
experimentation in a controlled environment. Regarding the performance of the mobile
application, it is concluded that only the camera of the device allows to recognize symbols
from images previously learned in a controlled environment, so it can be the basis for future
research. An average decrease in communication time with a deaf person has also been
determined in a reduction of 12% (4 to 6 minutes) with respect to 8 to 10 minutes that a deaf
person is delayed in understanding. In addition, the average cost of hiring interpreters was
reduced for the deaf person's communication process, which cost him to contract weekly
between 40 to 50 soles, with the application being reduced to a representative range of 0 to
10 soles.
VIII
INDICE GENERAL
Dedicatoria III
Agradecimiento IV
Resumen VII
Abstract VIII
INDICE DE TABLAS XI
INDICE DE FIGURAS XII
I. INTRODUCCIÓN 13
1.1 Realidad Problemática 14
1.2 Trabajos previos 17
1.2.1 Antecedentes Internacionales 17
1.2.2 Antecedentes Nacionales 19
1.3 Teorías Relacionadas al Tema 20
1.3.1 Variable Independiente: Aplicación Móvil 20
1.3.2 Variable Dependiente: Interpretación de Lenguaje de Señas 30
1.4 Formulación del Problema 40
1.4.1 Problemas General 40
1.4.2 Problemas Específicos 40
1.5 Justificación del estudio 41
1.6 Hipótesis 42
1.6.1 Hipótesis General 42
1.6.2 Hipótesis Especificas 42
1.7 Objetivos 42
1.7.1 Objetivo General 42
1.7.2 Objetivo Especifico 43
II. METODO 44
2.1 Diseño de la investigación 45
2.2 Variables, operacionalización 46
2.3 Población y Muestra 50
2.3.1 Población 50
III. RESULTADOS 53
3.1. Análisis Descriptivo 54
IV. DISCUSIÓN 70
V. CONCLUSIÓN 72
IX
VI. RECOMENDACIONES 74
VII. REFERENCIAS 76
ANEXOS 80
Anexo 1: Matriz De Consistencia
Anexo 2: Cronograma
Anexo 3: Instrumento De Recolección De Datos
Anexo 4: Instrumento De Medición De La Variable Dependiente
Anexo 5: Aspectos Administrativos
Anexo 6: Aspectos Tecnicos
Anexo 7: Curso De Lenguaje De Señas Peruanas
Anexo 8: Analisis Y Diseño
Anexo 9: Codigo Fuente
Anexo 10: Acta De Aprobación De Originalidad De Los Trabajos Académicos De La UCV
Anexo 11: Pantallazo Turnitin
Anexo 12: Autorización De Publicación De Tesis
Anexo 13: Autorización De La Versión Final Del Trabajo De Investigación
X
INDICE DE TABLAS
XI
INDICE DE FIGURAS
XII
I. INTRODUCCIÓN
13
1.1 Realidad Problemática
La población con discapacidad inscrita son 157 mil 355 personas de las cuales
los inscritos por discapacidad auditiva son 22 674 que representan el 14,4% de
inscritos de ahí solo 10 867 personas tienen discapacidad auditiva severa.
Además, se refleja que la mayor concentración está en Lima Metropolitana con
6 mil 962 personas hasta la fecha del 31 de agosto del 2016. La situación de las
personas con discapacidad auditiva en el Perú que se refleja en el sector de
Educación Básica son el 66.28% de la Población se encuentra en Escuelas
Especializadas y el 33.72% en Escuelas Inclusivas, recalcando que por primera
vez se están incluyendo intérpretes de Lenguaje de Señas Peruanas en las
Escuelas Especializadas. De tal forma se puede afirmar que solo la Población
Sorda en etapa escolar básica se beneficia de los intérpretes que amoldan el
lenguaje oral al señado según CONADIS (Consejo Nacional para la Integración
de la Persona con Discapacidad)
14
Se estima que en el Perú hay solo 23 intérpretes calificados y reconocidos por
ASISEP en el año 2015 (Asociación de intérpretes y guías de intérpretes de
lengua de señas del Perú), Existen intérpretes empíricos que aprendieron por
algún amigo o familiar sordo, los cuales deben de especializarse ya que no
aplican técnicas de interpretación (Isabel Rey Clemente, presidenta de ASISEP).
El 15 de agosto del 2017 fue aprobada mediante Decreto Supremo la Ley que
Otorga el Reconocimiento Oficial a la Lengua de Señas Peruanas con la finalidad
de establecer condiciones de igualdad, protección y realización para las personas
discapacitadas, a su vez promueve la inclusión plena y efectiva en la sociedad,
economía, tecnología, cultura y política; disponiendo que se reconoce la lengua
de señas peruanas como lengua predominante para las personas sordas en el
Perú, aunque no es obligatorio. Y cabe la posibilidad a la elección de tros
métodos de comunicación en la vida cotidiana de las personas sordas. (Ley Nº
29535, que Otorga el Reconocimiento Oficial a la Lengua de Señas Peruanas)
15
una determinada solicitud ante una entidad pública de esta forma le es difícil
acceder a servicios sociales que el Estado Peruano nos brinda como ciudadanos.
Además, la presidenta de la Asociación de Sordos menciona que los asociados
generalmente tienen trabajo de actividad manual como jardinería, orfebrería,
procesos mecánicos, mecanografía, etc. De este modo les imposibilita acceder a
contratar servicios de un intérprete ya que su condición económica no les
favorece.
16
1.2 Trabajos previos
17
conclusión se obtuvo los siguientes datos: al realizar el sistema en un sistema
operativo base como es Microsoft Windows se aprovecha el narrador para
leer el texto asociado a la seña identificada, en la traducción se determinó que
el numeró de fotogramas de captura deberá ser mayor o igual a cero ya que
habría una sobrecarga de datos cuando la persona discapacitada se mueve a
mayor velocidad de la recomendada todo ello con la finalidad de compartir la
esencia del traductor de señales y el rol de apoyo para las personas
discapacitadas auditivos.
18
de entrada hasta obtener una respuesta que será visualizada en pantalla del
dispositivo móvil con la finalidad de no saturar recursos del dispositivo
móvil. Como conclusión se logró identificar que el aplicativo solo puede
reconocer imágenes previamente aprendidas, si no las reconoce el aplicativo
no arrojará resultado por lo que la investigación se puede tomar como base
para futuras aplicaciones que reconozcan palabras completas, la variación de
iluminación y la variación de color de fondo pueden provocar imposibilidad
para reconocer ciertas imágenes, las letras que requieren movimiento no
podrán identificarse ya que dependerán de reconocimiento de movimiento, se
aplicó una estructura de 3 capas con la finalidad de mejorar la velocidad de
respuesta dos de los niveles se encuentran en un web service, se determinó
que la precisión de la respuesta no depende de la resolución de la cámara ya
que la imagen capturada pasa por un proceso para luego convertir en bits.
19
de personas sordas en la inserción laboral con el sistema actual el 15.4%
trabaja y con el sistema propuesto el 20.3% trabaja, aumentando en un 4.9%
la inserción laboral en las personas sordas, los costos de contratación de
traductores de señas (semanal) con el sistema actual el 21.1% paga entre 40
– 50 nuevos soles y con el sistema propuesto el 27.6% paga entre 20 – 30
nuevos soles, reduciendo el costo de contratación de traductores de señas.
Concluyendo, el sistema mejoró significativamente la comunicación de las
personas sordas en la Asociación de sordos de La Libertad.
1.3.1.2.1 Android
20
Características de Android
21
• Nivel de seguridad alto ya que las aplicaciones se encuentran aisladas
unas de otras porque disponen de una serie de permisos que limitan su
rango de actuación.
• Optimización de recursos por baja potencia y/o baja memoria.
• Calidad de gráficos de alta definición en sonido también por la gran
variedad de formatos soportados.
1.3.1.3.1 OpenCV
22
• Imagen de Mapa de Bits:
Conformada por una grilla de celdas. Estas celdas a su vez se representan
como píxeles, asignándoles un valor de color e iluminación propias. Es por
ello que cuando se observa la totalidad del conjunto de celdas, ellas nos dan
la percepción de un archivo de imagen continua en tono.
• Imágenes Vectoriales:
Son llamados gráficos orientados a objetos, de tamaño pequeño comparado
con los de tipo mapas de bits. Ya que estos organizan la información de una
imagen de forma simple ya que se basa en la generación de objetos en base
a trazos geométricos determinados por cálculos matemáticos. En forma que
estos gráficos puedan ser identificadas en base a coordenadas de una línea
guardada como referencia.
• Manipulación de Contraste:
Las variaciones locales del brillo, incrementan el cambio de luminosidad
entre zonas más oscuras o más claras, de esta forma se logra simular un
enfoque de imagen mas clara. La finalidad es mejorar unas zonas
perjudacando otras para así distanciar más los píxeles con valores bajos o a
la inversa.
• Eliminación de Ruido:
Es el método de eliminar valores, dependiendo del sensor de la cámara o el
medio de transmisión de señal, siempre el ruido digital se manifiesta
generando píxeles que toman valores de color gris que difiere de los píxeles
vecinos.
23
• Realce de Bordes:
Consiste en transformar una imagen de en forma de mostrar sólo el detalle
de bordes o fronteras. Este efecto es lo opuesto a la eliminación de ruido,
resaltando los píxeles de gris distinto a los contiguos.
• Detección de Bordes:
Es una característica útil que se encuentra en una imagen, la
constituyen los bordes, ya que se utilizan para definir los límites entre
sí y el fondo de la imagen. La técnica ideal para la detección de bordes
es binarizar la imagen de manera que se representen los píxeles en un
bit (0 o 1), ya que sea completamente negro o completamente blanco,
de esta manera los bordes quedarán completamente marcados.
• Texturas:
Es una de las características importantes en la segmentación,
identificación de objetos de interés en una imagen. Es una
característica de difícil definición ya que está definida mediante la
intensidad, regularidad, rugosidad, grosor, densidad, uniformidad y
direccionalidad de medidas discretas en el tono de los píxeles y de sus
relaciones espaciales.
• Detección de movimiento:
Es un tipo de características que apoyan a la segmentación ya que los
puntos del mismo objeto presentan velocidades semejantes. Como
pueden ser: el movimiento de la cámara, de objetos, cambios de
iluminación, cambios de estructura, forma o tamaño del objeto.
24
como propiedad básica los valores de gris que diferencia discontinuidad o
similitud entre los pixeles vecinos.
• Exploración. -
Es la fase por el cual, se plantean las historias de usuario por los
clientes como primera versión del entregable de producto. También el
equipo de trabajo se va familiarizando con herramientas, tecnologías
y buenas prácticas que se emplearán en el proyecto. Toma pocas
semanas la fase de exploración ya que depende del tamaño y
familiaridad con la que se puedan adaptar los programadores con la
tecnología.
25
• Planificación de la Entrega. -
Es la fase donde el cliente formula prioridades en cada historia de
usuario, y correspondientemente, los programadores hacen una
estimación de esfuerzo necesario para lograr presentar los entregables.
Se debe tomar acuerdos sobre el contenido del primer documento
entregable. La planificación se puede basar mediante el tiempo o
alcance. Si se basa en el tiempo la velocidad del proyecto toma el
papel de establecer unas horas adicionales para que se pueda
implementar previo a una fecha determinada o cuánto tiempo tomara
implementar un conjunto de historias. Si se basa en el alcance se
divide la suma de puntos de historias de usuario escogidas entre la
velocidad del proyecto obteniendo así el número de iteraciones
necesarias para su implementación.
• Iteraciones. -
Es la fase que incluye muchas iteraciones del sistema antes de ser
entregado. La primera iteración se intenta establecer la arquitectura
del sistema, para que al final de la última iteración el sistema quede
listo para entrar en producción. Para ello deberá tomarse en cuenta un
Plan de la Iteración que son las historias de usuarios no abordadas,
agilidad del proyecto, pruebas de aceptación no superadas, tareas no
terminadas en la iteración anterior. Todo el trabajo de la iteración es
expresado en tareas de programación de modo que sea asignada cada
programador responsable, pero llevadas a cabo por parejas de
programadores.
• Producción. -
Es la fase que requiere de pruebas y testeo previo a que el sistema sea
trasladado al ambiente del cliente.
• Mantenimiento. -
En esta fase se versionan las fases, mientras se encuentra el sistema
en producción. Esto requiere actividades de soporte al cliente.
26
• Muerte del Proyecto. -
En esta fase el cliente se queda sin historias que sean incluidas al
sistema de ese modo se satisfacen las necesidades del cliente como la
confiabilidad y rendimiento del sistema. Generando así la
documentación definitiva del sistema.
27
el cliente define el valor del negocio, Para lograr la implementación
el programador debe estimar esfuerzos, además el cliente acorde a sus
prioridades y tiempo debe decidir lo que desea construir para quie
finalmente el programador pueda construir el valor de negocio que
luego este proceso será iterativo.
• Prácticas, la reducción de costos supone que la metodología ágil XP
está comprendida para disminuir el costo del cambio a lo largo del
proyecto, lo suficiente para que el diseño evolutivo funcione. XP se
basa en el crecimiento paulatino del costo del cambio y con un
comportamiento asintótico.
PRÁCTICA 3: Metáfora
Proponer el uso de metáforas haciendo una comparativa entre una
funcionalidad del sistema y la vida real.
28
PRÁCTICA 5: Refactización
Se entiende como una técnica de modificar el código fuente de un software
sin afectar a su comportamiento externo, de tal modo que al desarrollar
nuevas funcionalidades impedir las redundancias.
PRÁCTICA 8: Testing
Según lo propuesto por esta metodología se establecen tres tipos de test: Test
de Integración, Aceptación, Unitarios.
29
PRÁCTICA 11: Integración continua
Propone que todo el código encuentre un repositorio común en el cual deban
administrarse las versiones previo testeo con la finalidad de verificar lo nuevo
y que no “rompa” con lo anterior.
30
Se utiliza generalmente 4 áreas del cuerpo:
• Cabeza
• Tronco
• Cuello
• Brazos
2. Configuración de las manos
Es la forma en que se coloca las manos al realizar una seña, o las posiciona
para expresar alguna palabra. Se pueden dividir según configuración (actos),
postura y manos:
Según configuración. -
31
4. Orientación de las manos
Es la relación que se da entre la posición de la mano respecto al cuerpo de la
persona que habla en señas: las cuales pueden ser:
Manos paralelas al respecto del cuerpo, manos horizontales con respecto al
cuerpo, manos oblicuas con respecto al cuerpo, los dedos hacia abajo con
respecto al cuerpo, etc.
5. Punto de contacto
Se refiere a la parte de la mano principal cuando hace contacto con una parte
del cuerpo, se realizan como apoyo en los gestos dinámicos que se realizan a
nivel de la mano, codo, muñeca.
6. Plano
Se refiere al punto situado delante de la persona que se comunica, además se
percibe como la distancia de la mano con respecto al cuerpo al realizar la
seña. Se dividen en 4 planos:
• 1er plano: Se realiza en el propio cuerpo
• 2do plano: Se realiza a corta distancia del cuerpo. En este plano se
realizan la gran mayoría de señas.
• 3er plano: Es usado por la dactilología. (Abecedario de señas)
• 4to plano: Es la zona más lejana del cuerpo del que hace la seña.
7. Componentes no manuales
Esta comprendido por expresiones del rostro, como movimiento de labios,
cabeza, que se realizan de forma paralela a la configuración de las manos.
1.3.2.1 Dactilología
32
Figura 1. Abecedario usado por la dactilología
Creada por la comunidad sorda del Perú, originaria lengua peruana que posee
como todas las lenguas, identidad, valores y cultura de usuarios (I Coloquio
Internacional sobre la Lengua de Señas Peruanas, 2016, p.1).
33
1.3.2.3 Interpretación del Lenguaje de Señas
1.3.2.3.1 Interpretar
34
1.3.2.3.1.2 Tipos de Interpretación
35
1.3.3 Comunicación de discapacitados auditivos
Se define como sistema visual de símbolos escritos que sirven como canal de
comunicación para las personas con sordas. Siendo sólo un canal de los muchos que
existen con el fin de eliminar la brecha de interacción y comunicación entre sordos y
oyentes no sólo a nivel local, sino también universal (Muñoz Ramírez, Ana, 2014).
36
El término “sordo” es correcto, porque la persona con discapacidad auditiva
tiene las mismas capacidades, facultades de una persona oyente, con la única
limitación de que no escucha.
Este proceso se dividirá en clasificadores (etapas) las cuales serán medibles a partir
de la dimensión de estudio Rendimiento, estas son:
37
Las etapas se establecieron acorde la metodología de Stokoe, de ahí el investigador
utilizará el aspecto principal de configuración de las manos para el reconocimiento
de lenguaje de señas las cuales nos brindan un constructo para ser medible a partir de
la dimensión rendimiento que nos brinda Vanrell en su metodología de Evaluación
del Rendimiento en la Computación Visual.
“Se entrena un primer clasificador que es capaz de eliminar las muestras negativas
fáciles, luego que otro que elimina las muestras negativas más difíciles y así hasta el
número de etapas que se establezca”. (Planells, 2009)
38
• Exactitud: Analiza la proximidad entre el resultado del clasificador y la
clasificación exacta; cuya fórmula es:
Positivos Reales + Negativos Reales
𝐸𝑥𝑎𝑐𝑡𝑖𝑡𝑢𝑑 =
Predicciones totales
• Precisión: Analiza la calidad de respuesta del clasificador. Su fórmula es la
siguiente:
Positivos Reales
𝑃𝑟𝑒𝑐𝑖𝑠𝑖ó𝑛 =
Positivos Reales + Falsos Positivos
2(Precisión ∗ Sensibilidad)
𝐹𝑎𝑐𝑡𝑜𝑟 𝑅𝑒𝑛𝑑𝑖𝑚𝑖𝑒𝑛𝑡𝑜 =
Precisión + Sensibilidad
39
1.4 Formulación del Problema
1.4.1 Problemas General
¿De qué manera la implementación de una aplicación móvil influirá en la
interpretación del lenguaje de señas peruanas de los discapacitados auditivos de la
asociación de sordos región Lima?
Existe un enfoque para las personas sordas y la comunicación con otras personas
que no entienden el lenguaje de señas. Las cuales son dos posibles soluciones: una
de tipo de reconocimiento de lenguaje de señas y otra es el uso de avatares como
mediadores en la comunicación de lenguaje de señas (Ruiz y Villegas, 2014, p.45).
41
1.5.4 Justificación económica
1.6 Hipótesis
1.7 Objetivos
1.7.1 Objetivo General
42
1.7.2 Objetivo Especifico
43
II. METODO
44
2.1 Diseño de la investigación
En esta investigación se reducirá la problemática que existe en la Asociación de
Sordos Región Lima a través de un aplicativo móvil de interpretación de lenguaje
de señas peruanas. Es necesario tener técnicas y herramientas con métodos
ordenados y confiables donde se tome en cuenta la tecnología para lograr establecer
conclusiones y recomendaciones que estén relacionadas a la investigación. De tal
forma se han considerado dos tipos de estudio para este proyecto de investigación:
Tipo de estudio
Diseño
45
Este diseño podría diagramarse de la siguiente manera:
O1 → X → O2
Dónde:
Aplicación Móvil:
46
Operacionalización de Variables
Indicador Índice
Presencia - Ausencia No, Sí
PR = Positivos
Reales
NR = Negativos
Reales
PT = Predicciones
Totales
Precisión (P) Porcentual 𝑃𝑅 Registro Manual
𝑃=
(%) 𝑃𝑅 + 𝐹𝑃
PR = Positivos
Reales
FP = Falso Positivo
Sensibilidad (S) Porcentual 𝑃𝑅 Registro Manual
𝑆=
(%) 𝑃𝑅 + 𝐹𝑁
PR = Positivos
Reales
47
FN = Falso
Negativo
Especificidad(E) Porcentual 𝑁𝑅 Registro Manual
𝐸=
(%) 𝑁𝑅 + 𝐹𝑃
NR = Negativos
Reales
FP = Falso Positivo
Factor Porcentual 2(𝑃 ∗ 𝑆) Registro Manual
𝑅=
Rendimiento (R) (%) 𝑃+𝑆
P = Precisión
S = Sensibilidad
lenguaje de señas
CILS = Costo de
(CCILS) Intérpretes de
Lenguaje de Señas
n = Número de
personas sordas
inscritas en la
asociación
Fuente: Elaboración Propia
48
Matriz de Operacionalización de las variables
∑𝑛𝑖=1(𝐶𝐼𝐿𝑆)
CCILS =
𝑛
49
2.3 Población y Muestra
2.3.1 Población
POBLACIÓN N°
Personas sordas inscritas en la
8
Asociación y asisten
Total 8
2.3.2 Muestra
50
Técnicas e instrumentos de recolección de datos, validez y confiabilidad
• Guía de Entrevista:
Se utilizó con la finalidad de recolectar información para la situación problemática.
• Cuestionario:
Se utilizó para recolectar información de problemas específicos de las personas sordas.
• Ficha de Observación:
Se utilizó para obtener datos de los involucrados en el proceso de interpretación de
lenguaje de señas referentes recolección de información previa a la implementación de
la solución del caso de estudio.
Se extrae la data desde el aplicativo móvil que luego será procesada en Excel con apoyo de
una herramienta llamada Matriz de Confusión o cálculo del F1 Score. Además, se diseñaron
tablas de datos obtenidos de los instrumentos de medición con las cuales se generan gráficos
circulares, histogramas de frecuencia con la finalidad de exponer los resultados de la
investigación propuesta.
51
Aspectos éticos
52
III. RESULTADOS
53
En este apartado se exponen resultados obtenidos de la investigación haciendo uso de
los indicadores “porcentaje de tiempo empleado en la comunicación con las personas
sordas” y “porcentaje de costo por tiempo de interpretación” además se medirá los
indicadores de la dimensión “rendimiento”. Mostrando el impacto de la
implementación de un aplicativo móvil que interpreta el lenguaje de señas en el
proceso de comunicación con los discapacitados auditivos, y también se realiza el
procesamiento de los datos obtenidos de las muestras de cada indicador (tanto para el
pre-test y el post-test) con el software IBM SPSS Statistics 25. Debido a que la
investigación fue pre-experimental, se utilizan datos antes de la implementación del
sistema (pre-test) y después que el sistema fue implementado y puesto en marcha
(post-test).
INDICADOR TIPO
54
Prueba de hipótesis para indicador 1: Cuantitativo
Mediante la librería OpenCV que cuenta con varios clasificadores entrenados en cascada, los
cuales sirven para la detección de rostro, placas de auto, objetos. Pero si se desea detectar gestos
como es en este caso de estudio se necesita crear nuestros propios clasificadores. Para crear los
clasificadores es necesario imágenes positivas (donde se encuentra el objeto a reconocer),
imágenes negativas (donde no se encuentra el objeto a reconocer) de tal modo se ha decidido
crear un clasificador por cada tipo de gesto para el cual el aplicativo móvil generará archivos
de registro txt (train_data.txt) y jpg (imágenes base), a partir de ello se evaluarán: vectores,
positivos, negativos, en base a clasificadores. Se realizo en entrenamiento con resolución de
imagen 320x240
55
GESTO: LETRA “E”
GESTO NO – GESTO
Tabla 7: Matriz de Confusión para gesto letra “E” del clasificador de configuración simple
Fuente: Propia
Figura 5: Pruebas de entrenamiento del gesto letra “E” (clasificador de configuración simple)
Tabla 8: Resultados de las pruebas de rendimiento del gesto letra “E” (clasificador de
configuración simple)
Análisis Porcentaje
Exactitud 74 %
Precisión 75 %
Sensibilidad 77 %
Especificidad 69 %
F1 Score 75.99 %
56
GESTO: LETRA “F”
GESTO NO – GESTO
Tabla 9: Matriz de Confusión para gesto letra “F” del clasificador de configuración simple
Fuente: Propia
Figura 6: Pruebas de entrenamiento del gesto letra “F” (clasificador de configuración simple)
Tabla 10: Resultados de las pruebas de rendimiento del gesto letra “F” (clasificador de
configuración simple)
Análisis Porcentaje
Exactitud 82 %
Precisión 100 %
Sensibilidad 73 %
Especificidad 100 %
F1 Score 84.39 %
57
GESTO: LETRA “G”
GESTO NO – GESTO
Tabla 11: Matriz de Confusión para gesto letra “G” del clasificador de configuración simple
Fuente: Propia
Figura 7: Pruebas de entrenamiento del gesto letra “G” (clasificador de configuración simple)
Tabla 12: Resultados de las pruebas de rendimiento del gesto letra “G” (clasificador de
configuración simple)
Análisis Porcentaje
Exactitud 76 %
Precisión 77 %
Sensibilidad 82 %
Especificidad 66 %
F1 Score 79.42 %
58
GESTO: LETRA “H”
GESTO NO – GESTO
Tabla 13: Matriz de Confusión para gesto letra “H” del clasificador de configuración simple
Fuente: Propia
Figura 8: Pruebas de entrenamiento del gesto letra “H” (clasificador de configuración simple)
Tabla 14: Resultados de las pruebas de rendimiento del gesto letra “H” (clasificador de
configuración simple)
Análisis Porcentaje
Exactitud 68 %
Precisión 92 %
Sensibilidad 64 %
Especificidad 81 %
F1 Score 75.49 %
59
GESTO: LETRA “I”
GESTO NO – GESTO
Tabla 15: Matriz de Confusión para gesto letra “I” del clasificador de configuración simple
Fuente: Propia
Figura 9: Pruebas de entrenamiento del gesto letra “I” (clasificador de configuración simple)
Tabla 16: Resultados de las pruebas de rendimiento del gesto letra “I” (clasificador de
configuración simple)
Análisis Porcentaje
Exactitud 76 %
Precisión 78 %
Sensibilidad 83 %
Especificidad 70 %
F1 Score 80.42 %
60
GESTO: LETRA “K”
GESTO NO – GESTO
Tabla 17: Matriz de Confusión para gesto letra “K” del clasificador de configuración simple
Fuente: Propia
Figura 10: Pruebas de entrenamiento del gesto letra “K” (clasificador de configuración simple)
Tabla 18: Resultados de las pruebas de rendimiento del gesto letra “K” (clasificador de
configuración simple)
Análisis Porcentaje
Exactitud 78 %
Precisión 92 %
Sensibilidad 72 %
Especificidad 88 %
F1 Score 80.78 %
61
Resultados Caso de Estudio Ambiente Controlado
Definición de Variables
a) Hipótesis estadística
Hipóteisis Ho = El tiempo promedio de las personas sordas con el sistema actual de
comunicación es menor o igual que el tiempo promedio de comunicación de las
personas sordas con el sistema propuesto (minutos).
Ho = TPCPSa – TPCPSs ≤ 0
62
b) Nivel de Significancia
Se define el margen de error, confiabilidad 95%
Usando un nivel de significancia (α = 0.05) del 5%. Por lo tanto, el nivel de confianza
(1- α = 0.95) será del 95%
c) Estadígrafo de contraste
Tomando como población a las personas sordas inscritas en la Asociación de sordos de
la región Lima (ASSORELI), se calcula una población de 8 personas que es igual a la
muestra. De tal modo para realizar la prueba de normalidad cualitativa ordinal por lo
tanto se utilizará la prueba no paramétrica de Wilconxon.
Resultados: Para calcular el Tiempo promedio de comunicación de las personas sordas
en la Asicciación de sordos de la Región Lima, se ha estimado un universo de 8 personas
sordas.
63
Tabla 21 – Frecuencia Pre y Post tiempo promedio
¿Cuánto es el tiempo que se
Porcentaje
demora en entender a una Frecuencia %
acumulado
persona sorda (minutos)?
1-2 0 0 0
2-4 0 0 0
4-6 3 37,5 37,5
Pre-test
6-8 1 12,5 50,0
8 - 10 4 50,0 100,0
Total 8 100
1-2 3 37,5 37,5
2-4 2 25,0 62,5
4-6 3 37,5 100
Post-test
6-8 0 0 100
8 - 10 0 0 100
Total 8 100
Prueba de Wilcoxon
Z -2,588
P 0,015
¿Cuánto es el tiempo que se demora entender a una persona sorda (minutos)?
64
Figura 12 – Gráfica Frecuencia Post-Test – tiempo promedio en comunicación
d) Conclusión
En el análisis Wilconxon se muestra que P <0.05 y siendo el valor menor que 0.05
entonces se rechaza Ho y por consiguiente se acepta Ha.
Se conlcuye entonces que el tiempo promedio que se demora entender a una persona
sorda con el sistema actual el 50,0% demora en entender a una persona sorda entre 8 –
10 minutos y con el sistema propuesto el 37,5 % demora ene entender a una persona
sorda entre 4 – 6 minutos, reduciendo en un 12,0% el tiempo promedio de comunicación
de las personas sordas con la sociedad hablante con un nivel de error del 5% y un nivel
de confianza del 95%.
a) Definición de Variables
CCISa = Costo de contratación de intérpretes de lenguaje de señas con el sistema actual
de comunicación.
CCISs = Costo de contratación de intérpretes de lenguaje de señas con el sistema
propuesto de comunicación.
65
b) Hipótesis estadística
Hipóteisis Ho = El costo de contratación de intérpretes de lenguaje de señas con el
sistema actual de comunicación es menor o igual que el Costo de contratación de
intérpretes de señas con el sistema propuesto.
Ho = CCILSa – CCILSs ≤ 0
c) Nivel de Significancia
Se define el margen de error, confiabilidad 95%
Usando un nivel de significancia (α = 0.05) del 5%. Por lo tanto, el nivel de confianza
(1 - α = 0.95) será del 95%
d) Estadígrafo de contraste
Tomando como población a las personas sordas inscritas en la Asociación de sordos de
la región Lima (ASSORELI), se calcula una población de 8 personas que es igual a la
muestra. De tal modo para realizar la prueba de normalidad cualitativa ordinal por lo
tanto se utilizará la prueba no paramétrica de Wilconxon.
Resultados: Para calcular el Costo de contratación de intérpretes de lenguaje de señas
en la asociación de sordos región lima, se ha estimado un universo de 8 personas sordas.
66
Tabla N 22: Costo de contratación de intérpretes de señas
67
¿Cuál es el costo para contratar a un intérprete (semanal)?
Figura 13 – Gráfica Frecuencia Pre-Test – Costo promedio de contratación de intérprete
68
e) Conclusión
En el análisis Wilconxon se muestra que P <0.05 y siendo el valor menor que 0.05
entonces se rechaza Ho y por consiguiente se acepta Ha.
Se concluye que el costo de contratación de intérpretes de lenguaje de señas con el
sistema actual 40 a 50 soles representa 62,5% de la muestra al costo promedio semanal
de un intérprete y con el sistema propuesto el 100% de la muestra representa de 0 a 10
soles el costo promedio de un intérprete, reduciendo un 37,5% el costo semanal, ya que
el aplicativo móvil es participe parcial o total en el proceso de interpretación del
lenguaje de señas con un nivel de error del 5% y un nivel de confianza del 95%.
69
IV. DISCUSIÓN
70
Discusión de resultados
La Asociación de sordos de la Región Lima es una asociación que busca que los discapacitados
auditivos tengan un sistema de comunicación apropiado para el mejor entendimiento con la
sociedad, además capacita a los sordos a uso de tecnología como lo es el servicio de mensajeria
de los smartphones y otras herramientas de ofimática para su integración con la sociedad
moderna, por consecuente para poder tener una mejor comunicación se necesita tener un
aplicativo móvil que cumpla con parte del proceso de interpretación del lenguaje de señas, como
es en este caso el detectar el alfabeto dactilológico ya que es requerimiento básico para poder
comunicarse en el lenguaje de señas en la nación y en el mundo.
Tabla N° 24 Cuadro Comparativo, después de aplicar la solución.
CON LA
INDICADOR ANTES DIFERENCIA
SOLUCION
Costo de contratación
100% 62,5% 37,5%
de intérpretes
71
V.CONCLUSIÓN
72
Primera: Se ha determinado que el rendimiento de la interpretación del lenguaje de señas
del aplicativo móvil en un ambiente controlado fue: Detección de la letra “E”
74% de acierto, letra “F” 82% de acierto, letra “G” 76% de acierto, letra “H”
68% de acierto, letra “I” 76% de acierto, letra “K” 78% de acierto. Y el
rendimiento promedio obtenido es de 79.41%, con estos resultados se demuestra
que el aplicativo móvil pude detectar el alfabeto dactilológico de señas estáticas
realizadas en un ambiente controlado.
73
VI. RECOMENDACIONES
74
Recomendaciones para futuras investigaciones:
75
VII. REFERENCIAS
76
Avilés, E. (14 de julio de 2011). Estrategia de Desarrollo de Aplicaciones Móviles. Recuperado
el 7 de abril 2018 de: https://es.slideshare.net/slashmobility/estrategia-y-desarrollos-de-
aplicaciones-moviles-8596799
Burad, V. (2009). La interpretación del par de lenguas de señas – cultura sorda, lengua hablada
– cultura oyente. Brevísima aproximación a algunas conceptualizaciones generales.
Recuperado el 1 de junio 2018 de: http://www.cultura-sorda.org/wp-
content/uploads/2015/03/Burad_Viviana_Interpretacion_par_LSCS_LHCO_Brevisim
a_aproximacion_conceptualizaciones_generales_2009.pdf
Fang, B., Co, J. y Zang, M. (2017). Enabling Ubiquitous and Non-Intrusive Word and Sentence-
Level Sign Language Translation. (Tesis de grado, Universidad del Estado de Michigan
EEUU). Recuperada de:
https://www.egr.msu.edu/~fangbiyi/papers/2017_SenSys_DeepASL.pdf
Ladd, P. (2003). Understanding Deaf Culture: In Search of Deafhood. Clevedon: The Comwell
Press.
Méndez, R. (2010). Figura del intérprete de lengua de signos en la educación. Temas para la
Educación, N° 8. Recuperado el 1 de junio 2018 de:
https://www.feandalucia.ccoo.es/docu/p5sd7181.pdf
OpenCV. (2014). The OpenCV Reference Manual. Recuperado el 1 de junio 2018 de:
https://docs.opencv.org/3.0-beta/opencv2refman.pdf
77
Otzen, T. & Manterola, C. (2017). Técnicas de Muestreo sobre una Población a Estudio.
Universidad de Tarapacá, Chile. Recuperado de:
https://scielo.conicyt.cl/pdf/ijmorphol/v35n1/art37.pdf
Planells Lerma, J. (2009). Implementación del algoritmo de detección facial de Viola-Jones.
Recuperada de:
https://www.academia.edu/9503665/Implementacion_del_algoritmo_de_deteccion_fac
ial_de_Viola-Jones_Autor_Joaqu_ın_Planells_Lerma_Director
Stokoe, W. (1960). Sign language structure: An outline of the visual communication system of
the American deaf, NY: Univ. of Buffalo.
Vanrell, M. (s. f.). Evaluación del Rendimiento, Universidad Autónoma de Barcelona, España.
Vílchez Sandoval, K. (2015). Sistema Intérprete de Lenguaje Alternativo para mejorar la
comunicación de las personas sordas en la Asociación de Sordos de la Libertad. (Tesis
de grado, Universidad César Vallejo). (Acceso el 7 de abril de 2018)
78
Vintimilla Sarmiento, G. (2014). Desarrollo e implementación de una Aplicación que traduzca
el abecedario y los números de uno al diez del lenguaje de señas a texto para ayuda de
discapacitados auditivos mediante dispositivos móviles Android. (Tesis de grado,
Universidad de las Fuerzas Armadas Ecuador). Recuperada de:
https://repositorio.espe.edu.ec/bitstream/21000/9673/1/AC-RED-ESPE-048054.pdf
[en línea] (s. f.). Segmentación de imágenes. [Diapositivas]. Recuperado el 1 de junio 2018
de: http://alojamientos.us.es/gtocoma/pid/tema4.pdf
79
ANEXOS
80
ANEXO 1: MATRIZ DE CONSISTENCIA
Tabla 25 Matriz de consistencia
Matriz de consistencia
81
ANEXO 2: CRONOGRAMA
82
ANEXO 3: INSTRUMENTO DE RECOLECCIÓN DE DATOS
Cuestionario dirigido a la presidenta de la Asociación de Sordos de la Región Lima.
COORDINADORA DE LA “ASOCIACIÓN DE SORDOS REGIÓN LIMA”
4. ¿La “ASOCIACIÓN DE SORDOS REGIÓN LIMA” cuenta con ayuda del estado o
privada?
8. ¿Cuál es su opinión sobre la Ley de inserción laboral para personas con discapacidades?
83
ANEXO 4: INSTRUMENTO DE MEDICIÓN DE LA VARIABLE DEPENDIENTE
Entrenamiento de los Clasificadores en base a la Matriz de Confusión (F1 Score):
Mediante la librería OpenCV que cuenta con varios clasificadores entrenados en cascada,
los cuales sirven para la detección de rostro, placas de auto, objetos. Pero si se desea
detectar gestos como es en este caso de estudio se necesita crear nuestros propios
clasificadores. Para crear los clasificadores es necesario imágenes positivas (donde se
encuentra el objeto a reconocer), imágenes negativas (donde no se encuentra el objeto a
reconocer) de tal modo se ha decidido crear un clasificador por cada tipo de gesto para el
cual el aplicativo móvil generará archivos de registro txt(train_data.txt) y jpg (imágenes
base), a partir de ello se evaluarán: vectores, positivos, negativos, en base a
clasificadores.
• Imágenes Positivas: n°
• Imágenes Negativas: n°
• Imágenes para Test: n°
GESTO NO – GESTO
Tabla 26: Matriz de Confusión para gesto letra “A” del clasificador de configuración simple
84
Figura 16: Pruebas de entrenamiento del gesto letra “A” (clasificador de configuración simple)
Fuente: Propia
Tabla 27: Resultados de las pruebas de rendimiento del gesto letra “A” (clasificador de
configuración simple)
Análisis Porcentaje
Exactitud n%
Precisión n%
Sensibilidad n%
Especificidad n%
F1 Score n%
85
ANEXO 5: ASPECTOS ADMINISTRATIVOS
Recurso y Presupuesto
Financiamiento
La Asociación de Sordos de la Región Lima, no cuenta con presupuesto para la inversión
de proyectos de investigación, por lo tanto, el financiamiento del proyecto de tesis se
realizará con recursos propios, estará a cargo del Tesista.
86
ANEXO 6: ASPECTOS TECNICOS
Para el uso del programa es necesario que el terminal móvil posea las siguientes
especificaciones:
87
ANEXO 7: CURSO DE LENGUAJE DE SEÑAS PERUANAS
Figura 17: Boleta de Matrícula y Pensión del curso de Lenguaje de Señas Peruanas
88
89
Figura 18: Lugar de Pruebas: Aula de Cases de Lenguaje de Señas ASSORELI
90
ANEXO 8: ANALISIS Y DISEÑO
Requerimientos Funcionales
- Implementación de algoritmo para detección basado en imágenes.
- Implementación de algoritmo para el reconocimeinto de patrones.
- Implementación de sistema de aprendizaje de máquina.
- Implementación de algoritmo de entrenamiento basado en coordenadas.
- Mostrar contorno, puntos y palma marcados en la cámara.
- Mostrar el número de dedos de 0 a 4.
- Guardar información de entrenamiento en la memoria interna del Smartphone
Requerimientos No Funcionales
- Diseño de una interfaz sencilla y con alta usabilidad.
- Software optimizado, alto rendimiento, procesos con bajos requerimientos de
hardware.
- Documentación detallada del código y sus modificaciones
91
Figura 19 Caso de Uso General
92
Figura 20 Caso de Uso Detectar Mano
93
Figura 21 Caso de Uso Guardar Gesto
94
Figura 22 Caso de Uso Entrenar Gesto
95
Figura 23 Caso de Uso Reconocer Gesto
Inicio de Sistema
96
Figura 25 Menú de Configuraciones
97
Figura 27 Resolucion 320*240 seleccionada
98
Figura 30 Mano detectada con extracción de características, enumerada de 0 a 4
99
Figura 32 Entrenamiento de la Letra C
100
ANEXO 13: CODIGO FUENTE
Codigo Fuente Java - Android:
MainActivity.java
package com.example.newdemo;
+ import java.io.File;
//Mode that is started when user clicks the 'Add Gesture' button.
public static final int ADD_MODE = 4;
//Mode that is started when user clicks 'App Test' in the menu.
public static final int APP_TEST_MODE = 6;
//Mode that is started when user clicks 'Map Apps' in the menu.
public static final int MAP_APPS_MODE = 1;
101
private int testFrameCount = 0;
private float[][] values = new float[FRAME_BUFFER_NUM][];
private int[][] indices = new int[FRAME_BUFFER_NUM][];
// onActivityResult request
private static final int REQUEST_CODE = 6384;
102
private Mat rgbaMat = null;
System.loadLibrary("HandGestureApp");
try {
System.loadLibrary("signal");
} catch (UnsatisfiedLinkError ule) {
Log.e(TAG, "Hey, could not load native library
signal");
}
mOpenCvCameraView.enableView();
mOpenCvCameraView.setOnTouchListener(new OnTouchListener()
103
{
switch(action) {
case (MotionEvent.ACTION_DOWN) :
Log.d(TAG,"Action was DOWN");
String toastStr = null;
if (mode == SAMPLE_MODE) {
mode = DETECTION_MODE;
toastStr = "Sampling Finished!";
} else if (mode == DETECTION_MODE) {
mode = TRAIN_REC_MODE;
((Button)findViewById(R.id.AddBtn)).setVisibility(View.VISIBLE);
((Button)findViewById(R.id.TrainBtn)).setVisibility(View.VISIBLE);
((Button)findViewById(R.id.TestBtn)).setVisibility(View.VISIBLE);
toastStr = "Binary Display
Finished!";
preTrain();
((Button)findViewById(R.id.AddBtn)).setVisibility(View.INVISIBLE);
((Button)findViewById(R.id.TrainBtn)).setVisibility(View.INVISIBLE);
((Button)findViewById(R.id.TestBtn)).setVisibility(View.INVISIBLE);
Toast.makeText(getApplicationContext(), toastStr,
Toast.LENGTH_LONG).show();
return false;
case (MotionEvent.ACTION_MOVE) :
Log.d(TAG,"Action was MOVE");
return true;
case (MotionEvent.ACTION_UP) :
Log.d(TAG,"Action was UP");
return true;
case (MotionEvent.ACTION_CANCEL) :
104
Log.d(TAG,"Action was CANCEL");
return true;
case (MotionEvent.ACTION_OUTSIDE) :
Log.d(TAG,"Movement occurred outside
bounds " +
"of current screen
element");
return true;
default :
return true;
}
}
});
} break;
default: {
super.onManagerConnected(status);
}break;
}
}
};
// svm native
private native int trainClassifierNative(String trainingFile, int
kernelType,
int cost, float gamma, int isProb, String modelFile);
private native int doClassificationNative(float values[][], int
indices[][],
int isProb, String modelFile, int labels[], double probs[]);
int maxLabel = 0;
for (int i=0; i < file.length; i++)
{
105
String fullName = file[i].getName();
}
}
curLabel = maxLabel;
curMaxLabel = curLabel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
0);
setContentView(R.layout.activity_main);
try{
FileInputStream fis = new FileInputStream(sdFile);
ObjectInputStream ois = new ObjectInputStream(fis);
while(true)
{
try{
mOpenCvCameraView = (MyCameraView)
findViewById(R.id.HandGestureApp);
mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);
mOpenCvCameraView.setCvCameraViewListener(this);
106
samplePoints = new Point[SAMPLE_NUM][2];
for (int i = 0; i < SAMPLE_NUM; i++)
{
for (int j = 0; j < 2; j++)
{
samplePoints[i][j] = new Point();
}
}
//HLS
//initCLowerUpper(7, 7, 80, 80, 80, 80);
//RGB
//initCLowerUpper(30, 30, 30, 30, 30, 30);
//HSV
//initCLowerUpper(15, 15, 50, 50, 50, 50);
//initCBackLowerUpper(5, 5, 80, 80, 100, 100);
//Ycrcb
// initCLowerUpper(40, 40, 10, 10, 10, 10);
//Lab
initCLowerUpper(50, 50, 10, 10, 10, 10);
initCBackLowerUpper(50, 50, 3, 3, 3, 3);
initOpenCV();
Log.i(TAG, "Created!");
}
switch (item.getItemId()) {
case R.id.action_save:
isPictureSaved = true;
// savePicture();
return true;
case R.id.data_collection:
callDataCollection();
return true;
case R.id.map_apps:
107
callMapApps();
return true;
case R.id.app_test:
if (mode == APP_TEST_MODE) {
mode = TRAIN_REC_MODE;
Toast.makeText(getApplicationContext(), "App testing
ends!", Toast.LENGTH_LONG).show();
} else {
mode = APP_TEST_MODE;
Toast.makeText(getApplicationContext(), "App testing
begins!", Toast.LENGTH_LONG).show();
appTestFrameCount = 0;
}
return true;
// default:
// return super.onOptionsItemSelected(item);
}
if (item.getGroupId() == 2) {
int id = item.getItemId();
Camera.Size resolution = mResolutionList.get(id);
mOpenCvCameraView.setResolution(resolution);
resolution = mOpenCvCameraView.getResolution();
String caption =
Integer.valueOf(resolution.width).toString() + "x" +
Integer.valueOf(resolution.height).toString();
Toast.makeText(this, caption, Toast.LENGTH_SHORT).show();
return true;
}
return super.onOptionsItemSelected(item);
}
setContentView(R.layout.activity_main);
mOpenCvCameraView = (MyCameraView)
findViewById(R.id.HandGestureApp);
mOpenCvCameraView.enableView();
mOpenCvCameraView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// ... Respond to touch events
int action = MotionEventCompat.getActionMasked(event);
switch(action) {
case (MotionEvent.ACTION_DOWN) :
Log.d(TAG,"Action was DOWN");
String toastStr = null;
if (mode == SAMPLE_MODE) {
mode = DETECTION_MODE;
toastStr = "Sampling Finished!";
} else if (mode == DETECTION_MODE) {
mode = TRAIN_REC_MODE;
((Button)findViewById(R.id.AddBtn)).setVisibility(View.VISIBLE);
108
((Button)findViewById(R.id.TrainBtn)).setVisibility(View.VISIBLE);
((Button)findViewById(R.id.TestBtn)).setVisibility(View.VISIBLE);
toastStr = "Binary Display Finished!";
preTrain();
((Button)findViewById(R.id.AddBtn)).setVisibility(View.INVISIBLE);
((Button)findViewById(R.id.TrainBtn)).setVisibility(View.INVISIBLE);
((Button)findViewById(R.id.TestBtn)).setVisibility(View.INVISIBLE);
Toast.makeText(getApplicationContext(),
toastStr, Toast.LENGTH_LONG).show();
return false;
case (MotionEvent.ACTION_MOVE) :
Log.d(TAG,"Action was MOVE");
return true;
case (MotionEvent.ACTION_UP) :
Log.d(TAG,"Action was UP");
return true;
case (MotionEvent.ACTION_CANCEL) :
Log.d(TAG,"Action was CANCEL");
return true;
case (MotionEvent.ACTION_OUTSIDE) :
Log.d(TAG,"Movement occurred outside bounds
" +
"of current screen element");
return true;
default :
return true;
}
}
});
mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);
mOpenCvCameraView.setCvCameraViewListener(this);
((Button)findViewById(R.id.AddBtn)).setVisibility(View.VISIBLE);
((Button)findViewById(R.id.TrainBtn)).setVisibility(View.VISIBLE);
((Button)findViewById(R.id.TestBtn)).setVisibility(View.VISIBLE);
109
public void showDialogBeforeAdd(String title,String message){
Log.i("Show Dialog", "Entered");
AlertDialog.Builder alertDialogBuilder = new
AlertDialog.Builder(
this);
// set title
alertDialogBuilder.setTitle(title);
// set dialog message
alertDialogBuilder
.setMessage(message)
.setCancelable(false)
.setPositiveButton("Yes",new
DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int
id) {
doAddNewGesture();
synchronized(sync) {
sync.notify();
}
dialog.cancel();
}
})
.setNegativeButton("No",new
DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int
id) {
// if this button is clicked, just close
// the dialog box and do nothing
synchronized(sync) {
sync.notify();
}
dialog.cancel();
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
}
diagResult = null;
110
// set dialog message
alertDialogBuilder
.setMessage(message)
.setCancelable(false)
.setPositiveButton(posStr,new
DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int
id) {
diagResult = "Positive";
Toast.makeText(getApplicationContext(), "Add
more to Gesture "
+ selectedLabel,
Toast.LENGTH_SHORT).show();
curLabel = selectedLabel - 1;
dialog.cancel();
}
})
.setNegativeButton(negStr,new
DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int
id) {
// if this button is clicked, just close
// the dialog box and do nothing
diagResult = "Negative";
doDeleteGesture(selectedLabel);
Toast.makeText(getApplicationContext(),
"Gesture "
+ selectedLabel + " is deleted",
Toast.LENGTH_SHORT).show();
curLabel = selectedLabel - 1;
dialog.cancel();
}
});
if (neuStr != null) {
alertDialogBuilder.setNeutralButton(neuStr, new
DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
diagResult = "Neutral";
Toast.makeText(getApplicationContext(), "Canceled"
, Toast.LENGTH_SHORT).show();
111
selectedLabel = -2;
dialog.cancel();
}
}) ;
}
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
}
HandGesture.java
package com.example.newdemo;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfInt;
import org.opencv.core.MatOfInt4;
import org.opencv.core.MatOfPoint;
import org.opencv.core.MatOfPoint2f;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.RotatedRect;
import org.opencv.core.Scalar;
import org.opencv.imgproc.Imgproc;
import org.opencv.imgproc.Moments;
112
public Point palmCenter = new Point();
public MatOfPoint2f hullCurP = new MatOfPoint2f();
public MatOfPoint2f approxHull = new MatOfPoint2f();
void findBiggestContour()
{
int idx = -1;
int cNum = 0;
cMaxId = idx;
}
113
}
defectMat.fromList(defectPoints);
if (prevDefectVec != null) {
double dotProduct = curDefectVec.x*prevDefectVec.x +
curDefectVec.y*prevDefectVec.y;
double crossProduct = curDefectVec.x*prevDefectVec.y -
prevDefectVec.x*curDefectVec.y;
if (crossProduct <= 0)
break;
}
prevDefectVec = curDefectVec;
int startId = i;
int countId = 0;
114
if (defectIdAfter.size() > 0) {
boolean end = false;
if (end == false) {
j = 0;
end = true;
}
else
break;
}
countId++;
}
int count = 0;
features.clear();
for (int fid = 0; fid < finTipsTemp.size(); )
{
if (count > 5)
break;
if ((fid%2 == 0)) {
if (fid != 0) {
Point prevFinPoint = finTipsTemp.get(fid-1);
curFinPoint.x = (curFinPoint.x + prevFinPoint.x)/2;
curFinPoint.y = (curFinPoint.y + prevFinPoint.y)/2;
}
if (fid == (finTipsTemp.size() - 2) )
fid++;
else
115
fid += 2;
} else
fid++;
count++;
ret = feature2SVMString(label);
return ret;
}
// Find the location of inscribed circle and return the radius and
the center location
void findInscribedCircle(Mat img)
{
Point tl = boundingRect.tl();
Point br = boundingRect.br();
inCircleRadius = findInscribedCircleJNI(img.getNativeObjAddr(),
tl.x, tl.y, br.x, br.y, cirx, ciry,
approxContour.getNativeObjAddr());
inCircle.x = cirx[0];
inCircle.y = ciry[0];
116
Core.circle(img, inCircle, (int)inCircleRadius, new
Scalar(240,240,45,0), 2);
Core.circle(img, inCircle, 3, Scalar.all(0), -2);
}
MyCameraView.java
package com.example.newdemo;
import java.util.List;
import org.opencv.android.JavaCameraView;
import android.content.Context;
import android.hardware.Camera;
import android.hardware.Camera.Size;
import android.util.AttributeSet;
117
}
118
}
119
ANEXO 10 : ACTA DE APROBACIÓN DE ORIGINALIDAD DE LOS
TRABAJOS ACADÉMICOS DE LA UCV
120
121
ANEXO 11 : PANTALLAZO TURNITIN
122
123
ANEXO 12: AUTORIZACIÓN DE PUBLICACIÓN DE TESIS
124
125
ANEXO 13: AUTORIZACIÓN DE LA VERSIÓN FINAL DEL TRABAJO DE
INVESTIGACIÓN
126
127