運算子 ImageBufferMultiRoIDyn

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。

該運算子將影像串流緩存至 幀擷取卡 RAM(DRAM)中進行緩衝。 需具備一個類型為RAM的VisualApplets 資源(請參閱「裝置資源的分配」)。

ROI 座標透過獨立的操作員輸入連結提供,形式為包含 ROI 座標的影像。 操作員將這些影像中的每個像素視為一組有效的 ROI 座標。 因此,ROI 輸入影像的大小決定了 ROI 的數量。 對於輸入連結 I 上的每張輸入影像,都需要一套新的 ROI 座標影像。 ROI 輸入由 4 個座標輸入連結組成。 分別是左上角 ROI 座標的 X 和 Y 座標連結,以及右下角 ROI 座標的 X 和 Y 座標連結。

請注意,ROI 的 X 座標會經過轉換,以符合我根據其並行性所定義的輸入連結之 X 方向粒度,也就是說, 運算子 ImageBufferMultiRoIDyn 只能以並行性的粒度來分割行。 座標 XTopLeft 必須是平行字元組中第一個元件的索引。 座標 XBottomRight 必須是平行字元組中最後一個像素的索引。

讓我們透過一個範例來說明運算子的行為: 假設輸入鏈路 I 的並行度為四。 因此,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 的高度不取決於平行度,因此可以是任何合法的數值。

[注意] 公式:

XTopLeft* = floor(XTopLeft /Parallelism) *Parallelism

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

[注意] 範例:

在輸入鏈路 I 上採用四路並行處理時:

  • 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 座標,但並無此必要。 使用者亦可使用例如運算子CreateBlankImage 來生成 ROI 座標。

當 ROI 影像為空(即不包含任何像素)時,該運算子將在輸出時提供一張空影像。 空影像不包含任何像素。若任何 ROI 不合法,該運算子將針對該 ROI 提供一張空影像。

ImageBufferMultiRoIDyn 針對由輸入鏈結中的最大影像寬度與高度參數所定義的固定尺寸影像進行處理。 這意味著該運算子會對輸入幀的尺寸進行控制。

小於最大影像尺寸的影像將在不作任何修改的情況下被緩存。 然而,區域興趣(ROI)的讀取將在最大可能影像尺寸的幀上進行。 缺失的幀像素包含隨機資料,在後續處理中應視為未定義。

超過最大幀高度或最大幀寬度的影像,將會被裁切至最大幀尺寸, 並以此形式儲存於緩衝區中。 從感興趣區域(ROI)讀取影像時,同樣會以最大幀尺寸為基準。

當發生溢出時,也就是說緩衝區因已滿而無法儲存更多影像, 所有傳入的影像都將被丟棄,直到緩衝區中有足夠的可用空間來儲存至少一幀影像為止。 溢出可能由各種原因引起,但所有情況都會導致讀取速度相較於 寫入速度過慢。 這可能是因為定義了過多的 ROI(感興趣區域),或是因後續處理 管線 所造成的阻塞狀況,亦或是輸入影像流的速度過快所致。 在設計平衡的正常情況下,絕不會發生溢出。

為了測量緩衝區的填滿程度,操作員提供 2 個寄存器: FillLevel 和 Overflow。 FillLevel 顯示 RAM 的填滿百分比。 當 FillLevel 接近或達到 100%,且接下來要儲存至緩衝區的影像將 超過 RAM 容量時,Overflow 參數會被設定為 1。

一旦對應的幀完全緩衝完成, 且當前影像的所有 ROI 集合均已傳輸至 ROI 輸入端, 該運算器即會在輸出端提供 ROI 影像。

所支援的 ROI 最大數量,取決於 XTopLeft 輸入連結的最大影像寬度與高度設定之乘積。 允許的 ROI 最大數量為 2E20-1。 ROI 座標的緩衝需 FPGA 內部區塊 RAM。 因此,ROI 的數量受限於可用的 FPGA 內部區塊 RAM。

參數InfiniteSource用於指定該運算子是直接連接至攝影機,還是與其他記憶體運算子依序串接。 請參閱「無限來源/連接攝影機」以獲取更多資訊。

Operator Restrictions

  • 輸入連結 I 不支援空框或空行。

  • 完全支援在埠 I 上線長度各異的圖像。

  • ROI 埠上的空幀或空行均獲得完整支援。

  • 系統完全支援在 ROI 埠上具有不同線長度的影像。

[注意] imaFlex CXP-12 Quad 及imaFlex CXP-12 Penta 平台不支援ImageBufferMultiRoiDyn功能

imaFlex CXP-12 Quad 及imaFlex CXP-12 Penta 平台不支援ImageBufferMultiRoiDyn,但您可以改用等效的用戶函式庫元件來取代,適用於 imaFlex CXP-12 Quad 及imaFlex CXP-12 Penta 平台。有關如何 使用用戶函式庫元件的說明,請參閱「隨附的用戶函式庫」。

頻寬最佳化

流經使用 Frame Grabber RAM (DRAM) 之 operator 的理論頻寬 [bits/second] 是根據下列公式計算:

然而,由於 DRAM 效率的關係,實際頻寬總是小於理論頻寬。

當 Bit Width 與 Parallelism 的乘積等於內部 RAM Port Width 時, 即可達到流經該 operator 的 最大頻寬。

[注意] 平台特定值

RAM Port Width 與 System Clock 因平台而異。如需關於您個人平台的詳細資訊,請參閱 Device Resources。

I/O Properties

Property Value
Operator Type M
Input Links I,影像資料輸入
XTopLeft,座標資料輸入
YTopLeft,座標資料輸入
XBottomRight,座標資料輸入
YBottomRight,座標資料輸入
Output Link O,資料輸入

Synchronous and Asynchronous Inputs

  • 這 4 個 ROI 輸入彼此同步。
  • ROI 輸入與輸入I 呈非同步狀態。

Supported Link Format

Link Parameter Input Link I 輸入連結 XTopLeft 輸入連結 YTopLeft 輸入連結 X 右下角 輸入連結 YBottomRight Output Link O
Bit Width [1, 64]12 auto3 auto4 auto3 auto4 as I
Arithmetic {unsigned, signed} 無號數 無號數 無號數 無號數 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 2E20-16 作為 XTopLeft 作為 XTopLeft 作為 XTopLeft as I
Max. Img Height any5 2E20-16 作為 XTopLeft 作為 XTopLeft 作為 XTopLeft as I

1

無號輸入的 Bit Width 範圍為 [1, 64]。 有號輸入的範圍為 [2, 64]。 無號彩色輸入的範圍為 [3, 63],有號彩色輸入的範圍為 [6, 63]。

2

位元寬度與並行度的乘積不得超過原生 RAM 資料寬度 (RamDataWidth)。 檢查 裝置資源 以獲取更多資訊。

3

位寬為

4

位寬為

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

Parameters

RamDataWidth
Type 靜態寫入參數
Default 不適用
Range 整數

此參數提供可用於 RAM 介面的資料位元數。這是用於輸入和輸出的最大位元數。

RamAddressWidth
Type 靜態寫入參數
Default 不適用
Range 整數

此參數提供可用的位址位元數。這有助於計算允許的最大影像尺寸。

FillLevel
Type 動態讀取參數
Default 0
Range [0%, 100%]

此參數以 25% 為單位提供 DRAM 的 Fill 級別。

Overflow
Type 動態讀取參數
Default 0
Range [0, 1]

此參數表示發生緩衝區溢位。

InfiniteSource
Type 靜態參數
Default ENABLED
Range {ENABLED, DISABLED}

此參數會啟用對無限來源運算子(如 Camera 運算子)的支援。 請參閱 'Infinite Sources / Connecting Cameras' 以取得更多資訊。

Examples of Use

以下範例展示了運算子 ImageBufferMultiRoIDyn 的使用方式: