Skip to main content

Advertisement

Log in

A novel approach to extract hand gesture feature in depth images

  • Published:
Multimedia Tools and Applications Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9

Similar content being viewed by others

References

  1. 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

  2. Bay H, Tuytelaars T, Van Gool L (2006) Surf: Speeded up robust features. Computer Vision–ECCV 2006. Springer Berlin Heidelberg. 404–417

  3. 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

  4. Farid H, Simoncelli EP (1997) Optimally rotation-equivariant directional deriva- tive kernels. In: Computer analysis of images and patterns. Springer, 207–214

  5. Han J et al (2013) Enhanced computer vision with microsoft kinect sensor: a review. IEEE Trans Cybern 43(5):1318–1334

    Article  Google Scholar 

  6. Ju Z, Liu H (2011) A unified fuzzy framework for human hand motion recognition. IEEE Trans Fuzzy Syst 19(5):901–913

    Article  Google Scholar 

  7. Ju Z, Liu H (2012) Fuzzy Gaussian mixture models. Pattern Recogn 45(3):1146–1158

    Article  MATH  Google Scholar 

  8. 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

  9. Keskin C et al. (2013) Real time hand pose estimation using depth sensors. Consumer Depth Cameras for Computer Vision. Springer London. 119–137

  10. Khoshelham K, Elberink SO (2012) Accuracy and resolution of kinect depth data for indoor mapping applications. Sensors 12(2):1437–1454

    Article  Google Scholar 

  11. 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

  12. 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

  13. 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

  14. 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

  15. Tang M (2011) Recognizing hand gestures with microsoft’s kinect. Palo Alto: Department of Electrical Engineering of Stanford University:[sn]

  16. 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

    Google Scholar 

  17. 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

  18. Zhou R, Yuan J, Meng J, Zhang Z (2013) Robust part-based hand gesture recognition using Kinect sensor. IEEE Trans. On Multimedia 15(5)

  19. Zhou R et al. (2011) Minimum near-convex decomposition for robust shape representation. Computer Vision (ICCV), 2011 I.E. International Conference on. IEEE

  20. Zhou R et al. (2011) Robust hand gesture recognition with kinect sensor. Proceedings of the 19th ACM international conference on Multimedia. ACM

  21. 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

Download references

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

Authors

Corresponding author

Correspondence to Honghai Liu.

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

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

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

Download citation

  • Received:

  • Revised:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11042-015-2609-2

Keywords

Navigation