Aurora Vision Studioにおける配列
イントロダクション
配列は、ゼロ、一つ以上の要素から構成されるコレクションで、すべての要素は同じ型です。 Aurora Vision Studioでは、任意の型 X に対して XArray 型が対応しており、XArrayArray も含まれます。例えば、Point2D、Point2DArray、Point2DArrayArray などがあります。
配列は、C++の std::vector クラステンプレートと非常に類似しています。C++では std::vector < std::vector< atl::Point2D > > のようなものが使えるように、Aurora Vision Studioでは Point2DArrayArray が使えます。
配列のためのジェネリックフィルタ
配列は、以下のカテゴリの中で使用できる幅広いジェネリックフィルタを使用して処理できます:
これらのフィルタのそれぞれは、適切な要素型でインスタンス化する必要があり、接続を作成する際に後でミスが発生しないようにします。 ここでは、RegionArray型の入力を持つTestArrayNotEmptyフィルタの使用例を示します:
シングルトン接続
スカラー値(例: Region)が配列型の入力(例: RegionArray)に接続されると、自動的に単一要素の配列への変換が行われる場合があります。この機能は特定のフィルタでのみ使用でき、マクロフィルタの入力では使用できません。
配列接続
配列(例: RegionArray)がスカラー型の入力(例: Region)に接続されると、2番目のフィルタは各入力データ要素ごとに1回ずつ実行されます。これを配列モードと呼びます。 すべての反復からの出力データは、1つの出力配列に統合されます。ユーザーインターフェースでは、フィルタ名に "[]" 記号が追加され、出力型は T から T(Array) に変更されます。角括弧は、配列モードのために作成された配列型を、特定のフィルタに固有のものと区別します。
例えば、以下のプログラム断片では、ブロブ(領域)の配列が、単一の領域の面積を計算するフィルタに接続されています。このフィルタは各入力ブロブごとに独立して実行され、その出力は Integers の配列です。
備考:
- スカラー入力に接続された入力配列が空の場合、フィルタは一切実行されず、出力には空の配列が生成されます。
- 単一のフィルタインスタンスで複数の配列接続がある場合、すべての入力配列の長さは同じでなければなりません。そうでない場合、ドメインエラーが通知されます。 詳細については、Array Synchronizationを参照してください。