Content uploaded by Isaac Rudomin
Author content
All content in this area was uploaded by Isaac Rudomin
Content may be subject to copyright.
M´
etodo Robusto para Detectar Dedos Usando
Profundidad
Isaac Juan Rudom´ın Goldberg
ITESM CEM
Atizapan de Zaragoza, Mexico
rudomin.isaac@gmail.com
Jorge Adolfo Ram´ırez Uresti
ITESM CEM
Atizapan de Zaragoza, Mexico
juresti@gmail.com
Christian Jes ´us Arzate Cruz
ITESM CEM
Atizapan de Zaragoza, Mexico
arzate.christian@gmail.com
Resumen—Se usa una c ´
amara de profundidad de bajo costo
para detectar, de manera robusta, manos y dedos. Nuestro
m´
etodo propuesto est´
a basado en filtros de profundidad y an´
alisis
de contorno adaptivo. La mayor parte del enfoque propuesto se
program´
o en CUDA. Seleccionamos CUDA para poder conseguir
una aplicaci´
on de visi´
on computacional en tiempo real. En las
pruebas realizadas conseguimos un 95,17 % de efectividad con
un 3,2 % de falsos positivos.
Index Terms—detecci´
on, manos, dedos, profundidad, Kinect.
I. INTRODU CCI ´
ON
Sistemas de visi ´on computacional puede ser utilizados para
crear interfaces convincentes para computadoras. Esto se debe
a que es m ´as natural y divertido controlar una computadora
usando el movimiento del cuerpo o gestos de manos y dedos.
Estas formas de interfaz tambi´en se han visto beneficiadas
de los precios bajos que encontramos en varios de los com-
ponentes que se usan para desarrollar sistemas de visi´on
computacional. Incluso son lo suficientemente baratos para
reemplazar interfaces como botones y palancas.
Muchas interfaces han sido desarrolladas para habilitar
interacciones naturales con manos y dedos. La mayor´ıa de
estos sistemas de visi´on computacional usan c´amaras RGB
tradicionales o infrarrojas [12], [7], [9], [4]. Estos m´etodos
encuentran problemas cuando:
Las manos y el fondo contienen colores similares
Cambios de iluminaci ´on
Reflejos
Sombras
La geometr´ıa del fondo cambia
El objetivo del m´etodo presentado en este escrito es:
desarrollar un sistema de visi ´on computacional en tiempo
real que detecte manos y dedos de forma robusta, utilizando
una c´amara de profundidad. Escogimos este tipo de c´amaras
porque simplifican todo el sistema de detecci ´on. En mayor
parte porque no les afecta los cambios de iluminaci ´on, proveen
informaci´on geom´etrica directamente, y la tecnolog´ıa actual
las hace asequibles y precisas.
Parte importante de nuestro sistema es su estructura. Se
implement´o una plataforma que puede ser utilizada para desa-
rrollar distintos tipos de aplicaciones. Adem´as, la mayor´ıa del
los algoritmos fueron programados en CUDA para conseguir
que nuestro sistema funcione en tiempo real.
Este art´ıculo contin ´ua con la siguiente estructura. En la
siguiente secci´on se describe el hardware que utilizamos y
su posici´on con respecto al usuario. En la secci ´on III, se hace
un an´alisis sobre las metodolog´ıas encontradas en el estado del
arte para detectar manos y dedos. La secci´on IV explica los
pasos del proceso que sigue nuestro sistema. Los resultados
son presentados en la secci´on V y las conclusiones y trabajo
a futuro aparecen en la secci´on VI.
II. HAR DWARE Y DESC RIPC I ´
ON D E LA ES CEN A
Nuestro sistema consiste de una c´amara de profundidad
de bajo costo (Microsoft Kinect Sensor) el cual provee un
mapa de profundidad a una resoluci ´on de 640x480 pixeles a
30 Hz. Objetos entre 0.3 y 3.5 m pueden ser vistos por este
sensor. Para mantener nuestro sistema lo m´as general posible
optamos por situar la c´amara frente al usuario, de forma que
podamos verlo de la cintura a la cabeza. Tambi´en se considera
que cuando el usuario desea interactuar con el sistema, este
alza sus brazos y muestra sus palmas y dedos como se puede
observar en la Figura 3(a).
III. ESTADO DE L ARTE
En la literatura se pueden encontrar distintas formas de
detectar manos y dedos. Por ejemplo, podemos ver en [6],
[1], [12], [8] que realizan un an´alisis de contorno, otros
m´etodos usan algoritmos de reconocimiento de objetos [13],
emparejamiento de modelos [4], [10] o c ´alculos morfol´ogicos
[2] para conseguir su objetivo. Cada m ´etodo tiene ventajas,
desventajas y limitaciones. Ahora analizaremos estos distintos.
III-A. An´
alisis de Contorno
III-A1. curvatura-k: Thiago R. Trigo y Sergio Roberto
M. Pellegrino en [12] utilizan el algoritmo curvatura-k para
detectar dedos. El primer paso de este m´etodo es segmentar
las manos y extraer su contorno. Despu´es, para cada uno de
los puntos de los contornos encontrados se corre el algoritmo
curvatura-k. El algoritmo curvatura-k encuentra el ´angulo entre
dos vectores (αyβ) y toma como entradas; la lista ordenada
de puntos que pertenecen al contorno de las manos, y las
constantes kyw. La salida de este algoritmo s´ımplemente
te dice si el punto en cuesti´on es parte o no de la curvatura
especificada por las constantes kyw. La constante ksirve para
formar los ´angulos α(P(i−k)) y β(P(i+k)), como se puede
Figura 1. Algoritmo curvatura-k
observar en la Figura 1. La constante wes un umbral medido
en radianes. En la aplicaci´on de este art´ıculo los valores de k
ywson 20 y0,95993 radianes, respectivamente. El valor de k
se encontr´o por prueba y error, y el ´angulo wal, manualmente,
medir los valores de curvatura-k en dedos.
Este m´etodo es preciso y r ´apido pero tiene un gran pro-
blema, la definici ´on de las constantes kyw. En especial,
encontrar el valor de la constante kes m´as complicado porque
el rango de profundidad (distancia entre la c´amara y el usuario)
donde un valor espec´ıfico de kfunciona es muy corto.
III-A2. Aproximaci´
on de contorno Pol´
ıgonos: En [6] pro-
ponen aproximar con pol´ıgonos el contorno de las manos,
hasta el punto en el que cada dedo se representa con dos
vectores. Despu´es a este nuevo contorno aproximado se aplica
el algoritmo ConvexHull. Los vertices de los pol´ıgonos que
se ecuentran sobre el contorno encontrado por el algoritmo
ConvexHull son considerados como dedos.
El problema que presenta este algoritmo es similar al
anterior, se tiene que calibrar para cada aplicaci ´on en especial.
Esto se deba a que la aproximaci´on con pol´ıgonos debe de
ser ajustada dependiando de la distancia entre la c ´amara y el
usuario. Se realizaron pruebas y no se consigui ´o obtener un
nivel de aproximaci´on que funcionara para el rango de visi´on
de nuestro sensor de profundidad.
III-B. Algoritmos de Reconocimiento de Objetos
Estos m´etodos usan algoritmos supervisados de aprendizaje,
por lo tanto, se necesita entrenar el sistema antes de poder
usarlo. Adaboost [3], es el algoritmo m´as popular para esta
tarea porque es r´apido y preciso. Esto se debe a que usa
clasificadores d´ebiles para determinar si una imagen contiene o
no el objeto de inter´es. Aunque este m´etodo es preciso, es muy
dif´ıcil conseguir una buena base de datos de clasificaci´on por
todo el trabajo que se requiere y algunos problemas a los que
puede ser susceptible, como el sobre-entrenamiento. Tampoco
es tan r´apido como al algoritmo curvatura-k.
III-C. Emparejamiento de Modelos
La idea b ´asica del emparejamiento de modelos es crear el
modelo de un objeto de inter´es, en este caso manos y dedos,
y luego buscar en la imagen que se quiera objetos que se
emparejen con el modelo. El modelo puede ser creado usando
Figura 2. Diagrama de Flujo del Algoritmo de Detecci´on de Dedos
emparejamiento de bordes, emparejamiento en escala de grises
o emparejamiento de gradiente. Para atacar el problema de la
rotaci´on y variaci ´on de escala, este m´etodo necesita buscar
usando diferentes modelos. Para un rango espec´ıfico es preciso
pero el buscar en una imagen el modelo sin importar la
escala o rotaci ´on, reduce sustancialmente el desempe˜no de este
algoritmo.
III-D. C´
alculos Morfol´
ogicos
La premisa de este m´etodo es que los dedos son largos y del-
gados en comparaci´on con la mano. Por lo tanto, desaparecen
cuando un operador de erosi´on es aplicado a una imagen que
contenga una mano. El operador de abrir puede ser utilizado
para detectar dedos al escoger una ventana apropiada y luego
detectando la resta con la imagen original. El resultado de
la resta son blobs de dedos. Como sucede con los m´etodos
previamente analizados, este algoritmo necesita ser ajustado
para que funcione en una aplicaci ´on en espec´ıfico.
IV. NUE STRO SIST EMA
La Figura 2 muestra los pasos que nuestro m´etodo sigue,
tambi´en podemos observar la imagen resultante de cada paso.
(a) Izquierda: Mapa de Profundidad Original. Centro: Segmentaci´on por Profundidad. Derecha: Pre-procesamiento
(b) Izquierda: Extracci´on de Contornos. Centro: curvatura-k. Derecha: Centroides de las Manos y Detecci´on de Dedos
Figura 3. Resultados de Cada Uno de los Pasos de Nuestro Algoritmo
En las siguientes sub-secciones se explicar´a cada paso en
detalle:
1. Segmentaci´
on por Profundidad: Asumiendo que el ob-
jeto m´as cercano a la c´amara es el objeto de inter ´es,
manos, usamos un filtro de profundidad. Este filtro
elimina de la escena todos los pixeles que est´an fuera del
rango Rango(P C −l), d´onde P C es el valor, en cm, del
p´ıxel m´as cercano a la c´amara. De manera experimental
se encontr ´o el valor ´optimo de lque funciona en el rango
de nuestra c´amara de profundidad. Este valor ´optimo
encontrado fue de 35cm y en la Figura 3(a) podemos
ver la imagen que obtenemos al aplicar este paso.
2. Pre-procesamiento: Primero, un filtro Guassiano es usa-
do para reducir el ruido de la c´amara y asegurarnos
de que pixeles aislados no formen parte de nuestro
objeto de inter´es. Luego un filtro de cerrado morfol´ogico
es aplicado para llenar huecos y suavizar los orillas
externas (Figura 3(a)).
3. Extracci´
on de Contornos: Los contornos son extra´ıdos
usando la implementaci ´on de OpenCV de Approximate
Freeman Chains [11] (Figura 3(a)). Para los pasos
siguientes solamente vamos a tomar en cuenta aquellos
contornos que sean m´as grandes que un umbral dado.
Este umbral se encuentra de forma experimental y
funciona en el rango de 0.3 a 3.5 m.
4. Estimaci´
on de Centroides: Para distintas aplicaciones
es ´util conocer el centroide de las manos (Figura 3(b))
para seguir su posici ´on. Para obtener su centroide, es
f´acil el calcular los momentos Hu [5] para cada uno de
los contornos con las siguientes f ´ormulas:
A=m0,0
xc=m1,0
A=m1,0
m0,0
yc=m0,1
A=m0,1
m0,0
d´onde (xc, yc)es el centro de gravedad del objeto
5. Algoritmo curvatura-k: Por su velocidad y precisi´on es
que seleccionamos este algoritmo para detectar dedos.
Su ´unica desventaja es encontrar el valor adecuado de
la constante k. Para resolver este problema se defini ´o una
constante kgeneral que funciona en el rango de 0,3a
3,5mque nuestro sensor de profundidad maneja. Usando
nuestro valor kgeneral (15) conseguimos entre 10 y 20
puntos de inter ´es por dedo. Podemos ver el resultado en
la Figura 3(b).
6. Clusterizado: Para conseguir la posici ´on 3D de cada
dedo es necesario clusterizar los puntos obtenidos
en el paso anterior. Para conseguir nuestro objetivo
y mantener la velocidad del algoritmo de detecci´on
de dedos, se implement´o una versi´on modificada de
vecinos cercanos para realizar esta tarea. La idea b´asica
de este m ´etodo es usar el algoritmo de vecinos cercanos
para centrar los centros que el algoritmo AS compute,
este proceso se repite hasta que todos los puntos est´en
clasificados o se llegue a un m´aximo de iteraciones. En
las siguientes l´ıneas se muestra el pseudoc´odigo de este
algoritmo:
// Repetir hasta que se llega al umbral
while continuar
// Computar el algoritmo de vecinos cercanos
CentrosInfo = vecCer(centros, inf, umbralK)
// Computar el algoritmo AS
[centrosNuevos] = as(centrosInfo, umbralAS)
// Revisar si se tiene nuevos centros
if centrosNuevos == centros
continuar = 0
break
end
end
V. RE SULTAD OS
Se le pidi´o a 4 personas que probaran nuestro sistema y
conseguimos un 95,17 % de efectividad con un 3,2 % de falsos
positivos en 200 cuadros que fueron analizados. Es dif´ıcil
comparar directamente el desempe˜no de nuestro m´etodo con
otros porque no hay un est´andar para evaluar este tipo de
aplicaciones. Pero podemos concluir que:
Es m´as robusto que m´etodos que usan c´amaras RGB
Es m´as robusto que m´etodos que necesitan calibrarse para
cada aplicaci´on
VI. CON CLU SIONE S Y TRABAJO A FU TURO
Nuestro objetivo se cumpli ´o. Este art´ıculo presenta un
sistema de detecci ´on de manos y dedos que usa mapas de
profundidad y an´alisis de contorno adaptivo. Nuestra t´ecnica
puede detectar manos y dedos en todo el rango en el que
nuestro sensor funciona. Fue implementado en CUDA la
mayor parte de los algoritmos, con lo que conseguimos una
aplicaci´on de visi´on computacional en tiempo real. Tampoco
es afectado por cambios de iluminaci´on, reflejos o sombras.
Como trabajo a futuro desarrollaremos aplicaciones que hagan
uso del sistema propuesto en este art´ıculo. Principalmente nos
interesa trabajar en interfaces naturales que detecten gestos de
manos y dedos en 3D.
REF ERE NCIAS
[1] Jun Rekimoto Adiyan Mujibiya, Takashi Miyaki. Anywhere touchty-
ping: Text input on arbitrary surface using depth sensing. UIST ’10
Adjunct proceedings of the 23nd annual ACM symposium on User
interface software and technology, 2010.
[2] Thien Cong Pham Dung Duc Nguyen and Jae Wook Jeon. Fingertip de-
tection with morphology and geometric calculation. The 2009 IEEE/RSJ
International Conference on Intelligent Robots and Systems, 2009.
[3] Yoav Freund and Robert E. Schapire. A decision-theoretic generalization
of on-line learning and an application to boosting. Journal of Computer
and System Sciences, 1997.
[4] Y. Kobayashi H. Tobita H. Koike, Y. Sato and M. Kobayash. Visual
tracking of bare fngers for interactive surface. ACM Symposium on
User interface Software and Technology (UIST ’04), 2004.
[5] M. K. Hu. Visual pattern recognition by moment invariants. IRE Trans.
Inform. Theory, 1962.
[6] M.J. Thali S. Ross L.C. Ebert, G. Hatch. Invisible touch—control of a
dicom viewer with finger gestures using the kinect depth camera. Journal
of Forensic Radiology and Imaging, Volume 1, Issue 1, 2013.
[7] Byungsung Lee and Junchul Chun. Manipulation of virtual objects in
marker-less ar system by fingertip tracking and hand gesture recognition.
ICIS ’09, 2009.
[8] Byungsung Lee and Junchul Chun. Manipulation of virtual objects in
marker-less ar system by fingertip tracking and hand gesture recognition.
ICIS ’09 Proceedings of the 2nd International Conference on Interaction
Sciences: Information Technology, Culture and Human, 2009.
[9] Taehee Lee and T. Hollerer. Handy ar: Markerless inspection of
augmented reality objects using fingertip tracking. Wearable Computers,
2007 11th IEEE International Symposium on, 2007.
[10] Koike. H Oka. K, Sato. Y. “real-time tracking of multiple fingertips and
gesture recognition for augmented desk interface system. Proceedings of
the Fifth IEEE International Conference on Automatic Face and Gesture
Recognition, 2002.
[11] Naotoshi Seo. Tutorial: Opencv haartraining (rapid object detection
with a cascade of boosted classifiers based on haar-like features).
http://note.sonots.com/SciSoftware/haartraining.html, 2008.
[12] Thiago R. Trigo and Sergio Roberto M. Pellegrino. An analysis of
features for hand-gesture classification. 17th International Conference
on Systems, Signals and Image Processing, 2010.
[13] Liu Yun and Zhang Peng. An automatic hand gesture recognition system
based on viola-jones method and svms. 2009 Second International
Workshop on Computer Science and Engineering, 2009.