• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于OpenCV的一種手勢識(shí)別方法

      2015-07-02 13:17:11代麗男韓格欣薄純娟
      物聯(lián)網(wǎng)技術(shù) 2015年6期
      關(guān)鍵詞:手勢識(shí)別模式識(shí)別圖像處理

      代麗男 韓格欣 薄純娟

      摘 要:手勢識(shí)別已發(fā)展成為計(jì)算機(jī)人機(jī)交互的一個(gè)重要組成部分,穩(wěn)定、高效的識(shí)別系統(tǒng)可將人機(jī)交互體驗(yàn)提升到一個(gè)新的高度。簡要分析了OpenCV計(jì)算機(jī)視覺庫,提出了一種可行的手勢識(shí)別方法,實(shí)現(xiàn)了該算法并驗(yàn)證了其穩(wěn)定性和效率。

      關(guān)鍵詞:OpenCV;手勢識(shí)別;模式識(shí)別;圖像處理

      中圖分類號(hào):TP368 文獻(xiàn)標(biāo)識(shí)碼:B 文章編號(hào):2095-1302(2015)06-00-03

      0 引 言

      隨著科技的日益進(jìn)步,傳統(tǒng)的、基于鍵盤鼠標(biāo)的人機(jī)交互方式略顯單調(diào)。各國的研究者們探索著一個(gè)又一個(gè)新的人機(jī)交互方式,而在這些方式中,基于圖像理解的方式已經(jīng)取得了很大的進(jìn)展。我們的生活離不開肢體動(dòng)作,而圖像方式是計(jì)算機(jī)能夠理解人類動(dòng)作最直接的方式。圖像處理的研究內(nèi)容非常廣泛,配合統(tǒng)計(jì)、模式識(shí)別等學(xué)科知識(shí)的應(yīng)用,我們已經(jīng)能夠識(shí)別并理解常用的人類肢體動(dòng)作。

      在肢體動(dòng)作中,手勢動(dòng)作又是其中的重點(diǎn)。如今很多新的交互方式都建立在手勢識(shí)別理解的基礎(chǔ)上,例如:Microsoft的kinect系統(tǒng),primesense的生物識(shí)別系統(tǒng)等。很多公司已經(jīng)將其應(yīng)用到了醫(yī)療、教育教學(xué)、失語者手勢理解等領(lǐng)域。因此,研究手勢識(shí)別理解將會(huì)是未來計(jì)算機(jī)領(lǐng)域的一大熱點(diǎn)。

      運(yùn)動(dòng)識(shí)別系統(tǒng)的進(jìn)步伴隨著數(shù)字圖像處理領(lǐng)域的進(jìn)步,各國學(xué)者相繼開發(fā)出了大量優(yōu)秀的計(jì)算機(jī)視覺和圖像處理軟件包。大多數(shù)軟件包基于計(jì)算速度的考慮采用C/C++ 編寫[1]。雖然這些軟件包對計(jì)算機(jī)圖像處理和計(jì)算機(jī)視覺的研究提供了很大地便利,但也存在著不足之處[2]:

      (1)現(xiàn)行的多數(shù)圖像處理平臺(tái)沒有提供高級(jí)數(shù)學(xué)函數(shù);

      (2)Matlab 的運(yùn)行速度需要提高并且對宿主機(jī)器的配置要求較高;

      (3)絕大多數(shù)圖像處理庫不支持嵌入式程序開發(fā)。

      開源計(jì)算機(jī)視覺庫OpenCV(Open Source Computer Vision Library)的出現(xiàn)極大地彌補(bǔ)了這些不足,給開發(fā)者提供了強(qiáng)大的綜合開發(fā)平臺(tái)。

      1 OpenCV簡介

      OpenCV(Open Source Computer Vision Library)誕生于Intel 研究中心,是一個(gè)開放源代碼的、高質(zhì)量的計(jì)算機(jī)視覺庫。它輕量且高效,采用C/C++ 語言編寫,可以運(yùn)行在Linux/Windows/Mac等操作系統(tǒng)上。OpenCV 還提供了Python、Ruby、Matlab及其他語言的接口[3]。OpenCV中包含了大量經(jīng)典的計(jì)算機(jī)視覺處理函數(shù),這些函數(shù)涵蓋了機(jī)器視覺領(lǐng)域的大多數(shù)應(yīng)用。OpenCV提供的視覺處理算法非常豐富,利用其開源特性,只要開發(fā)者處理得當(dāng),不需要添加新的外部支持也可以支持完整的編譯鏈接生成執(zhí)行程序。

      OpenCV 現(xiàn)行版本為2.4.11.0,已放出了3.0.0的Beta版本?,F(xiàn)行版本的OpenCV分為18個(gè)模塊,其中常用的有8個(gè)模塊:

      (1)Core:定義基本的數(shù)據(jù)結(jié)構(gòu),包括矩陣和被其他模塊使用的公共函數(shù);

      (2)Imgproc:包含線性和非線性圖像過濾器、幾何圖形變化、色彩空間變化等功能;

      (3)Video:包含運(yùn)動(dòng)分析、背景剪切和對象追蹤等功能;

      (4)Calib3d:包含多視角集合算法、3D重建等功能;

      (5)Features2d:包含特征匹配等功能;

      (6)Objdetect:包含預(yù)定義對象距離探測等功能;

      (7)Highui:包含一個(gè)簡單易用的高層級(jí)接口,用以抽象不同操作系統(tǒng)對視頻提取和圖像操作的功能;

      (8)GPU:包含GPU加速相關(guān)的算法,這些算法可以被其他模塊使用以加速程序的運(yùn)轉(zhuǎn)。

      2 手勢識(shí)別簡介

      根據(jù)計(jì)算機(jī)系統(tǒng)檢測手勢姿態(tài)的傳感器的不同,我們可以將手勢識(shí)別理解系統(tǒng)分為兩類:一是利用數(shù)據(jù)手套獲相關(guān)技術(shù);二是利用計(jì)算機(jī)視覺捕獲和處理圖像流。利用數(shù)據(jù)手套捕獲技術(shù)實(shí)現(xiàn)的手勢識(shí)別系統(tǒng)使用不方便,用戶需要學(xué)習(xí)的內(nèi)容多且使用場景受到限制,而且成本較高[4]。而基于計(jì)算機(jī)視覺的手勢識(shí)別系統(tǒng)則具有使用場景廣闊、使用習(xí)慣符合人體本能、傳感器成本低、普及率高等優(yōu)勢。

      基于圖像的手勢識(shí)別系統(tǒng)一般可分為手勢姿態(tài)圖像采集、手勢姿態(tài)圖像分割、手勢姿態(tài)特征提取及手勢姿態(tài)識(shí)別四個(gè)步驟[5]。

      在大量手勢識(shí)別系統(tǒng)的實(shí)際開發(fā)過程中,都牽扯到使用膚色過濾系統(tǒng)來分割獲取手勢的binary圖像。手勢姿態(tài)的binary圖像的獲取關(guān)系到后期手勢姿態(tài)理解的穩(wěn)定性和準(zhǔn)確性,但是人體的手部顏色受到個(gè)體差異、光源顏色以及光照角度的影響,其中任何一個(gè)因素變化都將造成陰影、遮蔽等不良影響[6]。手勢識(shí)別的方法主要有4種,具體見表1。

      表1 手勢識(shí)別方法靜態(tài)識(shí)別[7] 動(dòng)態(tài)識(shí)別[8]

      模板匹配法(TM) 動(dòng)態(tài)時(shí)間規(guī)整法(DTW)

      神經(jīng)網(wǎng)絡(luò)法(NN) 隱馬爾可夫模型法(HMM)

      本文首先使用YCrCb膚色分割算法在使用者在線模式下提取使用者手勢姿態(tài)30組,利用30組手勢姿態(tài)的均值測量出使用者手部的色彩平均值;然后提取環(huán)境光照的平均值、極大值和極小值,利用環(huán)境關(guān)照的取值和手部均值做運(yùn)算,特定區(qū)域內(nèi)找點(diǎn)最少的環(huán)境光照值和手部均值,最后利用這兩個(gè)值進(jìn)行手勢姿態(tài)圖像binary處理。將得到的binary圖像進(jìn)行特征化處理,得到手部特征點(diǎn),通過對特征點(diǎn)的運(yùn)算,得到最終的手勢姿態(tài)理解。

      3 手勢姿態(tài)的binary處理

      手勢姿態(tài)的binary處理核心代碼如下:

      主函數(shù):

      frame = cvQueryFrame(capture);

      //讀取一幀圖像

      //cvShowImage( “Main_cam” , frame);

      if( !frame ) break;

      assert( 0 ==

      binary_image_process( frame , mask , high_threshold1 , high_threshold2 , high_threshold3 , &is_get_binary )

      );

      cvShowImage( “Binary_cam” , mask );

      //binary_image_process函數(shù),使用環(huán)境光和膚色在線測量均值得到的三個(gè)閾值:threshold1,threshold2,threshold3,分別對應(yīng)YCrCb顏色空間的Y,CR,CB通道:

      IplImage* ycrcb = cvCreateImage( cvGetSize(frame) , 8 , 3 );

      cvCvtColor( frame , ycrcb , CV_BGR2YCrCb );

      for(int i=0 ; i < ycrcb->height ; i++ ) //二值化

      {

      uchar *row = (uchar *)(ycrcb->imageData) + i * ycrcb->widthStep;

      for(int j=0 ; j < ycrcb->width ; j++ )

      {

      uchar *p = row + 3*j ;

      //if( *(p+1) > threshold2 && *(p+2) < threshold3 )//||

      if( *(p) < threshold1 )

      {

      binary_image->imageData[ i * (binary_image->widthStep) + j ] = 255; // 白色

      }

      else

      {

      binary_image->imageData[ i * (binary_image->widthStep) + j ] = 0; // 黑色

      }

      }

      }

      IplConvKernel *element = cvCreateStructuringElementEx( 4 , 4 , 0 , 0 , CV_SHAPE_RECT );//創(chuàng)建用于腐蝕的核函數(shù)

      cvErode( binary_image , binary_image , element , 1); // Erotion

      cvDilate( binary_image , binary_image , NULL , 1); // Dilation

      cvReleaseStructuringElement( &element );

      cvReleaseImage( &ycrcb );

      經(jīng)過提取的手勢識(shí)別binary圖形如圖1(a)~(e)所示。

      可見此方法提取的binary圖像清晰準(zhǔn)確,具有利用價(jià)值,可以為后期的特征提取與識(shí)別創(chuàng)造有利條件。

      (a) (b)

      (c) (d)

      (e)

      圖1 手勢識(shí)別binary圖形

      4 手勢姿態(tài)特征的識(shí)別與理解

      首先,我們通過對最小包絡(luò)圓和手腕的計(jì)算得出手掌心的位置,然后利用每個(gè)點(diǎn)與相鄰點(diǎn)做向量外積計(jì)算是否為手指尖點(diǎn)和手縫點(diǎn),最后即可得出手勢姿態(tài)的全部特征點(diǎn)。

      //計(jì)算整個(gè)輪廓的中心點(diǎn)

      for( int i=0 ; i < real_contours_number ; i++ ){

      contour_rectangle = cvMinAreaRect2( sort_contours[i] , 0 );

      arm_center[i].x = cvRound( contour_rectangle.center.x );

      arm_center[i].y = cvRound( contour_rectangle.center.y );

      cvCircle( frame , arm_center[i] , 10 , CV_RGB(255,255,255) , -1 , 8 , 0 );

      }

      //取得凸包,畫出指縫

      for( int i=0 ; i < real_contours_number ; i++ ){ get_convex_hull( i );

      finger_tip( i );

      hand( i );

      cvClearSeq( hull ); //清空凸包序列

      cvClearSeq( defect );

      }

      最終,得到的含有全部手勢特征點(diǎn)的圖像如圖2(a) 、圖2(b)所示。

      (a) (b)

      圖2 含有全部手勢特征點(diǎn)的圖像

      5 結(jié) 語

      新版本的OpenCV計(jì)算機(jī)視覺庫給我們提供了很強(qiáng)大的計(jì)算機(jī)視覺處理能力,利用其提供的高級(jí)別函數(shù)和矩陣運(yùn)算能力,開發(fā)者們可以開發(fā)出大量基于圖像的應(yīng)用。利用OpenCV強(qiáng)大的可移植能力,開發(fā)者可以使用相應(yīng)的移植工具將PC平臺(tái)上的成果轉(zhuǎn)化到移動(dòng)端,這將會(huì)為開發(fā)者創(chuàng)造新的機(jī)會(huì)。

      參考文獻(xiàn)

      [1]喻擎蒼, 翁秀娟, 趙勻,等.交互式開放結(jié)構(gòu)計(jì)算機(jī)視覺平臺(tái)[J]. 計(jì)算機(jī)工程與應(yīng)用,2006,42(23):78-81.

      [2]秦小文, 溫志芳, 喬維維. 基于OpenCV的圖像處理[J]. 電子測試, 2011(7):39-41.

      [3]于仕琪, 劉瑞禎. 學(xué)習(xí)OpenCV( 中文版)[M]. 北京:清華大學(xué)出版社,2009.

      [4] LEE C, XU Y. Online interactive learning of gestures for human /robot interfaces [C] Proceedings of the 1996 IEEE International Conference on Robotics and Automation. Washington,DC: IEEE Computer Society Press,1996,4: 2982-2987.

      [5]趙健, 張冬泉. 基于OpenCV的數(shù)字手勢識(shí)別算法[J]. 計(jì)算機(jī)應(yīng)用, 2013, 33(z2):193-196.

      [6] SURAL S,QIAN G,PRAMANIK S.Segmentation and histogram generation using the HSV color space for image retrieval[C] of the 2002 International Conference on Image Processing.Piscataway: IEEE,2002: 589 - 592.

      [7]郭興偉,葛元,王林泉.基于形狀特征的字母手勢的分類及識(shí)別算法[J].人工智能及識(shí)別技術(shù),2004,30( 18) : 130-132.

      [8] LEE H-K,KIM J H. An HMM-based threshold model approach for gesture recognitio[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1999,21(10):961-973.

      猜你喜歡
      手勢識(shí)別模式識(shí)別圖像處理
      機(jī)器學(xué)習(xí)在圖像處理中的應(yīng)用
      電子制作(2018年18期)2018-11-14 01:48:20
      模糊圖像處理,刑事偵查利器
      圖像處理技術(shù)的實(shí)戰(zhàn)應(yīng)用
      淺談模式識(shí)別在圖像識(shí)別中的應(yīng)用
      電子測試(2017年23期)2017-04-04 05:06:50
      第四屆亞洲模式識(shí)別會(huì)議
      基于手勢識(shí)別的工業(yè)機(jī)器人操作控制方法
      基于紅外的非接觸式手勢識(shí)別系統(tǒng)設(shè)計(jì)
      基于嵌入式的智能手表設(shè)計(jì)
      復(fù)雜背景下的手勢識(shí)別方法
      第3屆亞洲模式識(shí)別會(huì)議
      盱眙县| 如东县| 上林县| 柞水县| 武陟县| 富源县| 安康市| 巫溪县| 长垣县| 三门峡市| 嵩明县| 江永县| 黎川县| 宽甸| 东乡县| 中宁县| 洪江市| 新竹市| 固安县| 巴楚县| 德令哈市| 南溪县| 扶风县| 喜德县| 许昌县| 巢湖市| 张家港市| 鄂伦春自治旗| 湖南省| 屯昌县| 邵武市| 黄骅市| 无为县| 盐源县| 通榆县| 屏东市| 松溪县| 封开县| 荥阳市| 望江县| 东山县|