我們僅用 1 美元的硬體和一點電腦視覺技術,就將 MacBook 變成了一個觸控螢幕。這個概念驗證專案,我們稱之為「Project Sistine」,靈感來自於我們在西斯汀教堂重現著名畫作的過程,由我和 Kevin、Guillermo、Logan 在大約 16 小時內完成原型製作。

Sistine 的基本原理很簡單。從角度觀察的表面往往看起來閃閃發光,而你可以透過檢查手指是否觸碰到自己的倒影來判斷它是否正在觸碰表面。

Kevin 在國中時就注意到了這個現象,並建構了 ShinyTouch,利用外部網路攝影機建立了一個幾乎無需設定的觸控輸入系統。我們想看看是否能將這個想法小型化,並在沒有外部網路攝影機的情況下實現。我們的想法是在 MacBook 的內建網路攝影機前加裝一面小鏡子,讓網路攝影機以銳利的角度向下拍攝電腦螢幕。攝影機將能看到手指懸停在螢幕上方或觸碰螢幕,而我們則能利用電腦視覺將影片饋送轉換為觸控事件。

我們的硬體設置很簡單。我們只需要將鏡子以適當的角度放置在網路攝影機前方。這是我們的材料清單:

經過一些迭代,我們採用了一種只需一把刀和熱熔膠槍即可在幾分鐘內組裝完成的設計。

處理影片影格的第一步是偵測手指。以下是網路攝影機看到的典型範例:

手指偵測演算法需要找到觸碰/懸停點以供進一步處理。我們目前的方法使用了經典的電腦視覺技術。處理流程包含以下步驟:

上面顯示的是將此過程應用於網路攝影機影格的結果。手指和倒影(輪廓)以綠色標示,邊界框以紅色顯示,觸碰點以洋紅色顯示。

處理輸入的最後一步是將觸碰/懸停點從網路攝影機座標映射到螢幕座標。兩者透過一個單應性(homography)相關聯。我們透過一個校準過程來計算單應性矩陣,在此過程中,系統會提示使用者觸碰螢幕上的特定點。在收集了網路攝影機座標與螢幕座標的對應數據後,我們可以使用 RANSAC 來穩健地估計單應性。這會給我們一個將網路攝影機座標映射到螢幕座標的投影矩陣。

上面的影片展示了校準過程,使用者需要跟隨螢幕上的綠點移動。影片包含一些除錯資訊,疊加在網路攝影機的即時影片上。以洋紅色顯示的是網路攝影機座標中的觸碰點。校準過程完成後,投影矩陣會以紅線視覺化,軟體會切換到一個模式,其中估計的觸碰點顯示為藍點。

在目前的原型中,我們將懸停和觸碰轉換為滑鼠事件,讓現有應用程式立即支援觸控功能。

如果我們編寫自己的觸控應用程式,我們可以直接利用觸控數據,包括懸停高度等資訊。

Project Sistine 是一個概念驗證專案,僅用 1 美元的硬體就將筆記型電腦變成觸控螢幕,而且作為原型,它的效果相當不錯!透過一些簡單的修改,例如更高解析度的網路攝影機(我們的只有 480p)和一個能讓網路攝影機捕捉整個螢幕的曲面鏡,Sistine 可以成為一個實用的低成本觸控螢幕系統。

我們的 Sistine 原型是開源的,根據 MIT 授權條款發布。