宋麗銘 陳虹云 徐歡瀟 胡瑞成 李佳雯









摘? 要:隨著人機交互技術的不斷發(fā)展,人與機器智能交流也受到越來越多專家學者的關注。如今,手勢識別作為當前人機交互的主要方式之一,已經(jīng)廣泛應用于圖像處理和虛擬現(xiàn)實等領域。文章打破以往會議中使用鼠標或者翻頁筆進行會議控制的局限性,并基于手勢識別的優(yōu)越性設計出根據(jù)會議演講者的實時手勢操作對PowerPoint進行實時控制的會議控制系統(tǒng)。
關鍵詞:畫面捕捉;手勢識別;會議控制
中圖分類號:TP391? ? ? ? 文獻標識碼:A文章編號:2096-4706(2022)01-0079-04
Abstract: With the continuous development of human-computer interaction technology, more and more experts and scholars pay attention to the intelligent communication between human and machine. Nowadays, as one of the main ways of human-computer interaction, gesture recognition has been widely used in the fields of image processing and virtual reality. This paper breaks the limitations of using mouse or page turning pen for conference control in previous meetings, and designs a conference control system for real-time control of PowerPoint according to the real-time gesture operation of conference speakers based on the advantages of gesture recognition.
Keywords: picture capture; gesture recognition; conference control
0? 引? 言
人機交互一般是指人通過計算機設備能過與計算機相互交流的過程。以往人們是采用鍵盤、鼠標或者翻頁筆來實現(xiàn)人機交互。隨著計算機硬件的不斷升級和計算機技術的不斷提高,人機交互的方式變得多種多樣,例如:可穿戴式設備、手勢識別、聲音識別和人臉識別等等。在人機交互領域里,使用計算機硬件來實現(xiàn)人機交互已經(jīng)不再流行,取而代之的是人體自然感應,人體自然感應的使用變得越來越普遍。手勢識別是當前人機交互的主要方式之一。
在以往的會議中,通常是匯報者使用PowerPoint進行展示并配合以相應的解說,結束后參會人員再分別發(fā)表各自意見。在演講中對PowerPoint進行展示的時候,通常有重點部分和非重點部分。因此,對于每一頁的停留,翻頁就成了控制會議進度的主要方式。因為手勢多種多樣、靈活多變,及時從未使用過手勢識別的使用者也很容易上手,從而降低了用戶使用新產(chǎn)品難度,節(jié)約了大量的時間成本。手勢識別作為當前社會比較熱門的一個研究方向,手勢識別還有一個好處是可以是人機交互更為自然,可以增加會議的趣味性。
經(jīng)調(diào)研,會議室的人一般都在十人左右,為了解決每個人都能參與到會議系統(tǒng)的控制中的問題,本文結合手勢識別的優(yōu)越性設計出基于手勢識別的會議控制系統(tǒng)。
本系統(tǒng)可以通過手勢識別實現(xiàn)以會議為背景,對于PowerPoint的打開,關閉,放大,縮小以及向上翻頁和向下翻頁。當會議系統(tǒng)打開時,通過連接攝像頭,可以捕捉手勢畫面并傳到后臺進行識別,然后發(fā)出相應指令。最后,屏幕上的PowerPoint頁面即可執(zhí)行相應指令,本文中的系統(tǒng)識別率高達百分之九十,目測達到了預期的效果。
1? 系統(tǒng)設計
本文對很多家中小型公司以及中小學進行了會議控制系統(tǒng)使用需求的調(diào)研。本文所闡述的系統(tǒng)主要運用的是opency、python以及圖像處理的相關技術,需要用到的庫有cv2,numpy,copy,math等。
本系統(tǒng)的運行環(huán)境是:使用軟件為pycharm,電腦系統(tǒng)為Windows 10。本系統(tǒng)在臺式機和筆記本上均可以運行,為了系統(tǒng)運行的穩(wěn)定性,建議使用臺式電腦,攝像頭另備,只需常規(guī)攝像頭連接電腦即可,打開pycharm運行代碼即可自動連接攝像頭進行識別。
系統(tǒng)主要需要突破兩大難點是定義攝像頭和捕捉圖像。本系統(tǒng)主要分為三大模塊,分別是會議準備模塊、系統(tǒng)操作模塊和會議結束模塊。在系統(tǒng)操作模塊中包含PowerPoint的頁面放大和縮小以及向上和向下翻頁。會議控制系統(tǒng)框架圖如圖1所示。
2? 功能設計與實現(xiàn)
2.1? 會議控制系統(tǒng)手勢錄入
手勢輸入模型會對手勢是否定義進行有效的判斷。如果系統(tǒng)沒有預先錄入手勢,則不能實現(xiàn)相應的人機交互功能。因此,會議控制系統(tǒng)在使用前需要預先進行手勢錄入。將會議所要使用的手勢錄入系統(tǒng)同并生成相應的指令。本文所寫的系統(tǒng)主要針對的是會議系統(tǒng)中PPT的操作,對會議中所要用到的放大頁面,縮小頁面,翻頁等功能指令進行對比,運用的代碼也是當前比較流行的python。
目前的手勢識別技術主要包含數(shù)據(jù)處理、手勢分析和識別處理三個部分。數(shù)據(jù)處理主要是通過使用API技術截取當前頁面下的一個矩形區(qū)域,在該矩形區(qū)域內(nèi),錄制所要用到的手勢指令,該區(qū)域就是手勢識別的區(qū)域,形成該矩形區(qū)域的主要目的在于避免去識別一些不需要的東西,能夠?qū)⑺R別的手勢更加突出顯示。然后,系統(tǒng)再監(jiān)測該區(qū)域是否有手勢指令。如果檢測到對應的手勢指令,則將該手勢指令從當前矩形區(qū)域中分離出來,這就是手勢分析,分析得當,則再對該手勢進行相應的指令檢測,并選用特定的手勢進行對比,得出應有的指令,最后對系統(tǒng)進行對應操作,這就是識別處理部分。手勢識別流程如圖2所示。
系統(tǒng)在獲得手勢輪廓后,繪制出手勢輪廓圖,再對手勢的二值圖進行判斷。判斷采用特征法,先用API獲取手部輪廓計算手勢凹凸包,得到手部剛好包圍起來的凸多邊形,最后使用imshow得到大致的效果圖樣式。如圖3所示,在用戶握拳之后,系統(tǒng)可以的到效果樣式4。
2.2? 會議控制系統(tǒng)手勢實現(xiàn)
該PowerPoint控制程序,包括四個命令:播放PowerPoint(全屏),退出全屏,下一頁,上一頁。
在控制程序中可設置了一個“開關”:連續(xù)檢測到手掌5幀就打開開關,即可進一步接受其他的命令。用戶可以預先并且設置時間,如果打開開關超過5秒鐘就會自動關閉。這里設置為5秒鐘是因為演講者一般一個命令時間很快,關閉命令開關避免界面中其他干擾。
命令執(zhí)行:PowerPoint的這三個模塊可以通過簡單的模擬鍵盤發(fā)送消息,“F5”,“ESC”,“→”,“←”,這個可以通過發(fā)送消息函數(shù)(定義一個函數(shù))就可以了,當執(zhí)行了這個命令以后就立馬關閉命令開關,防止比如你移動手的時候會出現(xiàn)連續(xù)發(fā)送消息造成錯誤。
2.2.1? PowerPoint啟動模塊
播放PowerPoint命令:如果已經(jīng)打開了命令開關并且沒有超過5秒鐘,手掌→拳頭→手掌。
首先,系統(tǒng)會對攝像頭中捕捉到的畫面進行識別,當在攝像頭中檢測到拳頭并且沒有超過20幀(這里設置成20幀是為退出全屏命令用的),忽然變成了手掌,可以認為:拳頭變成手掌,手掌打開就是打開PowerPoint的命令。
此時電腦中的PowerPoint會進行縮放全屏,會將整個頁面呈現(xiàn)到桌面上,接下來便可以進行其他指令。此時,電腦的攝像頭捕捉到的畫面是握著的拳頭,時間沒有超過20幀,如圖4所示。
在沒有超過20幀的前提下,拳頭變成了伸開的手掌,由拳頭變成手掌,意味著要將PowerPoint頁面放大,而此時畫面中所呈現(xiàn)出來的畫面就是PowerPoint全屏畫面,如圖5所示。
辨別“開關”手勢代碼為:
輸入:系統(tǒng)開始識別第一個手勢
輸出:對應手勢和位置或者識別失敗
(1) global fist, palm, FIST, PALM
(2) fists = fist.detectMultiScale(img, 1.3, 5)
(3) if len(fists) > 0:
(4)? ? ? return FIST, fists[0]
(5) palms = palm.detectMultiScale(img, 1.3, 5)
(6) if len(palms) > 0:
(7)? ? ? return PALM, palms[0]
(8) return -1, -1
第(3)~(7)步,如果圖像包含一個拳頭,則返回FIST(0)和拳頭的位置。如果圖像包含一個手掌,則返回PALM(1)和手掌的位置。第(8)步識別失敗。
識別“開始”手勢具體代碼為:
(1)global FIST, PALM
(2)? ? for i in range(len(seqs) - 1, 0, -1):
(3)? ? ? ? if seqs[i] == PALM:
(4)? ? ? ? ? ? for j in range(i):
(5)? ? ? ? ? ? ? if seqs[j] == FIST:
(6)? ? ? ? ? ? ? ? ? ? return True
(7)? ? ? ? ? ? break
第(2)~(6)步,舉起拳頭之后,張開手掌,表示“開始”手勢。
2.2.2? PowerPoint關閉模塊
退出PowerPoint全屏:打開命令以后,一直是拳頭超過20幀就可以認為是關閉PowerPoint命令。如圖3所示,該系統(tǒng)捕捉到的手勢畫面是拳頭,手掌呈現(xiàn)握住狀態(tài)。
如圖6所示,當攝像頭捕捉到的拳頭畫面超過20幀,PowerPoint的畫面由全屏變?yōu)榇翱冢赐顺觥?/p>
識別“關閉”手勢具體代碼設計為:
(1) global exit_fist_len, FIST, PALM
(2)off_count = 5
(3)win_width = exit_fist_len + off_count
(4)cur_fist_cnt = 0
(5)for i in range(min(win_width, len(seqs))):
(6)? ? if seqs[i] == FIST:
(7)? ? ? ?cur_fist_cnt += 1
(8)if cur_fist_cnt >= exit_fist_len:
(9)? ? return True
(10)for i in range(win_width, len(seqs)):
(11)? ?if seqs[i] == FIST:
(12)? ? ? ? cur_fist_cnt += 1
(13)? ?if i - win_width >= 0 and seqs[i - win_width] == FIST:
(14)? ? ? ? cur_fist_cnt -= 1
(15)? ? if cur_fist_cnt >= exit_fist_len:
(16)? ? ? ? return True
第(5)~(9)步,在運行過程中,如果[exit_fist_len+off_count]幀包含[exit_fist_len]拳頭,這是退出手勢。理想情況下,如果每一幀連續(xù)[exit_fist_len]幀的幀都包含拳頭,那就是退出手勢。
2.2.3? PowerPoint翻頁模塊:
向上翻頁命令:剛開始張開手掌打開命令以后,程序會自動計算手掌的中心位置,如果手掌移動,會實時檢測手掌的中心位置,如果手掌的中心位置偏移超過一定的閾值,就可以做向下翻頁或者向上翻頁的命令。
如圖7所示,假設攝像頭捕捉到的畫面是一只張開的手掌,系統(tǒng)記錄現(xiàn)在手掌在畫面中的位置。
如圖8所示,攝像頭捕捉到的畫面是一只張開的手掌,系統(tǒng)記錄現(xiàn)在識別框中手掌在屏幕中的位置,并與上一張圖中手掌在屏幕中識別框的位置進行對比,可見手掌從第一張圖到第二張圖的位置發(fā)生了變動,向右移動,此時PowerPoint從第一頁進行到了第二頁,即為翻頁。
識別“翻頁”手勢具體代碼設計如下。
(1)omx = open_pos[0] + open_pos[2] / 2
(2)omy = open_pos[1] + open_pos[3] / 2
(3)cmx = cur_pos[0] + cur_pos[2] / 2
(4)cmy = cur_pos[1] + cur_pos[3] / 2
(5)thr = (open_pos[2] + open_pos[3] + cur_pos[2] + cur_pos[3]) / 4
(6)if abs(cmx - omx) > thr:
(7)return True, cmx > omx
(8)return False, 0
(9) else:
(10) start_seq = 0def draw_fist_palm(img, fop, pos):
第(1)~(2)步計算手掌中心的原始位置,第(3)~(4)步計算手掌中心的當前位置,第(5)步計算手掌大小平均值,第(6)~(10)步,判斷移動的X個偏移量是否大于手掌的大小,如果手掌的中心位置偏移超過一定的閾值,就可以做向下翻頁或者向上翻頁的命令。
3? 結? 論
手勢識別作為該系統(tǒng)中的主要技術,在當前國內(nèi)的各大高校和公司中所使用的技術仍然很不成熟。本文所寫的很多代碼以及功能在其他很多設備中都是得以常見的功能,但對于會議控制系統(tǒng)中的手勢指令,該系統(tǒng)的想法和功能都是比較新穎的。本系統(tǒng)可以解決了會議中需要借助于鼠標或者翻頁筆才能實現(xiàn)會議控制的局限性,便于在多人會議中會議系統(tǒng)的控制以及各抒己見,提高了會議中各位員工的交互。同時也可以減少以往會議控制中無趣性,對會議展示有了很大的提升。
參考文獻:
[1] MOSCHETTI A,F(xiàn)IORINI L,ESPOSITO D,et al. Recognition of Daily Gestures with Wearable Inertial Rings and Bracelets [J].Sensors,2016,16:1341.
[2] NISHIHARA H K,HSU S P,KAEHLER A,et al. Hand-gesture recognition method:US20090103780A1 [P].2009-04-23.
[3] 肖茜,楊平,徐立波.一種基于MEMS慣性傳感器的手勢識別方法 [J].傳感技術學報,2013,26(5):611-615.
[4] 任海兵,祝遠新,徐光祐,等.連續(xù)動態(tài)手勢的時空表觀建模及識別 [J].計算機學報,2000(8):824-828.
[5] YANG Q F,TANG H,ZHAO X B. Dolphin:Ultrasonic-Based Gesture Recognition on Smartphone Platform [C]//2014 IEEE 17th International Conference on Computational Science and Engineering.IEEE:Chengdu,2014:1461-1468.
作者簡介:宋麗銘(1999—),女,漢族,江蘇泰州人,本科在讀;研究方向:軟件開發(fā);通訊作者:陳虹云(1993—),女,漢族,江蘇南通人,講師,碩士,研究方向:信息安全、計算機技術。