Abstract
This paper proposes a novel approach to extract human hand gesture features in real-time from RGB-D images based on the earth mover’s distance and Lasso algorithms. Firstly, hand gestures with hand edge contour are segmented using a contour length information based de-noise method. A modified finger earth mover’s distance algorithm is then applied applied to locate the palm image and extract fingertip features. Lastly and more importantly, a Lasso algorithm is proposed to effectively and efficiently extract the fingertip feature from a hand contour curve. Experimental results are discussed to demonstrate the effectiveness of the proposed approach.
Similar content being viewed by others
References
Alexiadis DS et al. (2011) Evaluating a dancer’s performance using kinect-based skeleton tracking. Proceedings of the 19th ACM international conference on Multimedia. ACM
Bay H, Tuytelaars T, Van Gool L (2006) Surf: Speeded up robust features. Computer Vision–ECCV 2006. Springer Berlin Heidelberg. 404–417
Dollár P, Rabaud V, Cottrell G, Belongie S (2005) Behavior recognition via sparse spatio-temporal features. In: Visual surveillance and performance evaluation of tracking and surveillance, 2005. 2nd Joint IEEE International Workshop on, IEEE, 65–72
Farid H, Simoncelli EP (1997) Optimally rotation-equivariant directional deriva- tive kernels. In: Computer analysis of images and patterns. Springer, 207–214
Han J et al (2013) Enhanced computer vision with microsoft kinect sensor: a review. IEEE Trans Cybern 43(5):1318–1334
Ju Z, Liu H (2011) A unified fuzzy framework for human hand motion recognition. IEEE Trans Fuzzy Syst 19(5):901–913
Ju Z, Liu H (2012) Fuzzy Gaussian mixture models. Pattern Recogn 45(3):1146–1158
Ju Z, Wang Y, Chen SY, Liu H (2013) Depth and RGB image alignment for hand gesture segmentation using Kinect, Proc. International Conference on Machine Learning and Cybernetics, 1–8, Tianjing, China
Keskin C et al. (2013) Real time hand pose estimation using depth sensors. Consumer Depth Cameras for Computer Vision. Springer London. 119–137
Khoshelham K, Elberink SO (2012) Accuracy and resolution of kinect depth data for indoor mapping applications. Sensors 12(2):1437–1454
Li C, Ma H, Yang C, Fu M (2014) Teleoperation of a virtual iCub robot under framework of parallel system via hand gesture recognition, Fuzzy Systems (FUZZ-IEEE). IEEE International Conference on, 1469–1474
Liang H, Yuan J, Thalmann D (2012) 3D fingertip and palm tracking in depth image sequences. Proceedings of the 20th ACM international conference on Multimedia. ACM
Matyunin S et al. (2011) Temporal filtering for depth maps generated by kinect depth camera. 3DTV Conference: the true vision-capture, Transmission and display of 3D video (3DTV-CON), 2011. IEEE
Reddivari H, Yang* C, Ju Z, Liang P, Li Z, Xu B (2014) Teleoperation Control of Baxter Robot using Body Motion Tracking, the 2014 I.E. International Conference on Multisensor Fusion and Information Integration, Beijing, China, September 28–30, pp. 1–6
Tang M (2011) Recognizing hand gestures with microsoft’s kinect. Palo Alto: Department of Electrical Engineering of Stanford University:[sn]
Tara R, Santosa P, Adji T (2012) Hand segmentation from depth image using anthropometric approach in natural interface development. Int J Sci Eng Res 3(5):1–4
Wang B, Yang C, Xie Q (2012) Human-machine Interfaces based on Electromyography and Kinect applied to Teleoperation of a Mobile Humanoid Robot, the 10th World Congress on Intelligent Control and Automation (WCICA), pp. 3903–3908, Beijing, China
Zhou R, Yuan J, Meng J, Zhang Z (2013) Robust part-based hand gesture recognition using Kinect sensor. IEEE Trans. On Multimedia 15(5)
Zhou R et al. (2011) Minimum near-convex decomposition for robust shape representation. Computer Vision (ICCV), 2011 I.E. International Conference on. IEEE
Zhou R et al. (2011) Robust hand gesture recognition with kinect sensor. Proceedings of the 19th ACM international conference on Multimedia. ACM
Zhu H-M, Pun C-M (2011) Hand gesture recognition with motion tracking on spatial-temporal filtering. In: Proceedings of the 10th International Confer- ence on Virtual Reality Continuum and Its Applications in Industry, ACM, 273–278
Acknowledgments
The authors would like to acknowledge support from DREAM project of EU FP7-ICT 611391 and Research Project of State Key Laboratory of Mechanical System and Vibration China MSV201508.
Author information
Authors and Affiliations
Corresponding author
Appendix
Appendix
Algorithm 1 Hand Edge Contour Generation
Require: Pixel[r] {Pixel is a 4 dimensional dataset with n pixels in the RGB-D image and r = {1,…,n}, n is the total number of the pixels in the image}
Require: Hand_centre {Hand_centre is the location of the centre of the tracked hand}
Require: initial_depth {initial_depth is the average depth of the tracked hand}
mini_depth = initial_depth-offset {offset is the user chosen threshold}
max_depth = initial_depth + offset
for all i such that 0≤i≤n do
if mini_depth≤depth(i)≤max_depth and |pos(i)-Hand_centre| ≤0.5*body_length {body_length is the preset length of the body in pixels; depth(i) returns the depths of pixcel[i]; pos() gets the position of pixel[i],} then
is_hand[i] ← true {is_hand[] is an array that indicates hand pixels}
else
is_hand[i] false
end if
end for
for all i such that 0≤i≤n do
if Is_hand[i]==true then
K {k1,…,k8| |pos(k r ) − pos(i)| < 2} {get the eight nearby pixels around the ith pixel, 0≤r≤n}
if \( \prod_{j=1}^8 Is\_ hand\left[{k}_j\right]== true \) then
Is_contour[i] ← true {Is_contour[] is an array that indicates the hand contour}
else
Is_contour[i] ← false
end if
else
is_contour[i] ← false
end if
end for
return is_contour
Algorithm 2 Lasso Algorithm
struct m_signature {structure of fingertip feature}
{
int a,b {the coordinate values of the fingers}
bool R_suspended,L_suspended {indicates if the lasso is suspended}
double rope_length {the length of the lasso}
}
Dim m_signature_num As int {number of the fingertip signature}
Dim L_cur As int {left cursor of the lasso}
Dim R_cur As int {right cursor of the lasso}
Dim R_cur_move As bool
Dim L_cur_move As bool {if the cursor should be moved}
Dim distance As int {the dynamic length of the lasso}
Dim pre_distance As int {the former dynamic length of the lasso}
Rope(m_signature[],m_signature_num,L_cur,R_cur,R_cur_move,distance,pre_distance) {function of the lasso algorithm}
{
For all i such that 0≤i≤m_signature_num {m_signature_num is the number of fingertip features} then
While distance<m_signature[i].rope_length {if the length of the lasso is longer than the preset value of the width of the finger,that means the lasso has clamped completely, the lasso procedure will come to an end}
Do
If (R_suspended) AND (R_cur_move) then
R_cur<−R_cur+1 {move R_cur right}
calculate R_suspended
If R_suspended==ture {if the right side of the lasso is suspended, then its left side will move left} then
R_cur_move ← false
calculate distance
end if
If (distance > pre_distance) AND (!L_suspended) {if the length of the lasso become longer, then its left side will move left} then
R_cur_move ← false
pre_distance ← distance
Else If (!L_suspended)AND(L_cur_move) then
L_cur ← L_cur+1
calculate L_suspended
end if
If L_suspended==true {if the left side of the lasso is suspended, then move the right side towards the right next} then
R_cur_move ← true
calculate distance
end if
If (distance>pre_distance&&!R_suspended) {if the length of the lasso become longer,then move the right side towards the right} then
R_cur_move ← true
pre_distance ← distance
end if
end if
end while
m_signature[i].a ← L_cur
m_signature[i].b ← R_cur
end for
Rights and permissions
About this article
Cite this article
Ju, Z., Gao, D., Cao, J. et al. A novel approach to extract hand gesture feature in depth images. Multimed Tools Appl 75, 11929–11943 (2016). https://doi.org/10.1007/s11042-015-2609-2
Received:
Revised:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11042-015-2609-2