オペレーター FrameBufferMultiRoi (imaFlex)

Operator Library: Memory

ハードウェアプラットフォームで使用可能
imaFlex CXP-12 Penta
imaFlex CXP-12 Quad

このオペレータは、入力画像データをFrame Grabber RAM (DRAM)にバッファリングし、バッファリングされた各画像に対して任意の数の関心領域(ROI)を出力します。

RAMタイプのVisualAppletsリソースが1つ必要です('Allocation of Device Resources'を参照)。RAMタイプの複数のリソースは、' Shared Memory Concept 'を使用して同じ物理RAMを共有します。共有メモリの使用方法に関するドキュメントは、Application Note: Shared Memoryで入手できます。

ROIは、オペレータのパラメータフィールドであるXLength、YLength、XOffset、YOffsetで定義されます。次の画像は、1つの入力フレーム、パラメータのセット、および入力Parallelismが1の場合のオペレータの出力の概要を示しています。

パラメータMaxNumRoIは、バッファリングされた入力フレームごとに読み取ることができるROIの最大数を指定します。ROIの座標パラメータフィールドであるXLength、YLength、XOffset、YOffsetには、それぞれMaxNumRoIのエントリがあります。

パラメータNumRoIは、バッファリングされた画像ごとにオペレータが出力で提供する実際のROIの数を指定します。dynamicとして設定されている場合、この数を超えることはできません。dynamicに設定されている場合は、画像集録中にNumRoIを更新できます。NumRoIへの変更は、現在のフレームからすべてのROIが読み取られたときに有効になります。

すべてのROIはシーケンシャルに読み取られ、オペレータ出力上で個別の画像として提供されます(ROI 0、ROI 1、ROI 2、.. から ROI N-1 まで)。ここで、Nは各入力フレームから読み出されるROIの現在の数であり、パラメータNumRoIによって指定されます。パラメータフィールドのXOffset、XLength、YOffset、YLengthは、ROIのセットを指定します。これらのパラメータのパラメータタイプは、dynamicまたはstaticに設定できます。これにより、実行時にパラメータを調整可能かどうかが決まります。1つのROIパラメータのパラメータタイプが設定されると、すべてのROIパラメータのパラメータタイプ、およびMaxFrameWidth、MaxFrameHeight、MaxFrameSizeModeのパラメータタイプも自動的に適応されます。フィールドパラメータの設定方法については、'Parameter Editing'を参照してください。

最大入力フレーム寸法を超えない限り、ROI定義には考えられるすべての長方形領域がサポートされます。つまり、単一のピクセル、単一の行、単一の列、長方形領域、または完全なフレームをROIとして定義できます。

異なるROIが同じサイズである必要はありません。

各ROIを個別に定義できます。

ROI は重複したり、繰り返したりすることができます。

X座標パラメータのXOffsetおよびXLengthは、入力Parallelismのステップサイズに従う必要があります。

XLengthまたはYLengthをゼロに設定することで、空のROIを定義できます。その場合、オペレータはその出力に空の画像を提供します。空の画像にはピクセルが含まれません。

画像プロトコルVALT_LINE1Dでオペレータを使用する場合、Y座標パラメータが無効になります。1D動作では、オペレータは1つのROIを1つの行として読み取ります。その結果、オペレータの出力は無限の1D画像ストリームとなり、各行は1つのROIによって表現されます(例:行0 = ROI 0、行1 = ROI 1、行N = ROI N、行N+1 = ROI 0、...)。

対応する入力フレームが完全にバッファリングされると、つまり入力フレームのEoF(End of Frame)信号を受信すると、オペレータはその出力でROI画像を提供します。DRAMに十分な空き容量がある場合、ROIの読み取り中に次の入力フレームをDRAMに書き込むことができます。RAMの帯域幅は書き込みと読み取りで共有されますが、読み取りは対応する入力フレームが書き込まれた後にのみ開始できます。フィールドインデックスNumRoI-1でのXLength、YLength、XOffset、YOffsetの値によって定義される、入力フレームの最後のROIを読み取った後、現在のフレームは破棄され、次のROI(フィールドインデックス0)が次の入力フレームをアドレス指定します。オペレータのレイテンシに関する情報については、Table 46, 'Individual Latencies of the Operators in Library Memory'を参照してください。

ROIのパラメータタイプがdynamicに設定されている場合、すべてのROIを動的に更新できます。ただし、画像集録が実行されていない場合にのみ、ROIを更新できます。

オペレータは、DRAMに保存されるバッファリングされた画像データフレームの最大サイズを指定するための2つのモードをサポートしており、パラメータMaxFrameSizeModeを介して設定できます。

  • MaxFrameSizeMode = Autoの場合、DRAMは最大画像サイズの大きさを持つ画像をバッファリングします。これは、I.MaxImgWidth * I.MaxImgHeightです。

    最大画像サイズよりも小さい画像は、変更なしでバッファリングされます。ただし、ROIの読み出しは、常に可能な限り最大の画像サイズを持つバッファリングされたフレーム上で実行されます。この場合、欠落しているピクセルにはランダムデータが埋め込まれるため、後続の処理では未定義として扱う必要があります。

  • MaxFrameSizeMode = Customの場合、バッファリングされた入力フレームの最大寸法は、パラメータMaxFrameWidthおよびMaxFrameHeightによって定義されます。実際の入力フレームの方が大きい場合でも、指定されたパラメータ寸法を超えるデータは破棄されます(オフセットのないROIに似ています)。その場合、DRAMはフレームサイズMaxFrameWidth * MaxFrameHeight分のメモリを予約します。このモードを使用して、メモリ使用量を最適化し、より多くのフレームをDRAMに保存できます。

どちらの場合も、定義されたROIが入力画像内にあるかどうかのチェックは行われません。ただし、MaxFrameWidthおよびMaxFrameHeightの外側にあるROIをアドレス指定することはできません。ROIが実際の入力画像データの外側にある場合、オペレータはランダムなダミー値を読み取りますが、ROIのサイズは変更されません。

MaxFrameSizeMode、MaxFrameWidth、MaxFrameHeightがパラメータタイプstaticまたはdynamicに設定されている場合、ROIパラメータも自動的に同じパラメータタイプに設定され、その逆も同様です。実行時に調整できるのはdynamicパラメータのみです。

オペレータは、入力リンク上の空のフレーム、空の行、および可変の行長をサポートしています。

[注] High Number of ROIs and Timing

パラメータMaxNumRoIによって定義される最大ROI定義の数が増加すると、オペレータのBRAM消費量が増加します。これにより、高いクロックレートでタイミングの問題が発生する可能性があります。たとえば、MaxNumRoIが65536の場合、完全なデザインでタイミングを満たさない可能性があります。多数のROIが必要な場合は、代わりに'FrameBufferMultiRoiDyn'オペレータの使用を検討してください。このオペレータでは、ROI定義は入力リンクを介して渡され、BRAMには保存されません。

InfiniteSource によるオーバーフロー管理

InfiniteSourceモードでは、FrameBufferMultiRoiのデータソースを停止できないため、画像が失われたり破損したりする可能性があります。これは、RAMがいっぱいでこれ以上のデータを受け入れることができないか、共有メモリインターフェイスに対して入力帯域幅が高すぎるために発生します。オペレータがオーバーフロー状態に達するとすぐに、すべての着信データが破棄されます。これにより、フレームの損失や破損が発生します。破損した画像は、入力帯域幅が高すぎる場合にのみ発生します。これは、フィルレベルが完全なエンティティ単位でカウントされるためです。画像のパーツがすでにRAMに書き込まれている一方で、入力帯域幅が高すぎてRAMが書き込みデータを十分に高速に受け入れることができないために画像の別のパーツが破棄された場合に、破損した画像が発生します。その結果、破損した画像を読み取ると、未定義の出力データになります。RAMに再び十分な空き容量ができ、共有メモリインターフェイスによってデータを再びRAMに書き込めるようになるとすぐに、オペレータはオーバーフローから回復し、入力データの破棄を停止します。破損した画像は自動的に終了し、後続の画像は影響を受けません。Overflowパラメータは、オーバーフローが発生したことを示します。OverflowClearModeパラメータを使用すると、オーバーフロー回復直後にOverflowをリセットするか、手動でオーバーフローをリセットするかを定義できます。

Operator Restrictions

  • このオペレータの出力モードは、ImageBufferMultiRoIオペレータのFreeRunモードと同等であり、追加のRoI Output ModeであるWaitAfterImageおよびWaitAfterRoIをサポートしていません。

  • オペレータは入力リンクI上の空のフレームをサポートしていますが、そのフレームの出力ROIにはランダムなダミー値が埋め込まれます。

  • 入力画像がDRAMに書き込まれるフレームよりも小さい場合、ROI座標が入力画像内にあるかどうかのチェックは行われません。この場合、オペレータはMemoryからランダムなダミー値を読み出します。

  • 最大リンクPropertyは、オペレータの使用方法によって異なります。詳細については、以下のSupported Link Formatセクションを参照してください。

帯域幅の最適化

パフォーマンスを最適化するために、使用されるデータビット数は、RamDataWidthモジュールパラメータで提供される数にできる限り一致させる必要があります。ビット幅、カーネルサイズ、およびParallelismの積が内部RAMポート幅RamDataWidthと等しい場合、オペレータを通過する最大帯域幅に達します。カーネルを使用して内部ビット幅を増やすことはできますが、完全なカーネルは単一のピクセルとしてアドレス指定されることに注意してください。

オペレーターが、利用可能な RAM の最大帯域幅を超える書き込みデータの大きなバーストを処理できるようにするには、WritePriorityパラメータを有効にします。これは、カメラ(InfiniteSource = ENABLED)などの無限データソースを使用する場合に推奨されます。WritePriorityパラメータが有効になっている場合、書き込みバーストが原因で RAM の利用可能な帯域幅を超過すると、読み出しが禁止されます。これにより、RAM への書き込みアクセスを一時的に頻繁に行うことができます。カメラが書き込みデータのバーストを配信する場合、そのバーストの後に書き込みデータのギャップが続くことが想定されます(そうでない場合、利用可能な RAM 帯域幅を超過します)。その後、そのギャップを使用して読み出し帯域幅を一時的に引き上げることができます。

I/O Property

Property 値
オペレータータイプ M
Input Link I、画像データ入力
Output Link O, data output

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

Link Parameter Input Link I Output Link O
Bit Width [1, 64]12 as I
Arithmetic {unsigned, signed} as I
Parallelism [1, RamDataWidth / BitWidth / KernelColumns / KernelRows]2 as I
Kernel Columns [1, RamDataWidth / BitWidth / Parallelism / KernelRows]2 as I
Kernel Rows [1, RamDataWidth / BitWidth / Parallelism / KernelColumns]2 as I
Img Protocol {VALT_IMAGE2D, VALT_LINE1D} as I
Color Format any as I
Color Flavor any as I
Max. Img Width 2^31 - 13 as I
Max. Img Height 2^RamAddressWidth3 as I

1

入力 Bit Width の範囲は次のとおりです:

  • 符号なしグレースケール入力の場合:[1, 64]

  • 符号付きグレースケール入力の場合:[2, 64]

  • 符号なしカラー入力の場合: [3, 63]

  • 符号付きカラー入力の場合: [6, 63]。

入力 Bit Width は、ネイティブ RAM データ幅 RamDataWidth を超えてはなりません。

2

Bit Width、Parallelism、およびカーネルサイズの積は、ネイティブなRAMデータ幅を超えてはなりません:

3

入力リンク I の最大画像幅および画像高さは、オペレーターの使用方法によって異なります:

  • MaxFrameSizeMode = Autoの場合、I.MaxImageWidth と I.MaxImageHeight の積が利用可能なRAMサイズに収まる必要があります:

  • MaxFrameSizeMode = Customの場合、I.MaxImageWidth および I.MaxImageHeight はどちらも最大RAMサイズに制限されます。パラメータ MaxFrameWidth および MaxFrameHeight によって選択されたサブイメージのみがRAMに書き込まれるため、積が総RAMサイズを超える場合があります:

    RAMベクトルごとに I.Parallelism ピクセルが書き込まれるため、I.MaxImageWidth は 2^RamAddressWidth を超えることができますが、2^31 - 1 を超えることはできません:

    I.MaxImageWidth と I.MaxImageHeight のBit Widthの合計は48 bit未満である必要があります:

パラメーター

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

このパラメータは、RAMで使用できる最大データ幅を提供します。

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

このパラメータは、使用できるアドレスビット数を提供します。利用可能な RAM スロットの数は 2^RamAddressWidth によって定義されます。現在の RamAddressWidth は、ハードウェアプラットフォームだけでなく、デザイン内のメモリ演算子(つまり、RAM 型のリソースを使用する演算子)の現在の数にも依存します。

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

このパラメータは、DRAMのFillをパーセンテージで提供します。

MaxFrameCount
タイプ 動的リードパラメータ
Default 2^RamAddressWidth / (MaxFrameHeight * (MaxFrameWidth / I.Parallelism))
範囲 [1, 2^RamAddressWidth]

このパラメータは、現在メモリに収まる最大フレーム数を提供します。メモリに収まる最大フレーム数は、パラメータ RamAddressWidth、MaxFrameHeight、I.Parallelism、および MaxFrameWidth によって異なります。

MaxFrameCount = 2^RamAddressWidth / (MaxFrameHeight * (MaxFrameWidth / I.Parallelism))

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

このパラメータは、メモリ内の現在のフレーム数を提供します。

InfiniteSource
タイプ static write parameter
Default DISABLED
範囲 {ENABLED, DISABLED}

このオペレータは、デザイン内のカメラオペレータの直後に配置できます。この場合、InfiniteSource パラメータを ENABLED に設定する必要があります。これにより、オペレータはアクティブなオーバーフロー管理を実行し、オペレータがオーバーフローから正常に復旧できるようにします。オーバーフローは、オペレータの後続のデータシンクが転送を停止または一時停止し、バッファのフィルレベルが最大値に達した場合、あるいは入力帯域幅が高すぎて書き込みデータを外部RAMに転送できない場合に発生します。InfiniteSource が Disabled に設定されている場合、バッファのフィルレベルまたは入力帯域幅が高くなりすぎると、先行オペレータによるデータの転送を停止する禁止信号が生成されます。

書き込みの優先順位付けは、InfiniteSourceで使用されるすべてのオペレータに推奨されます。したがって、InfiniteSourceパラメータがENABLEDに設定されている場合は、WritePriorityパラメータをENABLEDに設定することが推奨されます。

詳細については、「Infinite Sources / Connecting Cameras」を参照してください。

WritePriority
タイプ static write parameter
Default DISABLED
範囲 {ENABLED, DISABLED}

' Shared Memory Concept ' のコンセプトでは通常、接続されているすべてのメモリオペレータ(つまり、RAM 型のリソースを使用するすべてのオペレータ)の間で帯域幅が均等に分配されます。WritePriority パラメータが DISABLED の場合、FrameBufferMultiRoi オペレータは読み取りと書き込みに同じ優先度を割り当てます。WritePriority を ENABLED に設定すると、FrameBufferMultiRoi オペレータは、一時的なメモリデータレートが利用可能な帯域幅を超えている場合に限り、読み取りよりも書き込みを優先します。書き込みを一時的に優先することで、読み取り処理が一時的に減速します。その結果、FrameBufferMultiRoi オペレータの場合、平均帯域幅が利用可能な帯域幅を超えてはなりません。InfiniteSource パラメータを ENABLED に設定して使用するオペレータには、書き込みの優先度付けが推奨されます。停止可能なソースで書き込みの優先度付けを使用する場合は、書き込み帯域幅が高止まりしないようにしてください。高止まりすると、バッファが一杯になるまで FrameBufferMultiRoi オペレータからの読み取りが停止されます。書き込みの優先度付けは個々のオペレータの設定であるため、デザイン内のメモリオペレータが増えるごとに、書き込み優先度付けの影響は低下します。

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

このパラメータはバッファオーバーフローを示します。これは2ビットのビットマップであり、各ビットは異なるタイプのオーバーフローを示します。ビット0はFillレベルのオーバーフローを示し、ビット1は書き込み帯域幅のオーバーフローを示します。Overflow の表示時間は、選択した OverflowClearMode によって異なります。

OverflowClearMode
タイプ 動的書き込みパラメータ
Default AutoClear
範囲 {AutoClear, ManualClear, ClearAfterRead, ClearWithProcessReset}

OverflowClearModeは、オペレータがオーバーフローから回復したときに、Overflowパラメータをどのようにクリアするかを決定します。オペレータがすでにオーバーフロー状態から脱している場合にのみ、このパラメータを使用してオーバーフローステータスをリセットできます。

クリアモード:

  • AutoClear:オペレータがオーバーフローから回復すると、Overflowパラメータは自動的にリセットされます。

  • ManualClear:オペレータがオーバーフローから復旧した後も、Overflow パラメータに ManualClear を OverflowClearMode パラメータに書き込んで手動でリセットするまでは、オーバーフロー状態が表示されたままになります。このモードでは、プロセスリセット(Acquisition Stopなど)によって Overflow パラメータがクリアされないため、取り込みが停止した後もオーバーフローを確認できます。

  • ClearAfterRead:オペレータがオーバーフローから回復しても、Overflowパラメータが読み取られるか、プロセスのリセットが発生する(Acquisition Stopが行われるなど)まで、Overflowパラメータはオーバーフローを表示し続けます。

  • ClearWithProcessReset:オペレータがオーバーフローから回復しても、リセットが発生する(Acquisition Stopが行われるなど)まで、Overflowパラメータはオーバーフローを表示し続けます。

MaxNumRoI
タイプ static write parameter
Default 1
範囲 [1, 65536]

このパラメータは、オペレータが保存できるROIの最大数を定義します。ROIの数が多いと、高いクロックレートにおいてタイミングに悪影響を及ぼす可能性があります。

NumRoI
タイプ dynamic/static write parameter
Default 1
範囲 [1, MaxNumRoI]

このパラメータは、実際に使用されるROIの数を定義します。オペレータは各入力画像から NumRoI 個のROIを読み取り、出力に出力します。パラメータが static に設定されている場合、範囲は [1, 65536] であり、MaxNumRoI は無効になります。

XOffset
タイプ dynamic/static read/write parameter
Default 0
範囲 [0, MaxFrameWidth - XLength]

このフィールドパラメータは、ROIの最も左の列のX座標の配列を定義します。

ステップサイズはParallelismです。

フィールドパラメータの設定方法については、'Parameter Editing'を参照してください。

XLength
タイプ dynamic/static read/write parameter
Default 1024
範囲 [0, MaxFrameWidth - XOffset]

このフィールドパラメーターは、ROIの幅の配列を定義します。

ステップサイズはParallelismです。

フィールドパラメータの設定方法については、'Parameter Editing'を参照してください。

YOffset
タイプ dynamic/static read/write parameter
Default 0
範囲 [0, MaxFrameHeight - YLength]

このフィールドパラメータは、ROIの最初の行のY座標の配列を定義します。

フィールドパラメータの設定方法については、'Parameter Editing'を参照してください。

YLength
タイプ dynamic/static read/write parameter
Default 1024
範囲 [0, MaxFrameHeight - YOffset]

このフィールドパラメーターは、ROIの高さの配列を定義します。

フィールドパラメータの設定方法については、'Parameter Editing'を参照してください。

MaxFrameSizeMode
タイプ dynamic/static write parameter
Default Auto
範囲 {Auto, Custom}

このパラメータは、パラメータ MaxFrameWidth および MaxFrameHeight が入力 I での最大画像寸法に自動的に追従するか(mode=Auto)、またはこれらのパラメータを手動で調整できるか(mode=Custom)を定義します。Custom モードでは、アプリケーションに合わせてカスタマイズされ、入力リンクによって定義される制限よりもはるかに小さくできる最大フレーム寸法を設定できます。これにより、より多くのフレームをRAMに保存できます。Auto モードでは、I のリンクプロパティ(Max.Img Width および Max.Img Height)によって定義される最大画像が、メモリ内の利用可能なスロット数(2^RamAddressWidth)を超えてはなりません。I のリンクプロパティ Max.Img Width および Max.Img Height が利用可能なメモリスペースよりも大きい最大画像を定義しており、Custom モードである場合、入力リンク上の最大画像を小さくするまで MaxFrameSizeMode パラメータを編集することはできません。このパラメータは、取り込みの実行中は書き込みできません。MaxFrameSizeMode は、MaxFrameWidth、MaxFrameHeight、およびROIパラメータと同じパラメータタイプを持ちます。

MaxFrameWidth
タイプ dynamic/static write parameter
Default 1024
範囲 [1, Iにおける最大画像幅]

このパラメータは、現在の画像処理設定の最大画像幅を設定します。この制限を超える入力フレームのラインは、MaxFrameWidth に切り詰められます。この値を最大画像幅未満に減らすと、メモリスペースを節約し、より多くのフレームを保存できるようになります。このパラメータは、MaxFrameSizeMode が Custom に設定されている場合にのみ編集できます。MaxFrameHeight と MaxFrameWidth の積は、利用可能なメモリスペースのスロット数 2^RamAddressWidth に入力Parallelismを掛けた値を超えてはなりません。このパラメータは、取り込みの実行中は編集できません。MaxFrameWidth は、MaxFrameSizeMode、MaxFrameHeight、およびROIパラメータと同じパラメータタイプを持ちます。

MaxFrameHeight
タイプ dynamic/static write parameter
Default 1024
範囲 [1, Iにおける最大画像高]

このパラメータは、現在の画像処理設定の最大画像高さを設定します。この高さの制限を超える入力フレームは、MaxFrameHeight に切り詰められます。この値を最大画像高さ未満に減らすと、メモリスペースを節約し、より多くのフレームを保存できるようになります。このパラメータは、MaxFrameSizeMode が Custom に設定されている場合にのみ編集できます。MaxFrameHeight と MaxFrameWidth の積は、利用可能なメモリスペースのスロット数 2^RamAddressWidth に入力Parallelismを掛けた値を超えてはなりません。このパラメータは、取り込みの実行中は編集できません。MaxFrameHeight は、MaxFrameSizeMode、MaxFrameWidth、およびROIパラメータと同じパラメータタイプを持ちます。