2013年12月13日 星期五

Optical Floating multi-Touch 基本原理介紹

最近一直在想如何解釋這個事情, 經過兩個禮拜在內心的整理, 我想用光學滑鼠來說明

光學滑鼠基本架構是用一個至少1500fps的CMOS sensor, 配合人工光源, 根據圖像的變化取得滑鼠的位移量. 這也說明了為何 Optical Floating multi-Touch(OFmT)需要高fps的原因.

當然他的resolution很低, 事實上也不需要高, 因為那個CMOS sensor幾乎貼近於桌面.

滑鼠的CMOS sensor是朝下, 所擷取到的圖像背景很單純, 也不容易受到背景光源的影響.

因此滑鼠可以精準而且有效率的運作, 但是他的缺點是single point, 因為他把整個視角內的圖像當成一個物件.

假設CMOS sensor對人, 背景會很複雜, 因此朝上背景會相對簡單. 當然仍然比滑鼠複雜, 當有物件在視角內移動時, 你就可以根據物件的變化找出此物件在空間中的位移量, 從而轉換成與螢幕相對應的位移. 這時視角內的所有物件都可以轉換成螢幕相對應的位移. 因此可以做multi-point.

所以你要追蹤的物件要如何從背景中抽離是第一個課題, 如同滑鼠一般, 利用人工光源排除自然光的影響, 這時候在一定有限距離內, 物件就可以很容易得與背景分離.

至於要如何選擇人工光源, 事實上任何光源都可以, 問題是可見光會讓人的眼睛不舒服. 不可見光則有紫外線與紅外線可供選擇, 根據市場上最容易sourcing 原則, 遙控器所使用的850或920nm紅外線應該是首選. 至於要選850還是920? 根據CMOS光譜表, 850會比較亮, 920會比較暗. 亮有亮的好處, 暗有暗的好處.

如此做, 成像之後的圖像會與TOF一樣, 差別在TOF的人工光源是有頻率的, TOF要根據這個頻率的光計算出物件的距離. OFmT則不必, 因此用持續人工光源即可. 如果CMOS的fps不夠高, 則可考慮用有頻率的人工光源, 其目的不是為了物件距離, 而是要確保每張圖象中的每個物件的清晰度. 其原理跟照相機的閃光燈一樣.

嚴格來說OFmT並不在乎物件的距離, 而是根據圖像的變化來取得位移, 因此不需要depth map, 也不在乎物件是手指或是其他長條形. 也並不在乎物件的粗細不同. 當然跟物件的顏色更是完全無關. 因此灰階CMOS是很好的選擇. 只是市面上主流都是彩色CMOS, 仍然是容易sourcing原則.

至於能追蹤多少物件, 則與CMOS的視角有關, 在一定有限距離視角內能夠容納多少物件, 原則上就能追蹤多少物件. 但是視角大會造成圖像失真, 有時會得不償失. 目前實測的結果是60度視角可以容納三根手指.

至於CMOS resolution, OFmT 當然對resolution的需求比滑鼠高得多, 仍然根據容易sourcing原則, 市場主流是VGA(640x480)已經足夠. 如果要加大resolution, 用兩顆可能會比一顆好. 用兩顆也可以加大視角而且不用考慮失真的問題.

最後要考慮的是I/O bandwidth, USB2是480M, 以24bit color, VGA CMOS 而言, USB2最多只能傳60fps, 扣除I/O效率問題, 可能只剩20~30fps. 以MS touch Windows Logo requirements而言至少需要50fps. 顯而易見的這是OFmT sensor要解決的大問題.

2013年12月6日 星期五

Depth map 主流產生方式有三

基本上 depth map 產生的方式, 目前的主流有三: 

Comparison table comes from Etron website

 eSP870Stereo VisionTime of Flight(TOF)Structured Light
Operational        Principle         Two 2D sensors emulate human eyes and equipped H/W depthmap engineTwo 2D sensors represent human eyesIR pulse, light transit time measurementPatterned IR illumination,detect distortion
Depthmap ResolutionVGA (640x480)<QVGA (320x240)QVGA (320x240)
Depthmap PerformanceMax. to 60fps<30fpsMax. to 60fps30fps
S/W ComplexityLowHighLowMedium
Cost of MaterialLowLowMediumHigh
Response TimeFastMediumFastSlow
AccuracyMediumLowHighMedium
Indoor PerformanceGoodGoodGoodGood
Outdoor PerformanceGoodGoodN/AN/A
Power ConsumptionLowLowHighMedium
RangeDepends on sensor separationDepends on sensor separationLimited (depends on IR light source)Limited


eSP870 stereo vision 應該是從工研院 license 的技術.
TOF 目前的 kinect, TI 與 Samsung 有 chip
Structured Light, 之前的 kinect. 剛被 Apple 買走的 primesense .

目前這三種技術在爭主流地位, 除了 kinect 以外生意都很小, 我預測未來兩年內生意也不會大. 因為這是全新的需求, 需要從頭創造.

強調的應用都是體感(somatosensory)或手勢(gesture)偵測, 目前看到有生意的市場是遊戲. 不論應用為何, 問題是軟體或OS要與他們特有的 API 完全整合, 因為體感與手勢目前沒有標準, 也難有標準.

因此已經有足夠的硬體可以選擇, 如果你們只想做軟體, 我不覺得有何硬體問題. 如果照這個思路, 你們在軟體的投入會很大, 而且失敗的機率也很大, 因為競爭對手都是世界一流的軟體寫手.

上述三種技術的目標是 camera 對人, leap motion 是對天花板, 因為 camera 角度不同, 最終會造成 leap motion 非主流的下場. 因此 leap motion 如果把應用目標訂得與這三種一樣, 成功的機率自然不大. Leap Motion 的好處是成像後的背景單純

我的想法與上述所有的技術都無關, 我只想 floating touch, 問題當然就簡單了. Leap Motion 如果把目標訂得跟我一樣, 它的成本就不對了. 如果以 touch 為目標, 我的想法的精準度與靈敏度不會比 leap motion 差太多. 我的想法當然不能做體感與手勢分析, 因為不需要.

上個email你提到 keyboard+leap motion 的問題, 我認為失敗的原因有二 :
  1. 成本太高, 我保守估計成本至少 US$50 以上, 想像得到 “keyboard” user price 大概要 US$150 以上, 你會買嗎?
  2. leap motion 本來就不是做 touch, 他的 API 中自然不會很精簡, 要考慮的問題太多. 這不就是”大砲打小鳥嗎”?

至於你說的”動作也不流暢, 速度也慢”, 最終應該是可以解決的技術問題.

touch 有標準, touch gesture 沒標準, 不論 touch gesture 如何各家不同, 其基礎都是 touch. 所以如果要透過 gesture 控制電腦(不論是Windows or Android or iOS), 為何要捨近求遠? 做 touch 就好啦!!

從生意的角度來看, touch market base 已經存在而且足夠大, 在不斷的市場區隔之後, 占有一席之地的機會相對也大. 而且只要努力去做, 失敗的機率相對較低, 成功的機率相對較高.

如果你要做體感或手勢, 那就另當別論了, 我也沒興趣, 因為成功的機率趨近於零.

如果你要當 fast follower, 你可以從買各家的 sensor 開始, 熟悉他們的 API.
  1. kinect w/ MS API; free download API from MS website
  2. TI w/ softkinect from TI website
  3. etron ‘s egle eyes; contact Etron directly
  4. ASUS w/ primesense; from ASUS website