2011年6月19日日曜日

Getting Started

Supported Platforms
OpenNIは、以下のプラットフォームをサポートします。
・ Windows XP and later, for 32-bit only
・ Linux Ubuntu 10.10 and later, for x86

Main Objects

・Context Object
contextはOpenNIのメインオブジェクトです。
contextは、アプリケーションが使用しているproduction chainを含む、OpenNIを使用しているアプリケーションの完全な状態を保持します。
同じアプリケーションが1つ以上のcontextを生成できますが、それらのcontextは情報を共有しません。
例えば、認識ミドルウェアは他のcontextのデバイスを使用することはできません。
contextは使用するまえに初期化する必要があります。初期化により、モジュールはロードされ、接続されます。
contextにより使用されたメモリを開放するため、アプリケーションはshutdown関数を呼び出す必要があります。

・Metadata Objects
OpenNIのMetadata Objectは、あるデータのもつプロパティのセットをカプセル化したものです。
例えば、深度マップの典型的なプロパティは、マップの解像度(例えばX方向およびY方向のピクセルの数)です。データを生成するgeneratorは、データを特定するためのMetadata Objectを持ちます。
加えて、Metadata objectは、データ生成時の設定(コンフィグレーション)の記録に重要な役割を果たします。
ノードからデータを読み込んでいるにもかかわらず、アプリケーションが設定(コンフィグレーション)を変更してしまう場合があります。この場合、うまくコントロールしないと、エラーとなってしまいます。
例:
depth generatorがQVGA(320x240)解像度で深度マップを生成するよう設定されており、
アプリケーションはそこから連続的にデータを読み込んでいたとします。
ある時点で、アプリケーションがnodeの出力解像度をVGA(640x480)に設定変更したとします。
新しいフレームデータが届く前は、xn::DepthGenerator::GetDepthMap()を呼び出すと、QVGAのマップが返ってきますが、xn::DepthGenerator::GetMapOutputMode()を呼び出すと、現在の解像度はVGAであると返ってくるため、アプリケーションは不一致に遭遇します。この場合、アプリケーションは受け取った深度マップがVGAであると想定しているため、存在しないピクセルにアクセスしてしまいます。

この場合の解決策は以下のようになります。
個々のnodeはmetadata objectを持っています。metadata objectはデータを読み込んだ際のデータのプロパティを記録しています。上の例の場合、正しい方法は、metadata objectを取得し、そこから解像度を取得することです。

Configuration Changes

OpenNIの設定(コンフィグレーション)オプションは、以下の関数を持ちます。
・Set:設定(コンフィグレーション)を修正する
・Get:現在の値を取得する
・Register/Unregister:オプション変更時のコールバック関数の登録/登録解除を行います。

Data Generators

Map Generator
各種のマップを生成するgeneratorの基本となるインタフェイスです。
主な機能は
・Output Mode property:マップを生成するための設定を制御します。
・Cropping capability
・Alternative Viewpoint capability
・Frame Sync capability

Depth Generator
深度マップを生成するgeneratorです。
主な機能は
・Get depth map:深度マップを生成します。
・Get Device Max Depth:計測可能な最大の距離を取得します。
・Field of View property:センサーの水平方向と垂直方向の角度を設定します。
・User Position capability

Image Generator
カラーイメージマップを生成します。
主な機能は
・Get Image Map
・Pixel format property

IR Generator
IRマップを生成します。
主な機能は
・Get IR Map

Scene Analyzer
センサーの生データを取得し、意味付けしたラベル付きマップを生成するmap generator
主な機能は
・Get Label Map:各ピクセルに意味を持ったラベルを付加したマップを生成します。
(figure1、figure2、backgroundなどのラベルをつけます。)
・Get Floor:床平面の座標を取得します。

Audio Generator
・音声データを生成するオブジェクトです。
主な機能は
・Get Audio Buffer
・Wave Output Modes property:音声出力の設定をします。サンプリング周波数やチャンネル数、ビットレートなどを設定します。

Gesture Generator
人体や手のジェスチャートラッキングを行います。
主な機能は
・Add/Remove Gesture:ジェスチャーのon/offを切り替えます。onにすると、generatorは、ジェスチャーを探し始めます。
・Register/Unregister Gesture callbacks
・Register/Unregister Gesture change

Hand Point Generator
手の位置のトラッキングを行います。
主な機能は
・Start/Stop Tracking:指定した手のトラッキングを開始/終了します。
・Register/Unregister Hand Callbacks:以下のイベントがコールバックを発生します。
新しい手が生成された場合
認識済みの手が移動した場合
認識済みの手を見失った場合

User Generator
空間内の人体データを生成します。
主な機能は
・Get Number of Users:空間内で認識済みのユーザーの人数を返します。
・Get User CoM:ユーザーの中心位置を返します。
・Get User Pixels:ユーザーを表すピクセルを返します。出力は、空間全体のマップで、ユーザーのボディを表すピクセルにはユーザーIDが付加されています。
・Register/Unregister user callbacks:次のアクションがユーザーコールバックを呼び出します。
新しいユーザーを認識した場合
認識済みのユーザーを見失った場合

0 件のコメント:

コメントを投稿