Kinect for Windows SDK開發入門(十)手勢識別 上:基本概念

來源:互聯網
上載者:User

像點擊(clicks)是GUI平台的核心,輕點(taps)是觸摸平台的核心那樣,手勢(gestures)是Kinect應用程式的核心。和圖形化使用者介面中的數字互動不同,手勢是現實生活中存在的動作。如果沒有電腦我們就不需要滑鼠,但是沒了Kinect,手勢依然存在。從另一方面講,手勢是日常生活中人與人之間相互交流的一部分。手勢能夠增強演講的說服力,能夠用來強調和傳遞情感。像揮手(waving)或者指向(pointing)這些手勢都是某種無聲的演講。

Kinect應用程式的設計和開發人員的任務就是將這些現實生活中存在的手勢映射到電腦互動中去以傳達人的想法。嘗試從滑鼠或觸摸式的GUI設計移植基於手勢的自然互動介面要做很多工作。借鑒過去30多年來對於這一概念的研究,以及從一些Kinect for Xbox的體感遊戲中擷取一些設計理念,電腦工程師和互動設計師一起為Kinect建立了一系列新的手勢庫。

本文將會介紹使用者體驗的一些知識,並討論如何將手勢應用到Kinect應用程式中。我們將展示Kinect如何作為自然互動介面(Natural User Interface)的人機互動模型的一部分。我們將討論一些具體的使用Kinect來進行手勢識別及互動的例子。更重要的是,將會展示一些已經作為Kinect手勢識別庫中的手勢。

1. 什麼是手勢

在許多不同的學科中,手勢(gesture)有著其獨特的含義,可能這些含義之間有某些異同。在藝術領域,手勢被用來傳達舞蹈中最富表現力的部分,特別是在亞洲舞蹈藝術中,手勢被作為某些宗教符號或者象徵。在互動設計領域,在基於觸摸的自然互動介面中手勢和操控有很大區別。

以上這些說明手勢在不同的學科領域都有自己獨特的含義。在學術領域都試圖對手勢定義一個抽象的概念。在使用者體驗設計領域使用最廣泛的關於手勢的定義實在Eric Hulteen 和Gord Kurtenbach 1990年發表的一篇名為人機互動中的手勢(Gestures in Human-Computer Communication),定義如下:”手勢是身體的運動,他包含一些資訊。揮手道別是一種手勢。敲擊鍵盤不是手勢,因為用手指的運動去敲擊按鍵沒有被觀察,也不重要,他只表達的鍵盤被按下這一動作。(A gesture is a motion of the body that contains information. Waving goodbye is a gesture. Pressing a key on a keyboard is not a gesture because the motion of a finger on its way to hitting a key is neither observed nor significant. All that matters is which key was pressed)”

這個定義既解釋了什麼是手勢也解釋了什麼不是手勢。像這樣的下一個正式的定義通常有兩個方面的困難,既要避免太具體也要避免太抽象。如果一個定義太具體-如,定義某項技術-可能會隨著UI技術的變化會變得模糊不清。作為一種學術定義而不是以常見的用法為基礎的定義,它也必須足夠一般,並且符合或者說廣大的研究機構先前已發表在HCI的研究成果及藝術中符號學。另一方面,定義過於寬泛,也會有有無關緊要的風險:如果一切都是一種姿態,那麼就什麼都不是了。

Eric Hulteen 和Gord Kurtenbach關於手勢的定義的中心在於手勢能夠用來交流,手勢的意義在於講述而不是執行。

有趣的是將語言和行為引入到人機互動介面中來,這是一種徹底的變革。我們與電腦互動語音變為無聲的語言(mute):我們通過指向和手勢而不是語言與計算裝置進行溝通。當和電腦進行互動時,我們點擊鍵盤按鍵或觸控螢幕幕。我們似乎更喜歡這種形式的靜音通訊即使當前的技術能夠支援更簡單的語音指令。我們沒有操作(manipulation)的力量,和虛擬對象而不是真實的物體進行互動,因而沒有持久性。運動成為純粹的手勢。

基於Eric Hulteen 和Gord Kurtenbach的定義,我們都明白什麼是 UI 操作 ——暫時不是一種手勢 ——理解什麼是手勢以及手勢表示"重大"行為或者符號仍然有很大的困難。移動互動的含義是什嗎?手勢進行溝通和語言進行溝通的最明顯不同是什嗎?我們做手勢的象徵意義往往很抽象簡單。

在人機互動領域,手勢通常被作為傳達一些簡單的指令而不是交流某些事實、描述問題或者陳述想法。使用手勢操作電腦通常是命令式的,這通常不是人們使用手勢的目的。例如,揮手(wave)這一動作,在現實世界中通常是打招呼的一種方式,但是這種打招呼的方式在人機互動中卻不太常用。通常第一次寫程式通常會顯示“hello”,但我們對和電腦打招呼並不感興趣。

但是,在一個繁忙的餐館,揮手這一手勢可能就有不同的含義了。當向服務員招收時,可能是要引起服務員注意,需要他們提供服務。在電腦中,要引起電腦注意有時候也有其特殊意義,比如,電腦休眠時,一般都會敲擊鍵盤或者移動滑鼠來喚醒,以提醒電腦“注意”。當使用Kinect時,可以使用更加直觀的方式,就行少數派報告阿湯哥那樣,抬起雙手,或者簡單的朝電腦揮揮手,電腦就會從休眠狀態喚醒。

在人機互動領域,手勢通常有一些含義,表示有意讓某些事情發生。手勢是一種指令。當通過滑鼠或者觸控板去點擊UI介面上的按鈕時,我們希望按鈕會觸發其背後的事件。通常,按鈕上會有一個標籤來指示按鈕的功能如:開始、取消、開啟、關閉。我們的手勢操作就是想要實現這些事件。

上面的定義中的第一點可以得出,手勢的另一個特點是比較隨意(arbitrary)。手勢有限定的領域,那麼在該領域之外沒有任何意義。令人驚訝的是除了指向(pointing)和聳肩(shurg),人類學家沒有發現任何東西我們可以稱之為一種通用的手勢。然而,在電腦的UI中,指向(pointing)通常被認為是直接操作因為它牽涉到跟蹤,同時聳肩的含義太微妙而不好辨識。因此,我們想要使用的任何Kinect手勢必須基於應用程式的使用者 和應用程式的設計和開發人員之間就某種手勢代表的含義達成一致。

因為手勢是任意的(arbitrary)所以他們也是基於約定的(conventional)。應用程式的設計者必須告訴使用者正在使用的手勢的意義,或者是這些手勢是約定俗稱大家都知道的。此外,這些約定不是基於語言文化,而是對已確定的技術規則。我們知道如何使用滑鼠 (行為學習) 並不是因為這是我們已經從我們的文化匯入的東西,而是因為這是基於特定的圖形化使用者介面的跨文化約定。同樣地,我們知道如何點擊或滑動智能手機,不是因為這些都是文化的約定,而是因為這些都是跨文化自然使用者介面項約定。有趣的是,我們在一定程度上知道如何點擊平板電腦,因為我們以前學習了如何使用按一下滑鼠。技術約定之間可以相互轉化,這是因為語言和手勢可以通過不同的語言和文化之間來轉換。

然而,手勢的這種任意性和基於約定的特性也帶來了誤解性(misunderstanding),這是在設計任何使用者介面,尤其是像Kinect這樣的沒有任何預先設定好的操作約定的使用者介面時需要關注的風險。就像在有些國家,點頭表示否定搖頭表示可能。手勢,或者任何身體的運動,都有可能產生誤解。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.