• 沒有找到結果。

XBOX360 Kinect

2.2 結構光投影

2.2.1 XBOX360 Kinect

Kinect 是由微軟開發應用於 XBOX360 主機的周邊設備,他不需要任何控制器來做 操作,主打「身體就是控制器」的應用服務。下圖 2.3 為 Kinect 的外觀架構

7

圖 2.3 XBOX360 Kinect 外觀。

由正面看來有三個光學鏡頭,由左到右分別是紅外線光投影機、RGB 相機與紅外線光 攝影機,紅外線投影機與紅外線攝影機的用途是計算景物的深度資訊,而 RGB 相機則 只用來拍攝一般的照片。

Kinect 的深度計算方式外界有各種不同的說法,但最後經由微軟官方公布 Kinect 是採用微軟收購的以色列公司 PrimeSense 所開發的光編碼技術(Light Coding)來做深度 資訊的計算。光編碼(Light Coding)實際上也是結構光技術的一種,利用投影已知的近紅 外光散斑圖案來計算空間中物體的深度資訊,此散斑圖利用偽隨機的方式布置光點[11],

實際上 Kinect 在出廠時就已經經過校正而知道每一個投影的紅外線點將會成像在一指 定距離(校正距離)處的哪個地方,也就是說每台 Kinect 內部存放著一張已知距離的紅外 線點投影畫面[12],當空間中任何物體出現在比校正距離近的地方時,物體上的紅外線 光點將會往一個方向移動,反之若物體是存在於比校正距離遠的地方時,該物體上的紅 外線光點將會往另一個方向移動[13]。由於 Kinect 是已經經過校正的,所以它可以預先 知道每個紅外線光點應該出現的位置,當空間中存在著不只有校正距離的物體時,Kinect 便可利用物體上紅外線光點偏移的距離來估算物體距離 Kinect 的深度。但若是畫面中有 被遮蔽的物體,其產生出的陰影區域是紅外線光點無法照射到的,這些區域 Kinect 則無 法得知其深度,另外若有反射率太高或太低的物體存在(鏡子或玻璃等)也會造成該處的 深度估測錯誤。

為了驗證上述[13]說法,我們實驗用手將一張 A4 大小的紙由遠而近移動至 Kinect 鏡頭前方,觀察到紙上的光點變化如下圖 2.4:

8

圖 2.4 Kinect 紅外線光點移動變化實驗。

由圖 2.4 的幾張 frame 變化可觀察到,在 A4 紙上的 Kinect 紅外線光點似乎是由紙上的 一點為中心,當 A4 紙朝 Kinect 接近時,紙上的光點會以此中心朝四周做放射狀的移動,

反之,遠離 Kinect 時則會朝此中心移動。因為紅外線光點數量非常多,且有些光點會時 而閃爍不定,用肉眼不易分辨其移動,因此我們從 frame 80 開始手動將較分散易分辨的 紅外線光點群用紅黃藍綠四種不同顏色的圓圈框起來,如下圖 2.5:

9

圖 2.5 Kinect 紅外線光點移動標記實驗。

藉由觀察圖 2.5 這四個圓圈的移動可以確定當一物體距離 Kinect 變近時,物體上的紅外 線光點是如我們所推測的以一中心點向外放射狀移動。據觀察,光點的放射狀中心位於 畫面中心點偏右的位置,恰巧與 Kinect 兩個相機擺放的位置有關,紅外線影像光點的放 射狀移動中心似乎就是紅外線投影機的中心投射線在畫面中的成像位置。如下圖 2.6:

10

圖 2.6 Kinect 紅外線光點變化示意圖。

由於 Kinect 的紅外線投影機是投射出一束狀的紅外線光點圖,由圖 2.6 可看出當物體存 在於比校正平面近的位置時,我們所觀察到的光點相對位置會較小,也就是往投射中心 移動,這與我們在 IR 相機中觀察到的情況不同,推測其理由是,當物體接近 Kinect 時,

由於相機的成像原理會造成物體在影像中也是放大的情況,而此相機的放大比例大於投 影光點圖的縮小比例,因此在物體上的紅外線光點在紅外線影像中看起來相對是朝遠離 投射中心的方向移動。

圖 2.7 Kinect 投影的紅外線光點圖案。

上圖 2.7 是 Kinect 投影出來的紅外線光點圖案,圖中可看出投影圖案大致分割成 9 塊矩 形的區域,每塊矩形中間都有一個特別亮的點。根據 azt.tm 在網路上的分析[14],他將 Kinect 的投影圖案投射至牆上,並將此圖案另外用紅外線相機拍攝下來,利用 photoshop

11

將拍攝到的圖片做一些裁剪與減少光點的扭曲,經由實驗他發現這些光點在水平方向上 每 211 個點會重複,也剛好是整張圖案寬的 處,在垂直方向上每 165 個點會重複,

也是在圖片高 處,這說明了 Kinect 的點狀投影圖案是由 211*165 大小的子圖案 (subpattern)重覆排列成 3*3 九宮格大小的完整投影圖案,總共 633*495 個點也相近於其 規格的 VGA 解析度(640*480),最後他拼湊出了完整的投影圖案,如下圖 2.8:

圖 2.8 azt.tm 拼湊出的 Kinect 完整投影圖案。

經過他的分析,他把子圖案的亮點做計算,得到在平均每 3*3 的區域內就會有一個是亮 點。他拼湊出的圖案外側其實還有一些點,但那些都是暗的點,此外沒有 9 個亮點是連 接在一起的。此投影圖案的設計是可以上下顛倒而不改變的,將子點狀圖排列成九宮格 形狀對計算深度的演算法似乎沒有什麼益處,反之在計算 disparity 時必須將範圍限制在

的投影圖案內。

相關文件