• 沒有找到結果。

Kinect動作擷取控制應用系統

N/A
N/A
Protected

Academic year: 2021

Share "Kinect動作擷取控制應用系統"

Copied!
22
0
0

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

全文

(1)

國立聯合大學電資學院

金頭腦參賽作品

Kinect 動作擷取控制應用系統

參賽者:江 鑛(U9724006)

劉奕顯(U9724014)

吳卓勳(U9724016)

姚皓文(U9724021)

指導教師:

韓欽銓 老師

(2)

目 錄

目錄

………

1

第一章、

緒論………

3

1.1

研究背景………

3

1.2

動機與目的………

3

第二章、

文獻探討………

4

2.1

Kinect 驅動程式………

4

2.2

Google Earth com API………

4

第三章、

研究流程………

5

3.1

程式設計流程………

5

3.2

動作判斷依據………

5

3.2.1

手部動作………

6

3.2.2

身體動作………

6

第四章、

研究內容………

9

4.1

系統架構………

9

4.2

系統功能………

9

第五章、

專題實作………

11

5.1

移動模式………

11

5.2

相簿模式………

13

5.3

拍照模式………

15

5.4

搜索模式………

17

5.5

主程式操作畫面………

19

(3)

第六章、

結論與建議………

20

6.1

結論………

20

6.2

建議………

20

(4)

第一章、 緒論

1.1 研究背景

Kinect for Xbox 360,簡稱 Kinect,是由微軟開發,應用於 Xbox 360 主機的周邊設 備。Kinect 讓使用者不需要再手持控制器,而是直接使用語音指令或肢體動作來操作 Xbox 360 的系統遊戲介面。Kinect 能捕捉使用者的肢體動作,用身體來進行遊戲操作, 達成「免控制器的遊戲與娛樂體驗」。 使用無線遙控方式控制電腦設備,已經很常見了,不過都需要遙控器來達成,但 Kinect 不需藉助遙控器,可以更便利的操控電腦設備,且關於不需把手直接利用肢體動 作遙控電腦設備之研究,還有很大的發展的空間,所以我們想藉由 Kinect 做為平台來開 發研究使用肢體動作來控制應用系統(見圖 1),達到真正用身體當遙控器的目的。

1.2 動機與目的

隨著使用網路的人與日俱增,提供虛擬旅遊服務的網站公司也不斷增加,其中使用 者最多且服務範圍廣大的就屬 Google 所提供的 Google Earth 街景服務,它提供水平方 向 360°及垂直方向 290°的街道全景,讓使用者能檢視所選城市地面上街道不同位置及 其兩旁的景物。固我們以 Google Earth 街景服務做為平台並與 Kinect 結合開發一套互動 虛擬旅遊程式,利用肢體動作操控街景服務,以更加接近真正的虛擬旅遊。

(5)

第二章、 文獻探討

2.1 Kinect 驅動程式

本專題使用的軟體為 SensorKinect,為支援 OpenNI 的 Kinect 驅動程式,它是基於 PrimeSense 官方的版本、專門針對 Kinect 修改出來的;OpenNI 本身提供了自然操作程 式所需要的 API,也提供了 C++、C#語言做開發之用,以目前來說,OpenNI 主要是使 用於 Kinect 之上。 Kinect 一次可擷取三種資訊,分別是彩色影像、3D 深度影像以及聲音訊號(見圖 2 所示),而 OpenNI 提供了簡單的 Kinect 操作範例,此範例可獲取彩色影像與深度影像, 符合本專題所需要,固本專題是以此範例為基礎來開發虛擬旅遊系統。 圖 2:Kinect 獲取資訊。

2.2 Google Earth com API

Google 有提供一套 API 可以給 Google Earth 開發人員所方便使用的 com API,適用 於 C#開發人員,只需在專案內引用,即可呼叫使用。

使用 Kinect 遙控 Google Earth Streetview 在國外也已經有許多的案例了,但大多都 僅限於遙控或娛樂性質,並非完整的開發出一套虛擬旅遊系統,固本專題以 Kinect 及 Google Earth Streetview 為基礎,並結合影像處理,開發一套虛擬旅遊系統。

(6)

第三章、 研究流程

3.1 程式設計流程

第一步從 Kinect 讀取深度資訊、彩色影像與人物資訊,由程式將深度資訊處理成人 眼可理解之深度影像,並根據人物資訊裁切彩色影像以取得彩色人物剪影,之後顯示處 理後之深度影像與彩色人物剪影於畫面上,第二步根據人物資訊中之人物關節點座標繪 製人物骨架,並顯示於深度影像之中,第三步根據人物骨架來判斷人物的動作,即可控 制程式遙控 Google Earth 街景行走、搜索、定位等功能,另外程式也提供拍照合成與相 簿瀏覽功能,其中拍照合成功能會使用以 MATLAB 為平台撰寫的 Random Walker 圖像 切割演算法程式,將人型從彩色影像中切割出來後與 Google Earth 街景圖做影像合成, 以達到在虛擬旅遊中拍照之功能。

3.2 動作判斷依據

本專題動作判斷方式主要利用人物關節點作為判斷依據,人物關節點共有 15 點, 分別為:頭(HEAD)、脖子(NECK)、身體中心(TORSO)、左手肩膀(LEFT_SHOULDER)、 左手手軸(LEFT_ELBOW)、左手手掌(LEFT_HAND)、右手肩膀(RIGHT_SHOULDER)、 右手手軸(RIGHT_ELBOW)、右手手掌(RIGHT_HAND)、左臀部(LEFT_HIP)、左膝蓋 (LEFT_KNEE)、左腳(LEFT_FOOT)、右臀部(RIGHT_HIP)、右膝蓋(RIGHT_KNEE)與右 腳(RIGHT_FOOT),藉由以上列出之 15 關節組成人物骨架,並根據不同關節點之間的 關係判別不同動作。 目前本專題判斷的動作共有 12 種,其中手部動作佔了 7 個動作(見圖 3),分別是: 雙手放胸前、雙手掌觸碰、右手向右平舉、左手向左平舉、右手往上揮、右手往下揮與 雙手交叉;而身體動作則有 5 種(見圖 4),分別是:身體向前傾斜、身體向後傾斜、身 體向左傾斜、身體向右傾斜與右踢。

(7)

3.2.1 手部動作

雙手放胸前動作的骨架判斷方式為:左手與左肩膀相近且右手與右肩膀相近;擊掌 動作的骨架判斷方式為:左手與右手相近;右手向右平舉動作的骨架判斷方式為:右手 軸與右肩膀之間的連線要接近水平且右手軸與右手掌之間的的連線也要接近水平;左手 向左平舉動作的骨架判斷方式為:左手軸點與左肩膀點之間的連線要接近水平且左手軸 與左手之間的連線也要接近水平;右手往上揮動作的骨架判斷方式為:右手狀態由低於 脖子變成高於脖子;右手往下揮動作的骨架判斷方式為:右手掌狀態由高於身體點變成 低於身體;雙手交叉的骨架判斷方式為:左手與右肩膀相近且右手與左肩膀相近。

3.2.2 身體動作

身體向前傾斜動作的骨架判斷方式為:左手低於左肩膀與左手軸的中點且右手低於 右肩膀與右手軸的中點;身體向後傾斜動作的骨架判斷方式為:左手跟右手皆高於脖 子;身體向左傾斜動作的骨架判斷方式為:右肩膀的垂直座標比右臀部的垂直座標更為 左側;身體向右傾斜動作的骨架判斷方式為:左肩膀的垂直座標比左臀部的垂直座標更 為右側;右踢動作的骨架判斷方式為:右腳跟右膝蓋之間的連線垂直距離小於水平距離。 a:雙手放胸前 b:擊掌 圖 3:手部動作圖(續)

(8)

c:右手向右平舉 d:左手向左平舉

e:右手往上揮 f:右手往下揮

g.雙手交叉

(9)

a:身體前傾 b:身體後傾

c:身體左傾 d:身體右傾

e:身體動作右踢

(10)

第四章、 研究內容

4.1 系統架構

本研究系統架構可分為二個模組。第一模組為動作判斷模組,利用 Kinect 上 3D 深 度感應器擷取人物資訊,判斷人體關節點之位置。藉由人物全身關節點之座標變化作為 判斷依據,判斷人物當前動作。第二模組為系統功能模組,以人物當前動作控制應用系 統,操作系統所提供之拍照、相簿、錄影、移動與搜索 5 項功能。

4.2 系統功能

本專題主要提供拍照、移動、搜索、相簿與錄影 5 項功能(見圖 5),程式啟動時會 先進入拍照模式,在拍照模式下,雙手放胸前即進入移動模式、右手平舉進入相簿模式、 雙手掌觸碰啟動拍照功能以及右踢進入搜尋模式;在移動模式下,身體往前傾斜可使 Google Earth 街景往前移動、身體往後傾斜可使 Google Earth 街景往後移動、身體向左 傾斜可使 Google Earth 街景往左移動、身體向右傾斜可使 Google Earth 街景往右移動、 左手向左平舉即退回拍照模式;在相簿模式下,身體向右傾斜可往右切換一張照片、身 體向左傾斜可往左切換一張照片、右手由下往上揮為照片放大顯示、右手由上往下揮為 照片縮小顯示、右踢可刪除當前照片及左手平舉退回拍照模式;在搜索模式下,身體向 右傾斜為往右切換一個地點、身體向左傾斜為往左切換一個地點、右手向右平舉啟動定 位功能及左手向左平舉為取消搜索退回拍照模式。

(11)
(12)

第五章、 專題實作

5.1 移動模式

在移動模式(見圖 6)下可控制 Google earth 的前後左右移動,雙手放胸前即進入該模 式,身體向前傾時街景向前移動,向後傾時街景向後移動,左傾時街景向左移動,右傾 時街景向右移動。 a:雙手放胸前(進入移動模式) b:身體前傾(街景往前) 圖 6:移動模式截圖(續)

(13)

c:身體後傾(街景往後)

d:身體左傾(街景往左)

e:身體右傾(街景往右) 圖 6:移動模式截圖

(14)

5.2 相簿模式

在相簿模式(見圖 7)下可瀏覽之前所拍攝的相片,並有放大、縮小和刪除功能,右 手向右平舉時開啟該模式,左手向左平舉關閉該模式,身體向左傾時可以向左切換一張 相片,身體向右傾時可以向右切換一張相片,右手往上揮可以放大照片,右手往下揮則 可縮小照片,當右腳右踢時則可刪除照片。 a:右手向右平舉(開啟相簿) b:左手向左平舉(關閉相簿) 圖 7:相簿模式截圖(續)

(15)

c:身體左傾(往左切換一張)

d:身體右傾(往右切換一張)

e:右手往上揮(照片放大) 圖 7:相簿模式截圖(續)

(16)

f:右手往下揮(照片縮小)

g:右踢(刪除照片) 圖 7:相簿模式截圖

5.3 拍照模式

在拍照模式(見圖 8)下可將 Kinect 的 RGB 彩色圖透過 Random Walker 演算法切割出 人型圖並貼在 Google earth 街景圖上後存檔,當雙手掌接觸時,系統倒數 5 秒後拍下照 片並切割人體影像,接著移動左手決定截圖在街景圖上的位置,決定好位置後右手平舉 便合成照片。

(17)

a:雙手掌接觸(定時拍照)

b:移動左手(改變截圖位置)

c:右手向右平舉(決定截圖位置) 圖 8:拍照模式截圖

(18)

5.4 搜索模式

在搜索模式(見圖 9)下可以跳到另一個街景的開始位置,踢右腳時開啟該功能,身 體左傾時可切換下一個位置,身體右傾時可切換上一個位置,決定好要去的位置後右手 向右平舉 Google earth 街景即跳到選擇的位置。 a:踢右腳(進入搜索模式) b:身體左傾(切換上一個地理位置) 圖 9:搜索模式截圖(續)

(19)

c:身體右傾(切換下一個地理位置)

d:右手向右平舉(決定地理位置) 圖 9:搜索模式截圖

(20)

5.5 主程式操作畫面

系統實際操作畫面(見圖 10) a:移動模式(街景往右轉) b:拍照模式(定時拍照) c:相簿模式(打開相簿) d:相簿模式(照片放大) e:搜索模式(選擇定位點) f:搜索模式(定位中) 圖 10:主程式操作畫面

(21)

第六章、 結論與建議

6.1 結論

本文主要探討如何利用體感裝置來實現虛擬旅遊的概念,而虛擬旅遊是一種抽象的 概念,怎樣的規定叫做虛擬旅遊?要有什麼功能才算虛擬旅遊?沒有一種規定。所以我 就以我心中的虛擬旅遊所需要有的功能來設計我的程式。首先既然叫旅遊,那就必須要 能在 Google 的街景裡面移動,所以我的程式提供了用動作截取來控制 Google Earth 前 進、後退、左轉跟右轉的移動功能;其次既然是虛擬那就要能我想去哪裡就去哪裡,所 以我利用 Google Earth 裡面的定位功能來實現,也就是我程式裡的搜索功能;再來既然 都出國來玩了,那少不了的當然是拍張照片留作紀念,所以我的程式提供了利用 Kinect 裡面的彩色攝影鏡頭來做拍照的功能,當然把人拍下來之後,要把人跟旅遊的背景做合 成,才算一張完整的虛擬旅遊照片,既然要做圖像合成,那就要做到好,所以我利用 MATLAB 為平台撰寫 Random Walker 演算法來做圖像切割,把人從彩色照片之中剪下 來,貼到旅遊的照片之中,以達成完整的拍照功能;最後既然都拍照了,那怎麼少的了 相簿,就像出國玩的時候帶的數位相機一樣,相機裡面一般都會有相簿功能,可以放大 縮小觀看照片,瀏覽以前拍下來的照片這些功能,當然我的程式也少不了。

6.2 建議

移動功能、搜索功能、拍照功能與相簿功能,擁有這些功能我想應該可以稱作為虛 擬旅遊了吧。但是畢竟是虛擬旅遊,沒辦法真的像真的出去旅遊一樣那麼逼真、那麼自 由,而且提供的功能性可能也不足以滿足想出去旅遊的那顆好奇心,所以在未來研究 上,本研究建議可以把每個不同的功能都更加的人性化,或者讓提供功能更加完善。而 且本文研究的方向是以 Kinect 為平台,利用動作截取來控制虛擬旅遊的程式,固未來研

(22)

參考文獻

[1] Heresy’s space 部落格。http://kheresy.wordpress.com/

[2] Joshfinken 部落格。http://joshfinken.com/blog/ [3] 華儲網 – 網盡 IT 圖書。http://www.huachu.com.cn/ [4] Kinect – 維基百科。http://zh.wikipedia.org/zh-hant/Project_Natal [5] MATLAB - 計算機學習筆記。http://hi.baidu.com/turing115/home [6] msdn 文件庫。http://msdn.microsoft.com/zh-tw/default.aspx [7] cnKinect.com 體感遊戲網。http://www.cnkinect.com/ [8] C++心得分享。http://blog.yam.com/user/swwuyam.html [9] 編程資料庫 HACKDIY。http://hackdiy.com/

[10] Google Earth code – Google Earth API。http://code.google.com/intl/zh-TW/apis/earth/

數據

圖 1:使用動作擷取控制應用系統。
圖 3:手部動作圖
圖 4:身體動作圖
圖 5:系統功能架構圖。

參考文獻

相關文件

能熟悉電腦概念,包括作業 系統、應用軟體和檔案輸出 入硬體設備的安裝、操作和 維護。2.

3.丙級:包括應用作業系統、安裝軟體與使用電腦週邊設 備、設定繪圖環境、控制圖形螢幕、輸出圖形與 管理圖面等基本工作及繪製單件立體圖、立體剖

本專題研究目的旨在活用 kinect 捕捉人體動作,並設法順暢與 設備連動的方法;同時對 HTML5(少許)與 javascript 進行研究,設

本專題研究目的旨在活用 kinect 捕捉人體動作,並設法順暢與 設備連動的方法;同時對 HTML5(少許)與 javascript 進行研究,設

(軟體應用) 根據商務活動之舉辦目標及系統需求,應用 Microsoft Office 文書處理 Word、電子試算表 Excel、電腦簡報 PowerPoint、資料庫 Access

可程式控制器 (Programmable Logic Controller) 簡稱 PLC,是一種具有微處理機功能的數位電子 設備

數位計算機可用作回授控制系統中的補償器或控制

之意,此指依照命令動作的意義。所謂伺服 系統,就是依照指示命令動作所構成的控制