電腦視覺是很有趣的研究領域,而對於一個摸索中的學習者我來說,卻也是想當困難的。最近因受友人所託,研究了reacTIVision這套軟體,因為網路上有的資料不很豐富,所以就做個筆記留著。
首先,reacTIVision這套軟體的目的,如網路上來自崑山科大的一位老師所寫,可以用來實現所謂「混合境實驗互動桌」,其終極目標就是可以在桌子上做一些事,讓電腦即時反應對應的東西,然後再傳到桌子上。而這樣互動的效果,自然就少不了投影機與攝影機了。以這套軟體而言,可以做到兩個功能,一是偵測內建的阿米巴圖庫、二是偵測手指,達到觸控的互動效果。
reacTIVision這套軟體,是基於TUIO通訊協定而設計。此軟體主程式打開就是一個攝影機補捉的畫面,並且可以從中調整各種參數。當有補捉到阿米巴圖片或手指,就會透過TUIO協定發送封包到某個地方。這個所謂某個地方,就在同資料中 "reacTIVision.xml" 這個檔案內的:
<tuio host="127.0.0.1" port="3333" />
例如此行表示,TUIO接聽的伺服器位置是127.0.0.1(即本機),而連接埠設定為3333。
接下來第二步驟就是要找一個東西去接聽他,也就是去接收他的封包。這樣聽起來是個轉了個彎的應用,感覺不該這麼複雜的。但是實際上卻不一定,因為很明顯的,透過TUIO機制把辨識端與應用端分開來,目的就是想要讓各個端的應用能夠好開發。辨識端有他可以去超越的極限(例如手指、手勢、性別等等),應用端也可以開發出許多相應的軟體出來。至於這個接聽者是誰呢?TUIO的官網也提供了一系列基於reacTIVision的對應開發,不過這裡我們以Flash這個比較親切的來入手。
Flash本身是有辦法支援TUIO的,當然,就要透過網路上找得到的現成Library來達成,網路上載得到。但是,在現有的網路資源當中,我找不到可以讓Flash直接接聽reacTIVision的方法,必須透過另外一個軟體來作為橋樑。這個東西也是有現成的,叫作FlashOSC.jar。而最後才是將Flash這邊的應用端程式執行。所以步驟可以歸納為:
1. 開起reacTIVision (default port = 3333)
2. 開起FlashOSC.jar (java -jar FlashOSC.jar 3333 3000,表示從port 3333接收並送往port 3000;前者為OSC Port,後者為Flash Port。)
3. 開啟Flash端的應用程式,進行連線 (假設port為3000)。
透過這樣簡單的三個步驟,就可以讓reacTIVision辨識後結果所產生的封包,正確地送抵Flash應用軟體端。
至於接下來的應用呢?最難的應該就是調整光線了。阿米巴圖的辨識效果是很棒的,但是手指辨識卻不怎麼樣。網路上的資源提到,因為reacTIVision是到後期才發展出手指辨識的,所以這部份的功能較為薄弱,而且最難的就是要調整光線以符合其辨識的演算法,所以這部份還是有待加強的。
Footprints (1)