こんにちは、ベーコン婆男です。
今回は、Kurentoならではの顔認識を使ったAR(拡張現実)のチュートリアルを紹介したいと思います。
チュートリアル2: WebRTC magic mirror
このチュートリアルでは、チュートリアル1と同様に、送信した映像をそのまま受信して表示しますが、チュートリアル1と異なるのは、Kurentoサーバ側で、WebRTCの映像データから顔を認識して、赤色の帽子をかぶせます。WebRTCを使った簡単なAR(拡張現実)が実現できています。
チュートリアル1の繰り返しになりますが、以前投稿した「WebRTC Kurentoサーバの構築」の記事に従って、Kurento Media Serverのインストールとサービス起動をお願いします。
サービスが起動していないと、ビルド後にエラーが発生して動作しないため、必ずサービスを起動しておいてください。
また、チュートリアル1に記載した手順で、チュートリアルのコードをGitHubからダウンロードしてください。全チュートリアルのコードがダウンロードされますので、一度ダウンロードすれば再実行する必要はありません。
kurento-tutorialフォルダにgitでソースコードを取得した状態から説明します。kurento-magic-mirrorフォルダに移動して、mvnでビルドします。
2017年9月時点の最新は、6.6.2ですが、このバージョンのMagic Mirrorチュートリアルは不具合があるようで、顔認識が動作しませんでした。そのため、6.6.0を使用してください。
$ cd kurento-tutorial-java/kurento-magic-mirror $ git checkout 6.6.0 $ mvn compile exec:java
ビルドが成功すると、Magic Mirrorアプリが起動します。
パソコンでブラウザを立ち上げて、Kurentoが起動しているサーバ(ポート8443)をhttpsで開いてください。
https://(サーバアドレス):8443/
サーバに証明書が実装されていない場合は警告が表示されますが、無視して開いてください。
左側に表示されている自分の映像が、サーバからのループバックで、そのまま右側に表示されているのは、チュートリアル1のHello Worldと同じですが、今回のチュートリアル2のMagic Mirrorでは、右側の自分の頭の上に帽子が被っています。
これは、Kurentoサーバ側で、WebRTCクライアント端末から受信した映像を解析し、顔を検出して、その顔位置に帽子を描画して、クライアント端末に送信しています。
Kurentoでは、Media Elementという機能コンポーネントを組み合わせることで、サーバ側で色々な画像処理ができるようになっています。今回のMagic Mirrorでは、ストリーミングデータの受信・送信を行うWebRtcEndpointと、顔認識をして描画を行うFaceOverlayFilterのMedia Elementをつなげることで、今回の機能を実現しています。ちょうど、レゴブロックを組み合わせる感覚で、色々な機能を実現できるようになっています。
WebRTCは、映像や音声等のストリーミングデータをやり取りするリアルタイムコミュニケーションのためのプロトコルですが、Kurentoは、リアルタイムコミュニケーション用のストリーミングプラットフォームに留まらず、画像認識やARなどの、リアルタイムな映像処理プラットフォームとしての可能性を持っています。
ストリーミングデータに対して、リアルタイムに画像加工や画像分析をしたりできるような、新しいコミュニケーションアプリを作りたいと思っている方には、Kurentoは大変面白いサーバだと思います。