Project Sistine - MacBookを1ドルのハードウェアでタッチスクリーン化
(anishathalye.com)- MacBookをたった1ドルの部品とコンピュータビジョン技術でタッチスクリーンのように動作させるプロトタイププロジェクト
- 内蔵Webカメラの前に小さな鏡を設置して画面を斜めに認識し、指と反射像の交点をタッチとして検出
- 肌色フィルタリングと輪郭解析によってタッチ・ホバー位置を計算し、ホモグラフィ補正で画面座標へマッピング
- 検出された入力はマウスイベントに変換されるため、既存アプリでもすぐにタッチ操作が可能
- 480pカメラでも動作し、高解像度カメラや曲面鏡を使えば認識範囲を拡張できる低コストなタッチスクリーン実装例
Project Sistine の概要
- MacBookをタッチスクリーン化するために、わずか1ドルのハードウェアと簡単なコンピュータビジョン技術を使用
- 約16時間で4人が制作したproof-of-conceptプロトタイプ
- 名称はシスティーナ礼拝堂の**『天地創造』の再現**に着想を得たもの
基本原理
- 画面を斜めから見ると光の反射で指とその反射像が同時に見える現象を利用
- 指が反射像に触れた瞬間を検出してタッチの有無を判定
- 既存のKevinによるShinyTouchプロジェクトからアイデアを採用
- 外付けWebカメラを使っていた方式をMacBook内蔵Webカメラと小型鏡に置き換え
- 内蔵カメラの前に小さな鏡を設置し、画面全体を斜めに見下ろす視野を確保
- カメラ映像から指の動きを認識してタッチイベントに変換
ハードウェア構成
- 必要な材料は小型鏡、紙皿、ドア蝶番、グルーガンなどのシンプルな部品
- 鏡を適切な角度で固定し、カメラが画面全体を見られるように構成
- ナイフとグルーガンだけで数分以内に組み立て可能な形
指検出アルゴリズム
- 入力映像から指と反射像を見つけてタッチ/ホバー位置を計算
-
肌色フィルタリングと二値化 → 輪郭検出 → 2つの主要輪郭を選択
- 2つの輪郭が水平方向に重なり、小さい輪郭が上側に位置している必要がある
- 2つの輪郭の上端と下端を結んだ線の中点をタッチ/ホバー位置として設定
- 2つの輪郭間の垂直距離でタッチとホバーを区別
- 結果映像では指と反射線が緑色、境界ボックスが赤色、タッチ位置がマゼンタで表示される
-
マッピングと補正
- Webカメラ座標を画面座標に変換するために**ホモグラフィ(homography)**を計算
- ユーザーが画面上の特定の地点に触れて**キャリブレーション(calibration)**を実行
- 収集した座標ペアをもとにRANSACアルゴリズムで射影行列を推定
- 補正後は画面上に赤い線で射影行列を可視化し、推定されたタッチ位置は青い点で表示
応用
- プロトタイプはホバーとタッチをマウスイベントに変換し、既存アプリをすぐにタッチ対応にできる
- 独自アプリを開発する場合は、ホバー高さなどの詳細なタッチデータも直接活用可能
結論と改善可能性
- Project Sistineは1ドルのハードウェアでノートPCをタッチスクリーン化した実験的実装
- 480p内蔵カメラでも動作し、高解像度カメラや曲面鏡を使えば画面全体の認識も可能
- 低コストで実用的なタッチスクリーンシステムへ発展する可能性がある
ソースコード
- SistineプロトタイプはMITライセンスのオープンソースとして公開
- GitHubリポジトリ: bijection/sistine
1件のコメント
Hacker Newsのコメント
Steve Jobsは2010年に、垂直タッチスクリーンは見栄えのするデモ向けにすぎず、実際にはすぐ腕が疲れてしまうので、人間工学的にひどいと語っていた
Business Insiderの記事で引用されている内容
昔の低価格AndroidスタイラスフォンやPalm Pilotのコピー製品は本当にひどかったが、アーティストにとっては今でも筆圧感知スタイラスが有用な道具である
(ちなみに「gorilla arm」という用語は、1980年代のJargon Fileに由来する)
デバイスを平らに置いたり回転させたりして使い、Kindle ScribeやGalaxy Note 10+も併用している。
Apple Sidecarを試してみたいが、さらに別のスタイラスを買わなければならないのでためらっている。いつかAppleがNewtonの後継機を出してくれることを願っている
私はタッチスクリーンMacBook Proを無料でもらえても欲しくない。すでにキーボードショートカット向けに最適化されているのに、わざわざ画面を押す理由がない
業務用途なら、タッチよりキーボードとトラックパッドの方がはるかに効率的だ
メインモニターにはタッチがなく、ノートPCの画面は補助用なので、わざわざ手を伸ばす理由がない。だからTouch Barも失敗したのだと思う
このプロジェクトを見て、昔のJohnny LeeのWii-mote実験を思い出した
johnnylee.net/projects/wii/
昔使っていた会社のノートPCにはタッチスクリーンがあったが、意外にも週に1〜2回は便利だった
電車で隣の人に肘が当たらないようにするには、画面を直接タッチする方が楽だったし、スクロールも指でやる方が自然だった
主な入力手段ではなかったが、補助入力オプションとしては悪くなかった
「スキントーンフィルタリング」という文言を見て疑問が湧いた。どの肌色を基準にしているのか、特に肌の色が濃い場合にどれほどうまく動くのか、データが気になる
ノートPCではタッチスクリーンは快適ではない。個人的にはない方がいい
本当に素晴らしいコンピュータビジョンの応用例だ。コードも公開してくれてありがたい
単純なプロトタイプだが興味深い。照明条件によって認識が変わるのか気になる — 屋外や逆光でもうまく動くのだろうか?
「スキントーンフィルタリング」の代わりに背景差分(background subtraction) を使った方が、より安定したのではないかと思う。肌色は照明によってあまりにも多様だからだ
カメラを画面の間に置いたままMacBookを閉じたとき、画面が割れてしまいそうな想像をしてしまう。
Macは好きだが、ハードウェアがあまりに繊細で不安になる。会社のノートPCなので、なおさら気を使う