オペレーター ImageBufferMultiRoIDyn

Operator Library: Memory

このオペレーターは、バッファリングされた各画像に対して複数の動的な関心領域(ROI)をサポートします。 ROIの座標は、追加の入力リンクを使用して定義されます。

オペレーターのレイテンシについては、「表 46:Library Memory 内のオペレーターの個別のレイテンシ」を参照してください。

すべてのROIは、ROI 0、ROI 1、ROI 2、そしてROI N-1に至るまで、個別の画像として順番に読み出されます。 Nは、許可されるROIの最大数です。 フレーム寸法を超えない限り、可能なすべての長方形領域がサポートされます。 つまり、単一のピクセル、単一の行、単一の列、長方形領域、または完全なフレームをROIとして定義できます。 異なるROIが同じサイズである必要はありません。 各ROIは個別に定義できます。 ROI同士が重なり合ってもかまいません。 最大画像寸法に違反するROIは、オペレーターによってフィルター処理され、つまりスキップされます。 また、高さや幅が負のROIなど、すべての不正なROIもスキップされます。

オペレーターは、Frame Grabber RAM (DRAM)内でストリームをバッファリングします。 RAMタイプのVisualAppletsリソースが1つ必要です(「デバイスリソースの割り当て」を参照)。

ROI座標は、ROI座標を含む画像として、個別のオペレーター入力リンク上で提供されます。 これらの画像内の各ピクセルは、有効なROI座標セットとしてオペレーターによって処理されます。 したがって、ROI入力画像のサイズによってROIの数が定義されます。 入力リンクI上の各入力画像に対して、新しいROI座標画像セットが必要です。 ROI入力は4つの座標入力リンクで構成されます。 具体的には、ROI左上隅のXおよびY座標のリンク、ならびにROI右下隅のXおよびY座標のリンクです。

ROIのX座標は、そのParallelismによって定義される入力リンクIのx粒度を満たすように変換されることに注意してください。つまり、 オペレーター ImageBufferMultiRoIDyn は、Parallelismの粒度でのみラインを切り取ることができます。 XTopLeft座標は、並列ワード内の最初のコンポーネントのインデックスである必要があります。 XBottomRight座標は、並列ワード内の最後のピクセルのインデックスである必要があります。

オペレーターの動作を説明するために例を見てみましょう。 入力リンクIでのParallelismが4であると仮定します。 したがって、XTopLeftは 0、4、8、12、... である必要があり、XBottomRightは 3、7、11、15、... である必要があります。 座標がこれらの制約に一致しない場合、切り捨て(XTopLeft)または切り上げ(XBottomRight)されます。 たとえば、ROIのX座標が3と7の場合、ROIの最初の列は入力画像の3番目の列になり、最後の列は7番目の列になります。 オペレーターはXTopLeftを0に切り捨て、XBottomRightは7のままにします。したがって、幅は8になります。 ROIの高さはParallelismに依存しないため、任意の有効な値にすることができます。

[注] 数式:

XTopLeft* = floor(XTopLeft / Parallelism) * Parallelism

XBottomRight* = ceil((XBottomRight + 1) / Parallelism) * Parallelism - 1

[注] 例:

入力リンクIでのParallelismが4の場合:

  • 112~551は112~551になります。したがって、幅は = 551 + 1 - 112 = 440 になります
  • 101~540は100~543になります。したがって、幅は = 543 + 1 - 100 = 444 になります

4つのROI入力は互いに同期しています。つまり、これらのリンク上の画像は同じサイズであり、同時に同期して提供される必要があります。 これは、Oタイプモジュールの任意のネットワークを介して同じMタイプモジュールから供給される場合に常に当てはまります。 詳細については、同期ルール(「複数の入力を持つMタイプオペレーター」)を参照してください。 ROI座標は、入力リンクIに対して非同期です。

オペレーターは、画像とすべてのROI座標がバッファに完全に転送されるとすぐに、ROIの読み出しを開始します。 実際には、ROI座標を入力画像から計算して決定できますが、必須ではありません。 ユーザーは、ROI座標の生成に例えば CreateBlankImage オペレーターを使用することもできます。

ROI画像が空の場合、つまりピクセルが含まれていない場合、オペレーターはその出力に空の画像を提供します。 空の画像にはピクセルが含まれません。ROIが無効である場合、オペレーターはそのROIに対して空の画像を提供します。

ImageBufferMultiRoIDyn は、入力リンクの最大画像幅および高さパラメータによって定義された固定サイズの画像に対して動作します。 これは、オペレーターによって実行される入力フレーム寸法の制御を意味します。

最大画像寸法よりも小さい画像は、変更なしでバッファリングされます。 ただし、ROIの読み出しは、可能な最大画像寸法のフレーム上で実行されます。 欠落しているフレームピクセルにはランダムデータが含まれており、以降の処理では未定義として扱われる必要があります。

最大フレーム高または最大フレーム幅を超える画像は、最大フレーム寸法に切り取られ、そのようにバッファリングされます。 ROIの読み出しは、再び最大寸法のフレームに基づきます。

オーバーフローが発生した場合、つまりバッファが満杯のためにこれ以上画像を保存できない場合、少なくとも1つのフレームを保存するのに十分な空きスペースができるまで、すべての着信画像が破棄されます。 オーバーフローはさまざまな理由で発生する可能性がありますが、そのすべては、書き込みに比べて読み出しの実行が遅すぎることに起因します。 これは、定義されたROIが多すぎるため、後続の処理パイプラインによるブロック条件が原因であるため、または入力画像ストリームが速すぎるためです。 バランスの取れた設計の通常の状況では、オーバーフローが発生することはありません。

バッファのFillLevelを測定するために、オペレーターには FillLevel と Overflow の2つのレジスタが用意されています。 FillLevel は、RAMのFillLevelのパーセンテージを示します。 Overflow パラメータは、FillLevelが100%に近づくか100%になり、バッファに保存される次の画像がRAM容量を超えるときに、1に設定されます。

対応するフレームが完全にバッファリングされ、現在の画像のすべてのROIセットがROI入力で受信されるとすぐに、オペレーターはその出力にROI画像を提供します。

サポートされるROIの最大数は、XTopLeft入力リンクの最大画像幅と高さの設定の積によって決定されます。 許可されるROIの最大数は 2E20-1 です。 ROI座標のバッファリングには、FPGA内蔵ブロックRAMが必要です。 したがって、ROIの数は利用可能なFPGA内蔵ブロックRAMによって制限されます。

パラメータ InfiniteSource は、オペレーターがカメラに直接接続されているか、他のメモリオペレーターと順序付けされているかを指定するために使用されます。 詳細については、「Infinite Sources / カメラの接続」を確認してください。

Operator Restrictions

  • 入力リンクI上の空のフレームまたは空のラインはサポートされていません。

  • ポート I における異なるライン長の画像が完全にサポートされています。

  • ROI ポート上の空のフレームまたは空のラインが完全にサポートされています。

  • ROI ポートにおける異なるライン長の画像が完全にサポートされています。

[注] ImageBufferMultiRoiDyn は、imaFlex CXP-12 Quad および imaFlex CXP-12 Penta プラットフォームでは利用できません

ImageBufferMultiRoiDyn は imaFlex CXP-12 Quad および imaFlex CXP-12 Penta プラットフォームではサポートされていませんが、代わりに imaFlex CXP-12 Quad および imaFlex CXP-12 Penta プラットフォーム用の同等のユーザーライブラリエレメントを使用することができます。ユーザーライブラリエレメントの操作方法については、「Delivered User Libraries」を参照してください。

帯域幅の最適化

Frame Grabber RAM (DRAM) を使用するオペレーターを通過する理論上の帯域幅 [ビット/秒] は、次の式に従って計算されます。

しかし、実際の帯域幅はDRAMの効率により、常に理論上の帯域幅よりも小さくなります。

オペレーターを通過する最大帯域幅は、Bit WidthとParallelismの積が内部のRAM Port Widthと等しい場合に達します。

[注] プラットフォーム固有の値

RAM Port WidthとSystem Clockはプラットフォーム固有のものです。 個々のプラットフォームの詳細については、Device Resourcesを参照してください。

I/O Property

Property 値
オペレータータイプ M
入力リンク I、画像データ入力
XTopLeft、座標データ入力
YTopLeft、座標データ入力
XBottomRight、座標データ入力
YBottomRight、座標データ入力
Output Link O、データ入力

同期および非同期入力

  • 4つの ROI 入力は互いに同期しています。
  • ROI 入力は、入力 I に対して非同期です。

サポートされているリンクフォーマット

Link Parameter Input Link I 入力リンク XTopLeft 入力リンク YTopLeft 入力リンク XBottomRight 入力リンク YBottomRight Output Link O
Bit Width [1, 64]12 auto3 auto4 auto3 auto4 as I
Arithmetic {unsigned, signed} unsigned unsigned unsigned unsigned as I
Parallelism 2^N(N = {0, 1, 2...})2 1 1 1 1 as I
Kernel Columns 1 1 1 1 1 as I
Kernel Rows 1 1 1 1 1 as I
Img Protocol VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D as I
Color Format any VAF_GRAY VAF_GRAY VAF_GRAY VAF_GRAY as I
Color Flavor any FL_NONE FL_NONE FL_NONE FL_NONE as I
Max. Img Width any5 2^20-16 XTopLeftと同様 XTopLeftと同様 XTopLeftと同様 as I
Max. Img Height any5 2^20-16 XTopLeftと同様 XTopLeftと同様 XTopLeftと同様 as I

1

符号なし入力の場合、入力ビット幅の範囲は[1, 64]です。 符号付き入力の場合、範囲は[2, 64]です。 符号なしカラー入力の場合、範囲は[3, 63]であり、符号付きカラー入力の場合の範囲は[6, 63]です。

2

Bit Width と Parallelism の積は、ネイティブ RAM データ幅(RamDataWidth)を超えてはなりません。 詳細については、Device Resourcesを確認してください。

3

Bit Width は

4

Bit Width は

5

最大画像サイズは、利用可能な RAM のサイズを超えてはなりません: 2^RamAddressWidth >= (I.Max.Img.Width * I.Max.Img.Height) / I.Parallelism

6

ROI 画像の最大ピクセル数(結果として画像あたりの最大 ROI 数)は 2^20-1 を超えてはなりません: 2^20 > XTopLeft.Max.Img.Width * XTopLeft.Max.Img.Height

パラメーター

RamDataWidth
タイプ static write parameter
Default N/A
範囲 整数

このパラメータは、RAMインターフェースで使用できるデータビット数を提供します。これは、入力および出力の最大ビット数です。

RamAddressWidth
タイプ static write parameter
Default N/A
範囲 整数

このパラメータは、利用可能なアドレスビット数を提供します。これは、許可される最大画像サイズの計算に役立ちます。

FillLevel
タイプ 動的リードパラメータ
Default 0
範囲 [0%, 100%]

このパラメータは、DRAMのFillレベルを25%刻みで提供します。

Overflow
タイプ 動的リードパラメータ
Default 0
範囲 [0, 1]

このパラメータはバッファオーバーフローを示します。

InfiniteSource
タイプ static パラメータ
Default ENABLED
範囲 {ENABLED, DISABLED}

このパラメータは、Cameraオペレーターなどの無限ソースオペレーターのサポートを有効にします。 詳細については、'Infinite Sources / Connecting Cameras'を参照してください。

使用例

ImageBufferMultiRoIDyn オペレーターの使用法を以下の例に示します: