• 沒有找到結果。

聲音頭手-Kinstead

N/A
N/A
Protected

Academic year: 2021

Share "聲音頭手-Kinstead"

Copied!
55
0
0

加載中.... (立即查看全文)

全文

(1)

i

國立臺灣科技大學 資訊管理系

實務專題研究報告

Kinstead

─使用 Kinect 的電腦互動介面

指導教授: 楊傳凱老師

學生姓名: B9809027 孫義峰 B9809050 汪志軒 B9830405 謝欣翰 B9830424 陳威廷

(2)

ii

摘要

隨著生活方式的改變,現代人不論做什麼事都幾乎會用到電腦,像 是聽音樂或看影片等,就連用餐時也離不開電腦。但是有時候可能不方 便使用鍵盤與滑鼠。所以我們希望透過不用接觸鍵盤及滑鼠也可以操作 電腦,讓使用者更加方便。

體感操作是現代相當熱門的技術,像是 Wii、PlayStation Move 以 及 Kinect 都是使用這項技術。而我們想要透過 Kinect 來利用這項技術 以解決不便於操作鍵盤及滑鼠的困擾。

目前 Kinect 大部分用於遊戲應用上,藉由 Kinect 的體感操作便利 性,我們想要把這項有力的操作方法應用於個人電腦的操作上,透過 Kinect 蒐集深度資訊與使用者進行互動。

因為 Kinect 除了 RGB 彩色影像以外,還擁有紅外線的鏡頭,因此我 們可以藉由紅外線取得的深度影像來判斷使用者的動作,控制電腦的各 種操作功能。除了一般市面上體感操作常見的手部控制,我們還實作了 頭部控制和語音控制等,也支援了很多常用的應用程式基本快捷鍵控 制。

(3)

iii

誌謝

感謝楊傳凱老師在我們遭遇到問題時,給我們問題解決的方向。

感謝劉曜華學長、莊宜欣學姊提供讓我們參考的書面資料。

感謝所有協助我們測試程式功能的同學。

(4)

iv

目錄

摘要 ... ii

誌謝 ... iii

目錄 ... iv

圖表目錄 ... vi

第壹章 緒論 ... 1

一、研究動機與系統目標 ... 1

二、系統特色 ... 3

三、Logo 介紹 ... 4

第貳章 系統分析與設計 ... 5

一、初期系統分析與設計 ... 5

二、系統整體架構圖 ... 6

三、時程規劃 ... 8

第參章 系統使用的技術、平台與工具 ... 11

一、技術 ... 11

二、平台 ... 21

三、工具 ... 22

第肆章 系統使用說明 ... 23

一、配備需求 ... 23

(5)

v

二、使用流程 ... 23

三、介面說明 ... 25

四、模式說明 ... 31

第伍章 未來展望 ... 43

第陸章 開發過程 ... 44

第柒章 結論 ... 47

參考文獻 ... 48

作者介紹 ... 50

(6)

vi

圖表目錄

圖 1-1 Wii 與 PlayStation Move 控制器...1

圖 1-2 Kinect 各部分功能...2

圖 1-3 Kinstead Logo...4

圖 2-1 初期系統流程...5

圖 2-2 系統架構...6

圖 3-1 手部操控空間深度示意圖...11

圖 3-2 Distance Transform 示意圖...12

圖 3-3 辨識手指數量(第一、第二個圓)...13

圖 3-4 辨識手指數量(第三個圓)...14

圖 3-5 頭部操控空間深度示意圖...16

圖 3-6 頭部辨識示意圖...17

圖 3-7 語音偵測範圍...20

圖 3-8 Kinect...21

圖 4-1 開啟 Kinstead 程式...23

圖 4-2 Kinstead 歡迎畫面...24

圖 4-3 Kinstead 工具...24

圖 4-4 Kinstead 工具(按鈕)...25

圖 4-5 Kinstead 按鈕介面...25

(7)

vii

圖 4-6 設定畫面...26

圖 4-7 說明畫面...27

圖 4-8 提示燈...28

圖 4-9 距離感測計...28

圖 4-10 移動方向提示球...29

圖 4-11 游標位置提示環...29

圖 4-12 停止使用操作功能提示...30

圖 4-13 使用距離提示...30

圖 4-14 語音偵測角度範圍...32

圖 4-15 手部辨識提示...36

圖 4-16 辨識完成提示...36

圖 4-17 頭部辨識提示...39

圖 4-18 辨識完成提示...39

圖 6-1 Bounding Box 示意圖...45

表 2-1 預計進度表...8

表 2-2 實際進度表...9

表 4-1 實作的應用程式...31

表 4-2 瀏覽器類語音指令表...33

表 4-3 簡報類語音指令表...33

(8)

viii

表 4-4 PDF 檢視器類語音指令表...33

表 4-5 圖片瀏覽器類語音指令表...34

表 4-6 影音播放類語音指令表...34

表 4-7 音樂播放類語音指令表...35

表 4-8 第一區塊的手勢表...37

表 4-9 第二區塊的手勢表...37

表 4-10 頭部滑鼠操控動作表...40

表 4-11 瀏覽器類頭部操作動作表...41

表 4-12 簡報類頭部操作動作表...41

表 4-13 PDF 檢視器類頭部操作動作表...41

表 4-14 圖片瀏覽器類頭部操作動作表...41

表 4-15 影音播放類頭部操作動作表...42

表 4-16 音樂播放類頭部操作動作表...42

(9)

1

第壹章 緒論

一、研究動機與系統目標

在開發系統之前,我們選擇了 Kinect 來做為我們的開發工具。Kinect 比起其他的開發工具(如:Wii、PlayStation Move…等)少了手把這項 物品,提供了一個免持裝置解決方案(Handsfree Solution)。

圖 1-1 Wii 與 PlayStation Move 控制器1

在某些情境下,如在用餐時雙手需要拿著食物,無法操控鍵盤及滑 鼠;或者是身心障礙人士,無法如一般人流暢的使用鍵盤及滑鼠,透過 我們的系統可以解決此等窘境,讓使用者感受自然暢快的操作。

又因為使用雙手控制作業系統已有多位先進研究且已有系統在市場 上販售,所以我們想要結合身體的其他部位(如頭部)或使用聲音來對 電腦進行控制。

(10)

2

由於目前 Kinect 大部分用於 XBOX360 的遊戲應用上,有鑑於 Kinect 的體感操作便利性,我們想要把這項有力的操作方法應用於個人電腦的 操作上,透過 Kinect 蒐集深度資訊與使用者進行互動。

Kinect 除了 RGB 彩色影像以外,還擁有紅外線的鏡頭,因此我們可 以藉由紅外線取得的深度影像來判斷使用者的動作,控制滑鼠進行操作。

不必擔心在光源不足時,會有影像資訊無法使用的情況。

圖 1-2 Kinect 各部分功能2

我們的系統目標就是利用 Kinect 設計出一套不需要使用鍵盤、滑鼠 即可操作電腦的系統。

在市面上看到多數利用 Kinect 操控電腦的方式大多為手部的操控,

但我們不只要做到手部操控,甚至在無法空出手的情況下也可以利用別 的方式(如:聲控)來操控電腦。

(11)

3

二、系統特色

不需使用鍵盤、滑鼠,以手、頭及語音即可操作電腦。

(一)可用手勢操控電腦

一般市面上的 Kinect 應用大多是使用雙手操控,而我們只需要用一 隻手,加上一些簡單的手勢,即可操控電腦。

(二)可用頭部動作操作電腦

除了基本的手勢操控之外,還可以使用頭部操控電腦。其他開發頭 部操作功能的開發者,大多數都是只有使用頭部操縱滑鼠游標,而我們 更加入了搭配頭部轉動的方向進行特定的指令操作功能。

(三)可用聲控操作電腦

目前利用 Kinect 聲控功能操控電腦的應用較少,所以為了能充分運 用 Kinect 的強大功能,我們決定再加入聲控的操作。

(12)

4

三、Logo 介紹

圖 1-3 Kinstead Logo

(一)Kinstead 的由來

我們系統名稱的由來是以 Kinect 的前三個字母「Kin」與 Instead

(取代)做結合,而產生的新字。代表著使用本系統可以取代鍵盤與滑 鼠的操作功能。

(二)圖片設計概念

上方的人物為將 Kinect 裝置擬人化,藉由踩踏於鍵盤與滑鼠上來表 達出取代這兩項操作方式的想法。

(13)

5

第貳章 系統分析與設計

一、初期系統分析與設計

圖 2-1 初期系統流程

開始

判斷使 用模式

取得深 度資訊

聲音辨識 手勢辨識

取得聲 音資訊

結束 是否辨

識成功

頭部辨識

是否辨 識成功

呼叫對應該模 式的操作

是否辨 識成功

是否繼續 使用系統

手模式

頭模式

(14)

6

本系統的初期構想為透過 Kinect 鏡頭所取得的深度畫面(平面)資 訊,經由我們的系統轉換為滑鼠的座標位置。以及經由 Kinect 鏡頭所得 到的深度畫面(距離遠近)資訊,來做為滑鼠點擊動作的依據。

二、系統整體架構圖

圖 2-2 系統架構

(一)Kinect

Microsoft Kinect API:偵測和取得已連接的 Kinect 裝置硬體資料,

再設定 Kinect 執行時所需的屬性,並開啟 Kinect 的 Depth stream 及 Audio stream。

Microsoft Speech API:包含語音辨識引擎,利用呼叫此 API 的函

Modes

Head Hand

Voice Kinect

Interface

Microsoft Speech API

Microsoft Kinect API

(15)

7

式庫來完成語音指令辨識。

(二)Interface

使用語音指令或是圖形化使用者介面切換模式時,Interface 會把深 度資料傳送給 Modes 做運算,並且將運算結果回傳至 Interface,以利 interface 提供距離感測計(詳見圖 4-9)、移動方向提示球(詳見圖 4-10) 游標位置提示環(詳見圖 4-11)、使用距離提示(詳見圖 4-13)等提示 資訊。

(三)Modes

Hand:從得到的深度資料利用 Distance Transform 算出滑鼠游標位置、

畫圓判斷手勢以及確認使用者手部位置符合可操作區域,再依手 勢呼叫 Windows API 做滑鼠移動、左鍵單擊、左鍵雙擊、右鍵、

中鍵、滾輪、左鍵拖曳等事件。

Head:使用演算法得到額頭深度,以及利用人體特徵找肩膀,用肩膀中 心判斷肩膀和頭部的左右偏移量,再依頭和肩膀的偏移方向呼叫 Windows API 做滑鼠移動、左鍵單擊、左鍵雙擊、右鍵、中鍵事件。

Voice:限制聲波來源的角度,以及調整聲波比對的信心水準。

(16)

8

三、時程規劃

(一)預計進度:

日期 工作

2011/11 月 討論

2011/12 月 決定以 Kinect 做為專題研究 2012/1 月 討論多種 Kinect 應用方案 2012/2 月 討論實作細節與進行實作 2012/3 月上旬 實作手勢部分

2012/3 月下旬 實作頭部部分 2012/4 月上旬 實作聲控部分

2012/4 月下旬 實作聲控結合應用程式 2012/5 月上旬 實作使用者自定義功能 2012/5 月下旬 實作操作建模軟體 2012/6 月上旬 系統、介面設計 2012/6 月下旬 尋找實作的應用程式 2012/7 月上旬 介面繪製

2012/7 月下旬 微調手勢部分 2012/8 月上旬 微調頭部部分

(17)

9

2012/8 月下旬 微調聲控部分 2012/9 月上旬 系統、文件整合 2012/9 月下旬 最終系統測試

表 2-1 預計進度表

(二)實際進度:

日期 工作

2011/11 月 討論

2011/12 月 決定以 Kinect 做為專題研究 2012/1 月 討論多種 Kinect 應用方案 2012/2 月 討論實作細節與進行實作 2012/02/16~03/09 實作手勢部分

2012/03/12~03/29 實作頭部部分 2012/04/02~04/12 實作聲控部分

2012/04/16~05/28 實作聲控結合應用程式 2012/05/03~05/21 設計及確認題目與 LOGO 2012/05/15~06/05 微調聲控部分

2012/06/06~06/29 微調手勢部分

(18)

10

2012/06/06~07/08 微調頭部部分 2012/07/01~09/19 介面繪製 2012/07/08~07/13 系統測試 2012/07/13~08/12 優化手勢部分 2012/07/15~08/03 優化頭部部分 2012/08/12~09/09 系統整合 2012/08/23~09/29 文件整合 2012/09/09~09/29 最終系統測試

表 2-2 實際進度表

(19)

11

第參章 系統使用的技術、平台與工具

一、技術

(一)手勢辨識 1. 空間深度

依據空間深度資訊,分為不同深度的兩個區塊。離使用者較近的為 第一個區塊,而較遠的為第二個區塊。

第一個區塊為滑鼠移動與左、右、中鍵點擊區,第二個區域為滑鼠 拖曳區。

圖 3-1 手部操控空間深度示意圖

2. Distance Transform

先取出在深度畫面上,手的每像素到邊緣的最短距離,再從其中取 出最大值(n),藉此判斷手掌的中心點(如圖 3-2)。

(20)

12

圖 3-2 Distance Transform 示意圖

依此方法取得的最大值可能會有多個,而為避免抓取到手掌以外的 區塊,必須限制抓取在畫面上較高的位置,如此就能去除多餘的極大值。

Distance transform(距離轉換)定義:

假設 I 為一張二元影像,各像素的值為 1 或 0;其中的 1 代表手的區 塊,其所構成的集合為 H;而 0 代表背景,其所構成的集合為 B;亦即 H

∪B = I 且 H∩B = ∅。而距離轉換即針對圖片中每一個背景點,求取該 點到手區塊所有點距離中最短者。若 I 中的點 x∈B,令 dt(x)表示 x 經 過距離轉換的結果,則:

(21)

13

其中 δ(x, y) 表示 x 與 y 間的距離。

Distance transform 實作方式:

陣列第 元素,

陣列元素個數

3. 辨識手指數量

取得手掌的中心點後,以掌心為基準畫一個圓,第二個圓為了加強 判斷手勢精準度,藉此判斷目前的手勢。

圖 3-3 辨識手指數量(第一、第二個圓)

(22)

14

在進行滑鼠左鍵點擊時,為防止隨意點擊的情況發生,會額外加上 第三個圓,以確認是否進行點擊。

圖 3-4 辨識手指數量(第三個圓)

實作方式:

r=distance transform 得到的極大值 再利用畫圓所接觸到的連續區域判斷手指數量。

4. 手部辨識初始化

當晃動手臂時,記錄全畫面共 30 個畫格的深度資訊,將畫面上像素 深度逐一檢查,把有差異且目前較淺的深度作為手部操作範圍判定起點。

此外,手掌進入感應範圍時,手部必須進入足夠的面積才開始移動游標。

(23)

15

實作方式:

5.游標速度調整

做游標穩定處理以及游標減少延遲處理。當手部快速移動時,游標 會以目前手部位置反映至螢幕之游標位置;當手部靜止或移動量較小時,

做與後面畫格平均以維持游標穩定。

以下為游標座標位置更改之實作方式:

(1)當手移動速度較快時:

目前滑鼠座標

a=滑鼠轉換前座標,b=上個滑鼠座標,c=上上個滑鼠座標(i,j,k 分別 為當時 distance transform 所取得之點)

(2) 當手移動速度較慢時:

目前滑鼠座標 滑鼠

(24)

16

a=滑鼠轉換前座標,b=上個滑鼠座標,c=上上個滑鼠座標(i,j,k 分別 為當時 distance transform 所取得之點)

(二)頭部辨識

圖 3-5 頭部操控空間深度示意圖 1.頭部辨識初始化

(1) 肩膀偵測

從拍到的畫面上找到一條較長的線,做為與實際肩膀的比對,頭部 左右偏移的中點亦為肩膀中點。

(2) 額頭偵測

利用得到的肩膀位置來判斷額頭位置,取額頭區塊較淺的深度資訊,

再進行平均,作為判斷是否抬頭與低頭的標準。

(25)

17

圖 3-6 頭部辨識示意圖

2. 判斷抬頭與低頭

抬頭與低頭是以額頭深度變化做為判斷基準。當頭向上抬時,額頭 部分的深度對於 Kinect 而言會加深;反之,當向下低頭時,額頭區域的 深度對於 Kinect 而言會變淺。

滑鼠移動實作方式:

(1)慢速移動時:

(2)快速移動時:

new=目前額頭深度,old=初始額頭深度,a=額頭差異量下界,b=額頭差 異量上界

(26)

18

3. 左右偏移

左右偏移的判斷則是以肩膀寬度的中心點移動變化量來判斷。當肩 膀向左平移時,依此判斷為向左的動作;反之,當肩膀向右平移時,依 此判斷為向右的動作。

肩膀左右移動滑鼠實作方式:

(1)慢速移動

(2)快速移動

new=目前肩膀中心 x 值,old=初始肩膀中心 x 值,a=肩膀差異量下界,

b=肩膀差異量上界

4. 滑鼠點擊

以肩膀寬度的中心點與額頭的中心點的差異變化量以判斷,若額頭 中心點向左偏移一定距離時,會呼叫 Windows API 進行滑鼠左鍵點擊的 動作,向右偏移時,會進行滑鼠右鍵點擊的動作。另外,抬頭並回到原 位置速度達到系統規定時,會進行滑鼠中鍵點擊的動作,低頭則是滑鼠 左鍵雙擊。

實作方式:

左鍵雙擊和中鍵

(27)

19

n=總額頭像素,a=目前額頭像素深度,b=前一額頭像素深度

左右鍵單擊

f=目前額頭像素 x 值,s=目前肩膀中心 x 值,a=初始額頭像素 x 值,b=

初始肩膀中心 x 值,m=額頭像素數量,n=肩膀像素數量

(三)語音辨識 1. 語音辨識引擎

使用 Microsoft Speech API,在一部分的語音指令再加上前置詞 Kinstead 以減少誤判。

2. 辨識信心水準

以 90%的信心水準辨識門檻加強辨識準確度,減少周遭雜音被誤認為 語音指令的機率。

(28)

20

3. 角度

圖 3-7 語音偵測範圍

為了防止周遭的雜訊影響本系統的語音偵測,我們將 Kinect 語音偵 測範圍縮小成只限於 Kinect 正前方正負大約 15 度之間(Kinect 正前方 為 0 度)。

(29)

21

二、平台

(一)電腦配備

作業系統 Microsoft Windows 7 Professional with Service Pack 1 32-bit

處理器 Intel(R) Core(TM)2 Quad CPU Q8400 @ 2.66GHz (4 CPUs) 記憶體 4096MB RAM

Direct 版本 DirectX 11

(二)Microsoft XBOX 360 KINECT 感應器

圖 3-8 Kinect3

(30)

22

三、工具

(一)Microsoft Kinect SDK 1.0 beta 2

微軟的 Kinect 軟體開發套件(Software Development Kit, SDK)。

(二)Microsoft Visual C# 2010 Express 程式開發工具。

(三)Coding4Fun Kinect Toolkit

將一些在開發 Kinect 應用程式時會使用到的程式碼整理成擴充方 法的工具包,開發 Kinect 應用程式時可以簡化程式碼的撰寫。

(四).NET Framework 4.0 程式執行環境所需使用的架構。

(五)Photoshop

影像處理軟體,用來繪製 Kinstead 的介面。

(31)

23

第肆章 系統使用說明

一、配備需求

作業系統:Windows 7 (x86 / x64) 硬體:

CPU:雙核 2.66GHz 以上 RAM:2GB 以上

顯示卡:支援 DirectX 9.0c 以上 Kinect 感應器

二、使用流程

(一)請先接上 Kinect,並且將 Kinect 置放於擺放螢幕的桌子上。請儘 可能地將 Kinect 放置在螢幕正前方的位置。

(二)開啟 Kinstead 程式

圖 4-1 開啟 Kinstead 程式

(32)

24

(三)出現歡迎畫面

圖 4-2 Kinstead 歡迎畫面

(四)畫面頂端出現 Kinstead 工具

圖 4-3 Kinstead 工具

(33)

25

(五)將滑鼠游標移至畫面頂端即出現 Kinstead 工具按鈕,可開始選擇 想要使用的模式。

圖 4-4 Kinstead 工具(按鈕)

三、介面說明 (1) 按鈕

圖 4-5 Kinstead 按鈕介面

將滑鼠游標移至畫面頂端會出現工具按鈕,總共有六個按鈕,分別

(34)

26

是 Voice、Hand Mouse、Face Mouse、Face Function、設定、說明。以 下為每個按鈕的簡介:

Voice(語音操作模式):可用特定詞彙對電腦進行操作。

Hand Mouse(手部滑鼠操作模式):可用手部的移動以及手勢模擬滑鼠對 電腦進行的操作。

Face Mouse(頭部滑鼠操作模式):可用頭部的擺動模擬滑鼠對電腦進行 的操作。

Face Function(頭部功能操作模式):可用頭部的上、下、左、右擺動 對特定程式進行功能操作。

設定:可以依據使用者喜好調整 Kinstead 的細項設定。

圖 4-6 設定畫面

(35)

27

語音偵測:可控制語音偵測的開啟與否。

置於最上層:可讓使用者控制是否要讓本系統置於最上層。

顯示深度畫面:可讓使用者控制是否要顯示深度畫面。

說明:可觀看語音指令表及手部、頭部操作方式等說明。

圖 4-7 說明畫面

簡易說明:有各種模式的動作及語音指令表。

詳細說明:包含從放置 Kinect 動作開始的完整使用說明。

(36)

28

(2) 提示燈

圖 4-8 提示燈

提示燈同時會出現兩個,左側為目前語音偵測的狀態(開啟時為水 藍色、關閉時為灰色);右側則為目前使用的模式(Voice、Hand Mouse、

Face Mouse、Face Function)。

(3) 距離感測計

圖 4-9 距離感測計

距離感測計為一個提示使用者距離 Kinect 遠近的參考指標,在這個 感測計中有三個顏色區塊:

第一區塊(灰色):距離太遠或太近,Kinect 偵測不到使用者。

第二區塊(綠色):滑鼠可進行移動、單擊、雙擊動作的距離範圍。

第三區塊(黃色):滑鼠可進行拖曳、滾輪動作的距離範圍。

(37)

29

(4)移動方向提示球

圖 4-10 移動方向提示球

為了讓使用者可以方便了解滑鼠滾輪的滾動方向以及頭部擺動對應 的方向,使用這些功能時,在 Kinstead 工具的右方會出現一個黃色的圓 球,會隨著使用者的動作而移動黃色圓球的位置。

(5)游標位置提示環

圖 4-11 游標位置提示環

當 使 用 者 一 時之間 找 不 到 滑 鼠游標 時 , 只 需 對 著 Kinect 說 出 Kinstead Cursor,就會在目前滑鼠游標的所在位置出現醒目提示。

(38)

30

(6)停止使用操作功能提示

圖 4-12 停止使用操作功能提示

當使用者臨時需要停止使用操作功能時,可以對著 Kinect 說出 Kinstead Stop 或是直接遮住 Kinect 的深度感應鏡頭即可停止使用操作 功能。如果需要繼續使用操作功能,請重新進行該模式的辨識動作。

(6)使用距離提示

當使用者在完成辨識動作前,如果距離 Kinect 太遠或太近,將會出 現提示。

圖 4-13 使用距離提示

(39)

31

四、模式說明 實作的應用程式:

類型 程式

瀏覽器

Firefox

Google Chrome Internet Explorer

簡報

Open Office Impress PowerPoint

PDF 檢視器

Adobe Reader Foxit Reader Xchange Viewer

圖片瀏覽器

Irfan Viewer

Windows Photo Viewer

影音播放

GOM player KMPlayer

Media Player Classic Real player

Windows Media Player

(40)

32

音樂播放

iTunes KKBOX 千千靜聽

表 4-1 實作的應用程式

※對著 Kinect 說出 Kinstead Speech 可開啟或關閉語音偵測。

1. 聲音模式

(1) 聲控操作方法

※需要在語音偵測為開啟狀態時才能使用。

使用滑鼠按下 Voice 按鈕或對著 Kinect 說出 Kinstead Voice。

為了避免使用者聲音之外的噪音干擾,語音的偵測有一定的範圍,

使用時請坐在 Kinect 的正前方,以達到更好的使用體驗。先切換至想操 作的應用程式視窗,再說出想執行的指令。

圖 4-14 語音偵測角度範圍

(41)

33

可用語音指令列表:

瀏覽器類

指令 Previous Next Upper Lower Larger 動作 上一頁 下一頁 往上捲動 往下捲動 放大 指令 Smaller Original Full screen Close

動作 縮小 原始尺寸 全螢幕 關閉

表 4-2 瀏覽器類語音指令表

簡報類:

指令 Previous Next Upper Lower Play 動作 上一頁 下一頁 往上捲動 往下捲動 播放 指令 Stop Original Full screen Close

動作 停止 取消全螢幕 全螢幕 關閉

表 4-3 簡報類語音指令表

PDF 檢視器類:

指令 Previous Next Upper Lower Larger 動作 上一頁 下一頁 往上捲動 往下捲動 放大

(42)

34

指令 Smaller Original Full screen Close

動作 縮小 最適寬度 全螢幕 關閉

表 4-4 PDF 檢視器類語音指令表

圖片瀏覽器類:

指令 Previous Next Larger Smaller Play

動作 上一張 下一張 放大 縮小 播放

指令 Pause Stop Original Full screen Close

動作 暫停 停止 原始尺寸 全螢幕 關閉

表 4-5 圖片瀏覽器類語音指令表

影音播放類:

指令 Previous Next Larger Smaller Play Pause 動作 上一個 下一個 放大 縮小 播放 暫停 指令 Forward Backward Stop Original Full screen Close 動作 快轉 倒帶 停止 原始尺寸 全螢幕 關閉

註:Real player 無 Previous、Next 功能 表 4-6 影音播放類語音指令表

(43)

35

音樂播放類:

指令 Previous Next Play Pause

動作 上一首 下一首 播放 暫停

指令 Forward Backward Stop Close

動作 快轉 倒帶 停止 關閉

註:iTunes、KKBOX 無 Forward、Backward 功能 表 4-7 音樂播放類語音指令表

2. 手部滑鼠操控模式

使用滑鼠按下 Hand Mouse 按鈕或對著 Kinect 說出 Kinstead Hand Mouse。

(1) 手部辨識前置動作

為了可以隨著使用者使用電腦習慣的距離而變動調整使用範圍,操 縱滑鼠之前需要先進行辨識手部位置的動作。

※請先調整座位為自己最舒適的距離(由於 Kinect 本身的硬體限制,使 用者距離 Kinect 約需至少 1 公尺)。

步驟一:請將手半舉。

(44)

36

圖 4-15 手部辨識提示

步驟二:說出 Kinstead Initialize,並同時輕搖手部。出現辨識成功提 示後即可開始使用手部滑鼠操控模式。

圖 4-16 辨識完成提示

(45)

37

(2) 手勢操作方法

手勢操作分為兩個感應區塊,離使用者較近的區塊為第一區塊,控 制滑鼠單擊、雙擊及移動的功能。而離使用者較遠的第二區塊,控制滑 鼠的左鍵拖曳、右鍵拖曳以及滾輪的功能。

第一區塊的手勢表:

滑鼠動作 手 勢

左鍵單擊 比出 1

右鍵單擊 比出 3

左鍵雙擊 比出 2

中鍵單擊 比出 5

移 動 比出拳頭

表 4-8 第一區塊的手勢表

第二區塊的手勢表:

滑鼠動作 手 勢

左鍵拖曳 比出 1

右鍵拖曳 比出 3

(46)

38

滾 輪 比出 5

表 4-9 第二區塊的手勢表

3. 頭部模式

(1) 頭部偵測前置動作(頭部滑鼠操控模式及頭部功能操控模式動作相 同)

為了可以隨著使用者使用電腦習慣的距離而變動調整位置,操縱滑 鼠之前需要先進行偵測頭部位置的動作。

※請先調整座位為自己最舒適的距離(由於 Kinect 本身的硬體限制,使 用者距離 Kinect 至少約需要 1 公尺)。

步驟一:請盡量保持坐姿端正

步驟二:說出 Kinstead Initialize,同時身體請保持不移動的狀態。出 現辨識成功提示即可開始使用頭部滑鼠操控模式

(47)

39

圖 4-17 頭部辨識提示

圖 4-18 辨識完成提示

(48)

40

(2) 頭部滑鼠操控模式

使用滑鼠按下 Face Mouse 模式或對著 Kinect 說出 Kinstead Face Mouse。

頭部滑鼠操控方法:

電腦操作動作 使用者動作

滑鼠游標往上移動 抬頭

滑鼠游標往下移動 低頭

滑鼠游標往左移動 肩膀往左偏移

滑鼠游標往右移動 肩膀往右偏移

單擊滑鼠左鍵 頭部向左偏移

單擊滑鼠右鍵 頭部向右偏移

單擊滑鼠中鍵 抬頭後快速回到原位

雙擊滑鼠左鍵 低頭後快速回到原位

表 4-10 頭部滑鼠操控動作表

(3) 頭部功能操控模式

使用滑鼠按下 Face Function 模式或對著 Kinect 說出 Kinstead Face Function。

頭部功能操控方法:

(49)

41

瀏覽器類:

頭部動作

電腦操作 往上捲動 往下捲動 上一頁 下一頁 表 4-11 瀏覽器類頭部操作動作表

簡報類:

頭部動作

電腦操作 上一頁 下一頁 上一頁 下一頁

表 4-12 簡報類頭部操作動作表

PDF 檢視器類:

頭部動作

電腦操作 往上捲動 往下捲動 上一頁 下一頁 表 4-13 PDF 檢視器類頭部操作動作表

圖片瀏覽器類:

頭部動作

電腦操作 上一張 下一張 上一張 下一張

表 4-14 圖片瀏覽器類頭部操作動作表

(50)

42

影音播放類:

頭部動作

電腦操作 上一個 下一個 倒帶 快轉

註:Real player 上、下無功能 表 4-15 影音播放類頭部操作動作表

音樂播放類:

頭部動作

電腦操作 往上捲動 往下捲動 上一頁 下一頁 註:iTunes、KKBOX 左、右無功能

表 4-16 音樂播放類頭部操作動作表

(51)

43

第伍章 未來展望

在未來,我們想把系統對應到 Google Map 的各種動作,利用體感操 控方式來使用該服務,可以獲得更佳的使用體驗。Google Map 未來可以 結合 3D 虛擬實境技術,讓使用者更有身歷其境的感覺,只要在家,不用 龐大花費、或受天候影響就可以遊歷各國美景。

另外,我們可以把系統功能套用到 Sketchup 上,希望可以提供更直 覺,更人性化的操控方式。Google Sketchup 是一套可以製作 3D 模形的 應用軟體,不僅可以用在建築設計或室內設計,更可以為任何物體建立 3D 模型。Google Sketchup 對於新手而言是一套容易上手的軟體,介面 較直觀,有富豐的內建元件可以使用。

未來可以讓使用者自定義更多細節功能,例如自定各種手勢及頭部 動作所代表的功能,以及增添修改自己喜歡的語音指令等。

(52)

44

第陸章 開發過程

最初在撰寫手部模式時,滑鼠位置的座標是利用手部進入可使用深 度範圍的所有面積做平均。結果發現手掌以外的部分若進入範圍,會使 滑鼠座標因極值而變動。後來才改成使用 Distance Transform。

而滑鼠操作部分一開始是將深度範圍區分成點擊區與移動區。當手 進入點擊區時,進行按住滑鼠按鍵的動作,離開點擊區後則放開按鍵;

移動區則是只能讓滑鼠游標移動。但在進行點擊的瞬間,滑鼠游標會跳 動,造成無法精確地點擊想要點擊目標。

所以後來將深度範圍改為拖曳區與點擊區,在點擊區的時候比出拳 頭以外的手勢時,會進行相對應的按鍵點擊,而拖曳區則可以進行左鍵 拖曳及滾動滑鼠滾輪等動作。

判斷手勢的部分,是使用 Bounding Box 計算手掌面積比例來進行判 斷。結果發現比出拳頭和比出一的面積近似,所以再加上一條水平線來 加強計算手指數量。之後發現姆指會被遺漏計算,故將方法改為以手掌 中心為圓心畫圓來計算手指。但在使用一個圓的情況下,因 Kinect 本身 的硬體限制,會產生些許雜訊,造成影像中手指之間部分相連,而導致 誤判。於是我們再畫出第二個圓心向上平移的圓,但又發現比出拳頭有 時會被判斷成比出一,最後再畫出第三個半徑較大的圓,終於解決手勢 判斷的問題。

(53)

45

圖 6-1 Bounding Box 示意圖

頭部模式的部分,最初想使用鼻子來進行操作,利用從頭部中央畫 一條垂直線,以臉部的高低起伏的位置(極值)來找出鼻子。結果在測 試時,抬頭、低頭、歪頭都偵測不出鼻子,於是我們放棄找鼻子的方法。

後來,想要將臉部假想成一個二維座標,以臉的中心為原點,將臉 上各點座標乘上深度做為加權(深度較淺的給予比較重的加權),再以這 些帶有權重的座標做加權平均,得到目前深度較淺的大概位置。

以深度來突顯較淺的部位以判斷使用者現在面朝哪個方向。例如正 臉時深度較淺的部位較接近頭部中央,所以當抬頭時臉部較淺的部位就 會隨著往上。

但在實際測試時,發現頭髮跟眼鏡會被視為最淺深度而造成誤判。

所以再改為取得接近額頭的深度與接近下巴的深度,計算額頭與下巴的 深度差來判斷是否抬頭低頭。

(54)

46

左右的判定是改以用肩膀中心為基準線,判斷頭是否偏移以決定左 右。後來因每個人的額頭與下巴深度有所不同,無法解決極端的問題,

所以改成利用進行初始化動作來記錄額頭初始深度。

而滑鼠點擊動作一開始想使用快速抬頭、快速低頭、頭快速左偏、

頭快速右偏,後來發現頭快速左偏、頭快速右偏會造成使用者使用上的 不適,所以最後將頭部快速左右偏改成肩膀左右偏移以及頭左右偏移。

(55)

47

第柒章 結論

本專題是基於 Kinect 深度資料的程式開發,由於系統介面與計算深 度的類別需要傳遞參數,程式架構稍微複雜,我們學會了如何清楚定義 出各類別的職責分工與合作。值得一提的是,在實作此專題時,我們並 沒有使用微軟提供的骨架偵測 API 以及彩色影像,即能辨識出人體,因 為深度是由紅外線鏡頭所拍攝,故此系統可以在光線微弱的情況下使 用。

Instead of old devices, Kinstead gives you new surprises!

數據

圖 1-1  Wii 與 PlayStation Move 控制器 1
圖 1-3  Kinstead Logo
圖 4-2  Kinstead 歡迎畫面
圖 4-12  停止使用操作功能提示
+6

參考文獻

相關文件

理解並欣賞幾何的性質可以透過坐標而轉化成數與式的 關係,而數與式的代數操作也可以透過坐標產生對應的

尊重不同的價值 :我們需要體諒別人的處境,重視別人

在這次的實作遊戲中,我們必須要先對所使用到的硬體 和軟體有其基本的認識,這樣我們才能充分利用我們所擁有 的條件,進一步達成目標。首先 DE2-70 繼承了 Altera 一系 列的開發軟體,如

介面最佳化之資料探勘模組是利用 Apriori 演算法探勘出操作者操作介面之 關聯式法則,而後以法則的型態儲存於介面最佳化知識庫中。當有

由於 Android 作業系統的開放性和可移植性,它可以被用在大部分電子產品 上,Android 作業系統大多搭載在使用了 ARM 架構的硬體設備上使裝置更加省電

在與 WINS 有關的研究之中,除了研發感測器硬體這個領域之外,其它的領域均需要

覺察與模仿 身-1-1 模仿身體操控活動 身-1-2 模仿操作各種器材的動作 協調與控制 身-2-1

壹、 創意動機及目的 貳、 作品特色與創意特質 參、 研究方法(過程) 肆、 依據理論及原理 伍、 作品功用與操作方式.