このページをはてなブックマークに追加このページを含むはてなブックマーク このページをlivedoor クリップに追加このページを含むlivedoor クリップ

目次

はじめに

まぼろし博覧会にて、GW期間中(2016年4月29日〜5月5日)に「ハイカラさんの文化祭」が開催されました。

イベント期間中、チーム・ハッカー寺子屋は、次のコンテンツを提供しました。

  • まぼろし放送局(MHK)
    • 撮影・配信 【MAD・IPUSIRON担当】
    • 音響・DJブース 【MAD担当】
    • まぼろし放送局のサイト作成 【IPUSIRON担当】
    • まぼろし放送チャンネル
    • まぼろし放送局ギャラリー
  • VR体験コーナー 【IPUSIRON担当】
  • 人類セーラちゃん計画 【IPUSIRON担当】

ここでは、IPUSIRONが担当した「人類セーラちゃん計画」の舞台裏を紹介します。

高速化

.メラで顔を検出して、そこにセーラちゃんのお面を載せるシステムを構築しました。 Raspberry Pi 2B+カメラモジュールでリアルタイムに映像を取得して、OpenCVで顔を検出して、検出した顔の周りに赤色の正方形を表示するようにしました。次に、「モザイク処理」「笑い男」と徐々に改良して、最後に「セーラちゃん」のお面をかぶせるところまで作りました。

⊆,法▲機璽椒癲璽拭爾砲茲辰董⊂絏次左右にカメラモジュールのレンズの方向を変更できるようにしました。まずは可変抵抗で制御できるようにしました。次に、プログラムで検出した顔を画面中央にくるようにレンズの向きを自動制御するようにしました。

2鯵阿棒瀉屬垢襪燭瓠広い範囲をレンズで捉えることができるように、「マグネティック広角レンズ for Raspberry Pi Camera」を用意しました。その他のカメラモジュールを2種類、USBカメラなどを用意しましたが、結局は広角レンズを付けるのが手軽でした。 カメラモジュールのレンズ周辺には、丸い輪(マグネットを引き寄せる輪)を取り付ける面積が小さいという問題があります。 取り付けたとしても、カメラのレンズが広角レンズにぶつかってしまいます。レンズ穴を設けたアクリル板を間に挟むことで、広角レンズを引き寄せる丸い輪を安定して取り付けることができ、カメラのレンズと広角レンズの距離を調節できるようになりました。

ず蚤腓量簑蠅蓮▲螢▲襯織ぅ爐砲面をかぶせる処理は非常に重いということです。これを改善するのに非常に手間取りました。 一番の問題はRaspberry Piを利用していることであり、PCで処理をすれば並列処理などができ高速化を期待できますが、ここではあえてRaspberry Piという縛りの中での改善を試みました。

処理する大きさが320ピクセル×240ピクセルだとなんとか処理が追いつきますが、その倍の640ピクセル×480ピクセルに拡大すると処理が追いつかず使い物になりません。

PythonのプログラムをCのプログラムに移植してみました。 raspicam_cvを参考にしました。 しかしながら、感覚的にはほとんどは見られませんでした。

次にカメラモジュールではなく、UVC(USB Device Class)対応Webカメラにしたら、どうかと思いました。UVC対応Webカメラでの映像をOpenCVで加工するプログラムに作ってみましたがほとんど改善しませんでした。

妥協案として、拡大鏡アプリを利用して、表示している320ピクセル×240ピクセルのウィンドウを強制的に拡大するというアプローチでした。エレガントではありませんが、この方法だとあまり負荷がかからずに、表示画面を大きくすることができました。 Rasberryp Pi上で動作する適切な拡大鏡アプリが見つからなかったので、Javaで作りました(Javaで作った理由はWindows側で作成したものをそのままRaspberry Piで実行したかったからです)。

まぼろし博覧会なのでかぶせるお面の画像は、顔だけでなく、首(の一部)も表示されるように作りました(雑に見せるため)。

イベント中における改良

まぼろし駅の入口のところに、50インチぐらいのモニターを設置し、Raspberry Piの画面をHDMIでそのTVに表示するようにしました。 初めて屋外にモニターを設置して、次のような問題が生じることがわかりました。

ゝ娶により撮影対象が暗くなる。 画面反射により、周囲の余計なものが映り込んだり、光の反射で見えにくい。 1によって、モニターやRaspberry Piが塗れる。

,梁从として、撮影ライトがあれば理想的ですが、屋外なので天然のライトといえる太陽光を利用しました。太陽光を反射させるラフ板を身近なもの(100均にあるようなもの)で自作しました。 POPボードであれば片方の全面に両面テープが貼ってあり、そこにアルミホイルを貼り付けます。飛び出した部分をカットして、ビニールテープで固定します。これで自作ラフ板が完成します。 ここでは、POPボードを用意できなかったので、大きめの段ボールを用いて、そこにアルミホイルを貼り付けました。最初から付いている折り目を利用して、コの字状にになります。使用していないときは折りたたむことで、アルミホイルのはがれを防ぐことができます。 裏の5箇所にロープを取り付けて、このロープを張ることで望む方向・形状に設置することができます。そして、使用しないときはこのロープで固定できます。

△梁从として、モニター周囲に黒い枠で影を作りました。黒くしたのは、光を吸収して反射させないためです。 大きめの段ボールをカットしたり、ガムテープで張り付けたりすることで、モニターを包み込むような形状にします。黒のペンキで全体を塗ります。ただし、ガムテープはペンキをはじくのできれいには塗れません。まぼろし放送局では手作り感を出すためにこれでよしとしましたが、きれいに作りたい方は塗料を塗れるテープを利用してください。

設置時にモニターの上に置くだけだと風に飛ばされることがあるので、テープで脇と後ろを固定します。

モニターの収納時は、前後を逆にしてかぶせることで、液晶側をガードすることができます。

の対策として、100均で購入したA4クリアケースを用いました。半透明なので、かぶせた状態でもRaspberry Pi本体が見えます。また、脇にはつかむところが凹んでいるので、そこからケーブル(電源ケーブル・HDMIケーブル・カメラモジュールのケーブル・サーボモーターと接続するコード)を出すことができます。小雨であればこの程度でのガードで十分です。 大雨の場合には、モニターやRaspberry Piの上に大きめのブルーシートをかぶせます。

A4クリアケースにRaspberry Piやカメラモジュールを入れて、新聞紙で軽く固定しておけば、持ち運んだり、配送したりする際にも安心です。

終わりに

このイベントを通じて、屋外展示の難しさを実感しました。こうした課題は想定外のものでしたが、その場で解決する楽しさを体験することができました。 次回のイベントではこうした経験を活かし、さらに新し試みを考えていますので、お楽しみに。