連載:Intel Perceptual Computing SDK(現:RealSense SDK)入門(2)
Intel Perceptual Computing(PerC) SDKの概要と環境構築
PerC SDKの開発環境やアーキテクチャ、インストール方法について解説。またSDKに含まれているサンプルを紹介することで、PerCが提供する機能について見ていく。
今回はIntel Perceptual Computing SDK(以下「PerC SDK」とする。現在は「Intel RealSense SDK」)の概要と環境構築について解説する。
PerC SDKは無償で商用利用も可能である。SDKの全ての機能を利用するには、Creative Interactive Gesture Camera Developer Kitの購入(後述)が必要であるが、前回の通り、Colorカメラおよび音声関連機能だけを利用する場合はWebカメラやマイクがあればよい。
Creative Interactive Gesture Camera Developer Kitの購入について
Creative Interactive Gesture Camera Developer Kitは(プロダクト名: Creative Senze3D)はこちら(次の画像のサイト)から購入できる。デバイスの149米ドルと送料の約24ドルで、日本まで1週間ほどで届く。
Intel Perceptual Computing SDKの環境
PerC SDKの要求スペックとしては第2世代以降のインテルCoreプロセッサを搭載したWindows 7以降のコンピューターとなっている(現在のHaswellが第4世代)。Windows 8および8.1でも動作するが、Windowsストアアプリ(WinRT)には対応していない。
開発環境としてサポートされている言語および環境は次の通りだ。
言語および環境 | バージョンなど |
---|---|
C++ | Visual Studio 2008/2010/2012 |
C#など(.NET) | .NET Framework 4.0 |
Unity | Unity PRO 3.5.1f2以降 |
Java | JDK 1.7.0_11以降 |
Processing | 1.5.1以降 |
openFrameworks(C++) | v0071以降 |
他にもPerC SDK側の対応ではないが、「PCL(Point Cloud Library)」と呼ばれる点群(=RGBおよびDepthの点の集合)を扱うライブラリにPerC SDK対応が入り、点群を扱いやすくなっている。
Intel Perceptual Computing SDKのインストール
PerC SDKのインストーラーはこちら(次の画像のサイト)からダウンロードできる。[Download]ボタンからはWebインストーラー、[Download Additional Language Packs]からはオフラインインストーラーおよび各国の音声エンジンがダウンロードできる。
PerC SDKは2012年末にベータ版がリリースされ、2013年3月に正式版がリリース。その後も細かくリリースされ、現在ではRelease 7となっている。およそ1~2カ月に1回はアップデートされるので、マメにサイトをチェックするとよいだろう(現在のアップデートでは、それほど大きな変更はない)。
インストーラーをダウンロードしたら、以下の手順に従ってインストールしてみよう。
1. インストーラーを起動してSenz 3Dカメラを検出できなかった場合、警告が出るが無視して構わない
2. インストールする項目の下に音声エンジンの選択があるので、日本語(またはインストールしたいエンジン)を選択する
3. インストールが完了したらWindowsを再起動する(音声エンジンが1つ、700MBytesほどあるので、インストールに時間がかかるが気長に待ってほしい)
Intel Perceptual Computing SDKのフォルダー構成
PerC SDKは既定の設定で「C:\Program Files\Intel\PCSDK」(64bit環境では「C:\Program Files (x86)\Intel\PCSDK」)にインストールされる。ヘッダーファイルやライブラリ、各環境のサンプルなどがここにインストールされる。よく使う/見るフォルダーを紹介しておこう。
フォルダー | 内容 |
---|---|
bin | C++およびC#でのサンプルの実行ファイル。画像表示やジェスチャー(手指を含む)、音声など機能ごとに分かれている |
doc | CHMヘルプファイル形式のドキュメント |
framework | C#やUnity、Processingなど、C++以外の環境のライブラリ、サンプル |
include | C++用のヘッダーファイル |
lib | C++用のライブラリファイル |
props | C++用のVisual Studioプロジェクトプロパティシート |
runtime | ランタイムのインストーラー |
sample | C++版のサンプル |
他にもPCSDKフォルダー直下にあるrelease_notes.rtfファイルに変更履歴が書かれているので、更新の際は参照するとよいだろう。
Intel Perceptual Computing SDKのアーキテクチャ
PerC SDKのアーキテクチャは次の図のようになっている。
「コアフレームワーク(Core Framework)」としてC++のライブラリがあり、それをラップしてより簡単にSDKを扱うための「UtilPipeline」というクラスが基礎となる。そこから各言語や環境用にポーティングされている。
C#(などの.NET)用のライブラリは、コアフレームワークをC++/CLI言語でマネージ化している(「UtilMPipeline」クラスがそれだが、クラス構造としては「UtilPipeline」と同様)。
その他の言語はUtilPipelineから派生している。ProcessingおよびUnityは、UtilPipelineからさらにCのライブラリに変換され、それぞれの環境用にポーティングされている。.NETとUnityについては共に言語はC#を利用するが、この図からも分かる通り、ライブラリは別になっており、Unity版はよりUnity環境に特化した作りになっている。
サンプルから見るIntel Perceptual Computing SDKの機能
実際にサンプルをいくつか動作させてPerC SDKの機能を見てみよう。サンプルの実行ファイルは、binフォルダー以下にある。これらのコードはsampleフォルダー以下にある(全て、コアフレームワークとWin32 APIで実装されている)。
サンプル「raw_streams」
Colorカメラ、Depthカメラの画像を表示するサンプルアプリケーションだ(次の画面)。Depthカメラは平滑化(Smoothing)されたデータとされていない生データを選択できる。
サンプル「gesture_viewer」
手指の検出やジェスチャー、ポーズの検出を行うサンプルアプリケーションだ(次の画面)。PerC SDK最大の特徴ともいえる機能を見ることができる。
ここで見られる情報を解説しよう。
- 手指の検出として、そのまま手および指の位置を検出し、その座標を取得できる
- 手の開閉度合いとして、手をパーの状態からグーの状態にすることで、右のバーの長さが変化する
- ポーズおよびジェスチャーの検出を行える。PerC SDKでは下記のポーズおよびジェスチャーを認識できる
種類 | 名称 | 概要 |
---|---|---|
ポーズ | Peace | 指2本(ピース、チョキ) |
Big5 | 指5本(パー) | |
Thumb Up | 親指を上向きに立てる | |
Thumb Down | 親指を下向きに立てる | |
ジェスチャー | Swipe Left | 手を左に動かす |
Swipe Right | 手を右に動かす | |
Swipe Up | 手を上に動かす | |
Swipe Down | 手を下に動かす | |
Circle | 手で円を描く | |
Wave | 手を左右に動かす |
サンプル「face_tracking」
顔の検出および顔の部位(目、鼻、口)の検出を行うサンプルアプリケーションだ(次の画面)。顔の検出は画像処理で行うため、Webカメラでの実行も可能であり、人数に対する制限もない。
サンプル「segmentation_viewer」
Depthデータを利用して背景除去を行うサンプルアプリケーションだ(次の画面)。Kinect for Windows SDKのBackground Removalと似た機能を持ち、距離データで背景を除去し、輪郭部分を画像処理することで、人のみを切り出せる。背景を除去したデータを使って、背景と人を合成することもできる。
サンプル「voice_recognition」
音声認識を行うサンプルアプリケーションだ(次の画面)。認識させる言語(Language)と認識方法(Mode)を選択する。認識方法には、あらかじめ認識させる単語を設定し、その単語のみを認識させる「Commandモード」と、発した言葉をそのまま文字列化する「Dictationモード」がある。
サンプル「voice_synthesis」
文字列から音声データを生成する音声合成のサンプルアプリケーションだ(次の画面)。Languageで発する言語を設定し、文字列を入力すると、それをWAVEデータ化することができる。これをファイルに書き込み、.wavファイルにしたり、そのまま出力して音声化したりできる。
まとめ
PerC SDKの特長の1つである手指の検出はLeap Motionと同じである。筆者の経験から両者を比較すると、手指の検出精度はLeap Motionの方がよい。ジェスチャーは両者ともスワイプを持っているが、PerC SDKの方が認識しやすい。また、手の開閉度合いについてもPerC SDKの方が、精度が高い。手指の検出を行う場合は、何をどのように検出させたいか、ということがデバイスの選択基準になるだろう。
他にもColorカメラと顔の検出や、音声関連の機能が充実しているため、近距離でのNUI(Natural User Interface)としての利用には有用であると考えている。
次回からは、下記のタイトルの予定で、C++でPerC SDKを利用したアプリケーションの開発方法について解説する。
- 第3回:Colorカメラおよび顔検出
- 第4回:Depthカメラおよび手指の検出
- 第5回:音声認識と音声合成
1. Intel Perceptual Computing(PerC) SDKの全体像
Intel Perceptual Computing SDKの概要と、それを利用したアプリの開発方法について解説する連載スタート。今回はセンサーモジュールの仕様や、SDKの概要、Intel社の3Dセンシング技術などについて紹介。
2. 【現在、表示中】≫ Intel Perceptual Computing(PerC) SDKの概要と環境構築
PerC SDKの開発環境やアーキテクチャ、インストール方法について解説。またSDKに含まれているサンプルを紹介することで、PerCが提供する機能について見ていく。
5. 無償で簡単にアプリに組み込める「音声認識&音声合成」
マイクに向かってしゃべると音声をテキスト化する「音声認識」や、テキストを音声データに変換する「音声合成」をPC上のアプリで実現したい場合、無償のPerC SDKが便利だ。その開発方法を解説。