第三章 擴增實境技術研究
第二節 互動程式語言與硬體互動介面之探討
由以上章節可以知道,擴增實境之影像辨識技術種類繁多,可以支援的 開發平臺也很多。本創作研究中所採用之互動介面之程式開發平 臺為 Processing。Processing 為一開源碼之多媒體互動程式開發平臺。非常適合本 創作研究之無標記式擴增實境技術的開發與表現。其中 Processing 所內含的 互動元件庫 OpenCV,即為無標記式擴增實境的臉部偵測技術元件。本創作 將利用此元件將虛擬的影像透過臉部偵測,定位到畫面中參觀者的臉部上,
將筆者所欲投射的意涵透過擴增實境技術融合到參觀者的映射中。而互動設 計的部分,本創作中為凸顯參觀者參與作品的互動性,特別加入了硬體的互 動設備 Arduino,利用 Arduino 控制版去偵測參觀者的動作或將互動反應傳 達給參觀者。
一、 Processing 互動程式環境探討
Processing 是一個開放原始碼的互動程式語言及開發環境。其程式環境 是以 Java 所撰寫出來的。這個開放原始碼的專案計畫,當初由 Ben Fry 及 Casey Reas 於 2001 年所發起(當時兩人都是 John Maeda 在麻省理工學院媒 體實驗室的學生)。並且是由麻省理工學院媒體實驗室的 Aesthetics and Computation Group 的構想所發展出來的( Fry, b. & Reas, C.,2013)。其主 要的針對的目標,就是提供給學生、藝術家、設計師、建築師、研究員等需 要對影像、動畫、聲音進行程式編輯的工作者與創作者作為學習或是原型開 發及製作所發展出來的互動成平臺。
Processing 程式環境可以在 Mac、 Windows 和 GNU/Linux 上執行。其 所支援的環境很多,而且由於許多玩家與開發者的支持,Processing 所支援 的多媒體函式庫非常的多,並且不斷的再增加中。由於當初開發這套軟體的 就是一群藝術家及設計師,而且其目的就是為了提供給學生、藝術家、設計 師、建築師、研究員作為教導與學習以基礎電腦程式作為視覺及影音多媒體 創作的開發工具與平臺。所以 Processing 在程式語言的語法及結構上都非常 的簡單易學,卻又包含無限延伸的可能性。因此將此軟體當作是一個簡單的 數位藝術的描繪本,或當做專業的製作工具都是很好的環境。
Processing 的編輯環境也相當的單純與簡單,其畫面與硬體控制元件 Arduino 控制板之程式編輯環境幾乎類似,兩者的編輯畫面如下(參圖 3-5、
3-6):
Arduino 是一個開放原始碼的硬體互動控制元件,Processing 亦可以直 接能與 Arduino 控制板溝通。以下針對 Processing 的優劣勢加以分析:
(一) Processing 的優勢如下:
1. 程式環境效能比 FLASH 佳:
其主要的程式環境是由 Java 所開發,所以在效能上比起 Flash AS 的執 行速度要快上許多。
2. 所支援的函式庫眾多:
由於是開放原始碼軟體,所以參與的設計師及工程師人數眾多,開發出 的多媒體函式庫也相應的非常多,目前已經超過一百個以上的函式庫。
這對於筆者在擴增實境之影音程式創作有相當的助益。
3. 程式指令簡單:
由於當初程式發展的目的就是為了提供給學生、藝術家、設計師、建築 圖 3-5 Processing 編輯介面
資料來源:本創作研究截圖
圖 3-6 Arduino 編輯介面 資料來源:本創作研究截圖
師、研究員作為教導與學習使用,所以程式指令學習難度很低。對於是 視覺設計師或是藝術家都是很好上手的程式環境。
4. 所支援的平臺眾多:
可以在 Mac、 Windows 和 GNU/Linux 上執行。
5. 為開放原始碼之互動影音創作環境:
由於此程式環境是以開放原始碼所授權的環境,所以在研究與創作的領 域上不會受到商業的限制,而且由於原始碼的開放,對於想學習程式撰 寫的設計者而言,便有許多的範例可以參考學習。
6. 能匯轉成為執行檔及網頁檔案:
由於本程式是以 Java 所開發的,所以程式提供了轉成執行檔及網頁瀏覽 檔的功能,大大提高了檔案的執行與瀏覽環境。
7. 能開發 Android 相關應用程式 app:
本身提供對 Android 程式開發的環境。有利於開發在 Android 上的 app。
8. 能直接與硬體控制元件 Arduino 溝通:
Arduino 是一個開放原始碼的硬體互動控制元件,而 Processing 提供了 直接與 Arduino 溝通的函式庫,並且在語法與程式結構上也與 Arduino 的語法相當類似,方便使用者跨領域學習。
(二) Processing 之劣勢如下:
1. 執行環境設定較複雜:
由於 Processing 要針對影像多媒體做程式控制,所以在硬體環境的設定 上就較為複雜。不像 Flash 是透過瀏覽器來瀏覽,設定上較簡單。
2. 主要為單機版執行:
雖然程式環境提供了轉成執行檔及網頁瀏覽檔的功能,但是由於涉及系 統安全之考量,許多牽涉到硬體控制的多媒體函式庫並不能在匯轉後正 確的執行。所以如果希望能像 Flash 般跨平臺執行,倒是還有一段路要 走。
二、 Open CV 影像處理及偵測技術探討
OpenCV 是一個開放原始碼的電腦視覺處理函式庫,其原始的開發者為 Intel。目前開放使用權給商業及研究用途。這個函式庫屬於跨平臺的函式庫,
可以在 Mac OS X、Windows 和 Linux 上執行。主要的用途是在即時影像處 理之上,並且可以經由硬體的支援加快其處理速度。而運用在 Processing 中 之 OpenCV 函式庫的開發,目前是屬於法國普羅旺斯高等藝術學校(É cole Supérieure d'Art d'Aix-en-Provence)的超媒體工作坊之專案。由 Stéphane Cousot and Douglas Edric Stanley 兩位所維護(Cousot, S. & Stanley, D. E.,
2013)。目前這個函式庫還在開發中,目前所支援的功能如下:
1. 即時影像捕捉(real-time capture)。
捕捉從攝影機或是 Webcam 而來的即時影像。
2. 影片檔案輸入(video file import)。 可以載入影片檔案至畫面中。
3. 基本影像處理(basic image treatment)。
影像處理功能,如:亮度、對比、色調分離等功能。
4. 物件偵測(object detection )。
偵測例如:臉部、身體等…物件的位置(包括 X、Y、Z 軸)。
5. 輪廓偵測(blob detection)。 偵測輪廓位置。
目前使用在本研究創作中的主要技術,包含(1)即時影像捕捉(2)基 本影像處理(3)臉部物件偵測,這三個主要的功能。影像捕捉功能主要提 供從 Webcam 捕捉來的影像。基本影像處理功能,能針對捕捉來的影像做基 本的影像處理。而臉部偵測功能,主要是針對臉部特徵做偵測與定位。本程 式還可同時偵測多個臉部特徵。其偵測畫面如下:
圖 3-7 OpenCV 臉部偵測畫面
資料來源:http://ubaa.net/shared/processing/opencv/opencv_detect.html
(2013 年 4 月 3 日)
從圖中(參圖 3-7)我們可以發現,本程式在特徵比對上,主要是眼口 為主。所以在特徵比對時容易出現誤差。只要是類似眼、口的造型,極有可 能形成程式的誤判。所以在展出環境的控制上就必須多加費心,應盡量避免 背景圖案及環境光影形成類似眼口的誤判形式。
三、 Arduino 互動裝置介面控制板探討
本創作研究中,為提高參觀者與藝術作品之間的互動關係及表達創作意 念上的傳達,所以採用了硬體的互動控制元件 Arduino 來作為硬體互動式裝 置的控制器。Arduino 是一個以開放原始碼所開發出來的 I/O 介面硬體控制 板。它是一個靈活的、簡單使用的硬體及軟體電子原型平臺。主要是針對藝 術家、設計師、愛好者及任何有興趣創作互動元件或環境的創作者之原型開 發與學習使用。最初是由米蘭互動設計學院教授 David Cuartielles 以及 Massimo Banzi 所開始設計。他使用類似 Java 或 C 的語言開發環境。讓使 用者可以快速的運用 Arduino 語言與 Flash AS、Processing、PureData 等互動 程式環境加以整合與開發互動裝置設備。亦可以透過 Arduino 來快速的學 習電子和感測器的基本知識,並快速的、簡單的設計及製作出互動裝置作品 的原型(Arduino Team,2013)。其硬體控制版型態有許多:
表 3‑3 Arduino 控制板樣式
Arduino Uno Arduino
Leonardo Arduino Due Arduino Esplora Arduino Mega 2560
Arduino Mega ADK
Arduino
Ethernet Arduino Mini LilyPad Arduino
LilyPad Arduino USB
Arduino Micro Arduino Nano Arduino Pro
Mini Arduino Pro Arduino Fio
資料來源:http://arduino.cc/en/Main/Products (2013 年 3 月 26 日)
本創作實驗中所採用的 Arduino 硬體互動控制板為 Arduino Uno (參表 3‑3)。使用的微處理器是 ATmega328 系列。控制板總共提供類比訊號輸入 埠 6 個、數位訊號輸出/入埠 14 個。其中還包含 6 個脈衝寬度調變 (PWM) 輸 出埠。硬體主要使用電源為(5V~9V),也可以直接使用 USB 供電。其資料 的傳輸及即時的硬體控制訊號傳輸則是利用 USB 埠。對於一般電腦的使用 者來說相當方便。
創作者可以透過 Arduino 控制版上的這些訊號輸出及輸入埠,來連接上 不同的電子元件,例如:光敏電阻、熱敏電阻、水銀開關、LED、喇叭、馬 達等…,然後經由 Arduino 程式的撰寫來控制電子元件輸出及輸入訊號。例 如:驅動馬達運轉、LED 亮滅或取得現場光源強度訊號等…。
Arduino 控制板的授權方式,是採用開放式源碼授權,所以其電路設計 圖及韌體都可以在網路上下載。提供使用者自行製作,亦可販售。目前在台 灣也有兩家授權廠商,可以在網路上購買。
至於 Arduino 的軟體開發環境也相當簡單(參圖 3-6)。其開發環境與 Processing 相當類似,在語法的規格與架構上與 Processing 相似度也非常高。
如果學習 Processing 的藝術家或設計師,便可以很快的進入程式撰寫的部分。
當互動的程式撰寫好以後,可以透過 USB 埠上傳至控制板上。Arduino 控制 板可以不必連接電腦即可自行運作,亦或是隨時連接電腦接收電腦的指令或 是傳回硬體的控制訊號,隨使用者隨意創作。
總體來說 Arduino 控制板的優點如下:
1. 使用開放原始碼的電路圖設計:
可以免費下載及修改。
2. 可簡單的與感測器及各式電子元件連接:
可簡單的連接紅外線、超音波、熱敏電阻、光敏電阻、伺服馬達…等電 子元件。亦有許多已開發的電子電路模組可以購買。
3. 非燒錄至晶片內:
Arduino 並不像一般的單晶片控制板,是將程式直接燒錄至晶片內。而 是上傳儲存到記憶體內,所以可以任意的修改程式,方便初學者測試使 用。
4. 支援多樣的互動程式:
可以與 Adobe Flash AS、Processing、Pure Data、VVVV、C… 等互動程 式環境搭配。
可以與 Adobe Flash AS、Processing、Pure Data、VVVV、C… 等互動程 式環境搭配。