2011年6月19日日曜日

Production Chains

前の章で説明したように、複数のモジュール(センサーと認識ミドルウェア)を同時にOpenNI実装に登録することができます。
この構成は、アプリケーションに、データの取得や処理に使用するセンサーや認識ミドルウェアの選択の柔軟性を与えてくれます。

Production Chainとは?

Production Nodeの章で、user generator型のProduction Nodeがアプリケーションによって生成される例を見ました。
人体データ(body data)を生成するために、このProduction Nodeは、より低レベルのProduction Nodeであり、センサーから生データを取得するdepth generatorを使いました。
この例で、Production Nodeのシーケンス(user generator -> depth generator)は、人体データを生成するために互いに依存しており、これをProduction Chainと呼びます

異なるベンダーが、同じProduction Node型の実装を提供することができます。

例:
Aブランドがuser generatorの実装を提供しているとし、Bブランドがまた別のuser generatorの実装を提供しているとします。
両方のgeneratorはアプリケーションの開発者が利用可能です。
OpenINは、アプリケーションが、どのモジュールを使用するか、どのProduction Chainを使用するか、定義することを可能にしています。
OpenNIは、登録済みのモジュールから、可能なProduction Chainの組み合わせをすべて列挙します。
アプリケーションは、好ましいブランドや、バージョンなどに従って、そこから1つのChainを選択します。
注:アプリケーションは、chainを特定せず、OpenNIから、最初のchainを取得することも可能です。

普通、アプリケーションは、chainの最上位にのみ興味があります。
これは、アプリケーションにとって使い物になるレベルのデータを提供してくれるnodeだからです。
たとえば、hand point generatorなど。

OpenNIでは、その下にあるchainを意識することなしに、アプリケーションが一つのnodeだけを利用することも可能です。
詳細な設定のために、このchainにアクセスして、個々のnodeを設定することも可能です。

たとえば、前に、OpenNIに複数のモジュール(認識ミドルウェアとデバイス)を登録する例を見ました。
その場合、アプリケーションがuser genertorを要求すると、OpenNIは以下のように、人体データを取得するための4種類のProduction Chainを返します。

上図は、以下のモジュールがOpenNIに登録された場合の例です。
・異なるベンダーの供給する、2つの人体認識見取るウェア。
・異なるベンダーの提供する、2つの3Dセンサー。

上図は、この実装中で見つかった、4つの選択可能なProduction chainを表します。
それぞれのChainは、人体認識ミドルウェアと3Dセンサーの可能な組み合わせを表します。
OpenNIは、アプリケーションが上の4つから1つを選択できるようにします。

0 件のコメント:

コメントを投稿