Operator Library: Memory
此運算子針對每個緩衝影像提供多個動態感興趣區域 (ROI) 的支援。 ROI 座標是使用額外的輸入連結來定義。
有關 operator 延遲的資訊,請參閱 表 46「Library Memory 中各 operator 的個別延遲」。
所有 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 資源 (請參閱 'Allocation of Device Resources')。
ROI 座標會在獨立的運算子輸入連結上提供,作為包含 ROI 座標的影像。 這些影像中的每個像素都會被運算子視為一個有效的 ROI 座標集。 因此,ROI 輸入影像的大小決定了 ROI 的數量。 對於輸入連結 I 上的每個輸入影像,都需要一個新的 ROI 座標影像集。 ROI 輸入由 4 個座標輸入連結組成。 分別為:ROI 左上角 X 和 Y 座標的連結,以及 ROI 右下角 X 和 Y 座標的連結。
請注意,系統會轉換 ROI X 座標以符合輸入連結 I 其 Parallelism 所定義的 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:
|
所有 4 個 ROI 輸入彼此同步,也就是說,這些連結上的影像必須大小相同,並在同一時間同步提供。 當它們由相同的 M 類型模組透過任意的 O 類型模組網路提供來源時,情況一向如此。 請參閱同步規則以取得更多資訊 ('M-type Operators with Multiple Inputs')。 ROI 座標相對於輸入連結 I 是非同步的。
一旦影像與所有 ROI 座標完全傳輸至緩衝區中,運算子便會開始讀取 ROI。 在實務上,ROI 座標可以從輸入影像計算並決定,但這並非強制要求。 例如,使用者也可以使用 CreateBlankImage 運算子來產生 ROI 座標。
當 ROI 影像為空(即不包含任何像素)時,運算子將在其輸出端提供空白影像。 空白影像不包含任何像素。如果任何 ROI 不合法,運算子將針對該 ROI 提供空白影像。
ImageBufferMultiRoIDyn 會針對由輸入連結最大影像寬度和高度參數所定義之固定大小的影像進行運作。 這表示由運算子執行輸入畫格尺寸控制。
小於最大影像尺寸的影像將在不經修改的情況下進行緩衝處理。 不過,ROI 的讀取將在可能的最大影像尺寸畫格上執行。 遺失的畫格像素包含隨機資料,在後續處理中應視為未定義。
超過最大畫格高度或最大畫格寬度的影像將被裁切至最大畫格尺寸,並以此狀態進行緩衝處理。 ROI 的讀取同樣將以最大尺寸的畫格為基礎。
當發生滿載 (overflow)(即緩衝區因滿載而無法儲存更多影像)時, 所有送達的影像都會被捨棄,直到緩衝區中有夠多的可用空間來儲存至少一個畫格為止。 發生滿載的原因可能有很多種,但所有這些原因都會導致相對於寫入而言,讀取作業執行得太慢。 這可能是因為定義了太多 ROI、後續處理管線造成阻擋狀況, 或是因為輸入影像串流速度過快。 在設計平衡的正常情況下,絕不會發生滿載。
為了測量緩衝區的填充程度,運算子提供了 2 個暫存器: FillLevel 與 Overflow。 FillLevel 顯示 RAM 的填充程度百分比。 當 FillLevel 接近或達到 100%,且下一個要儲存至緩衝區的影像將超出 RAM 容量時,Overflow 參數會設為 1。
一旦對應的畫格完全緩衝完畢,且當前影像的所有 ROI 集都在 ROI 輸入端接收完畢, 運算子就會在其輸出端提供 ROI 影像。
支援的最大 ROI 數量由 XTopLeft 輸入連結的最大影像寬度和高度設定相乘而得。 允許的最大 ROI 數量為 2E20-1。 ROI 座標的緩衝需要 FPGA 內部塊 RAM (block RAM)。 因此,ROI 的數量受限於可用的 FPGA 內部塊 RAM。
參數 InfiniteSource 用於指定 Operator 是直接連接至相機,還是與其他 Memory Operator 進行串接。 請參閱 'Infinite Sources / Connecting Cameras' 以取得更多資訊。
算子限制
-
不支援輸入連結 I 上的空白畫格或空白行。
-
完全支援連接埠 I 上具有不同線段長度的影像。
-
完全支援 ROI 連接埠上的空白畫格或空白行。
-
完全支援 ROI 連接埠上具有不同行長度的影像。
![]() |
ImageBufferMultiRoiDyn 不適用於 imaFlex CXP-12 Quad 和 imaFlex CXP-12 Penta Platforms |
|---|---|
|
imaFlex CXP-12 Quad 和 imaFlex CXP-12 Penta platforms 不支援 ImageBufferMultiRoiDyn,但您可以使用適用於 imaFlex CXP-12 Quad 和 imaFlex CXP-12 Penta platforms 的對等使用者函式庫元件來代替。請參閱 'Delivered User Libraries' 以取得如何使用使用者函式庫元件的操作說明。 |
通過使用 Frame Grabber RAM (DRAM) 之運算子的理論頻寬 [位元/秒],是根據下列公式計算:

然而,由於 DRAM 效率的關係,實際頻寬總是小於理論頻寬。
當 Bit Width 和 Parallelism 的乘積等於內部 RAM Port Width 時,即達到通過運算子的 maximum bandwidth。
![]() |
平台特定值 |
|---|---|
|
RAM Port Width 和 System Clock 是平台特定的。有關您個別平台的詳細資訊,請參閱 Device Resources。 |
| Property | Value |
|---|---|
| Operator Type | M |
| 輸入連結 | I,影像資料輸入 XTopLeft,座標資料輸入 YTopLeft,座標資料輸入 XBottomRight,座標資料輸入 YBottomRight,座標資料輸入 |
| Output Link | O,資料輸入 |
同步與非同步輸入
- 這 4 個 ROI 輸入彼此同步。
- ROI 輸入相對於輸入 I 是非同步的。
|
無號輸入的 Bit Width 範圍為 [1, 64]。 針對有號輸入,範圍為 [2, 64]。 針對無號彩色輸入,範圍為 [3, 63],而針對有號彩色輸入,範圍為 [6, 63]。 |
|
|
Bit Width 與 Parallelism 的乘積不得超過原生 RAM 資料寬度 (RamDataWidth)。 請檢查 Device Resources 以取得更多資訊。 |
|
|
Bit Width 為 ![]() |
|
|
Bit Width 為 ![]() |
|
|
最大影像尺寸不得超過可用 RAM 的大小: 2^RamAddressWidth >= (I.Max.Img.Width * I.Max.Img.Height) / I.Parallelism |
|
|
ROI 影像的像素總數上限(因此每張影像的 ROI 數量上限)不得超過 2^20-1: 2^20 > XTopLeft.Max.Img.Width * XTopLeft.Max.Img.Height |
| 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 | static parameter |
| Default | ENABLED |
| Range | {ENABLED, DISABLED} |
|
此參數啟用對無限來源運算子(如 Camera 運算子)的支援。 如需更多資訊,請參閱 'Infinite Sources / Connecting Cameras'。 |
|

![[備註]](../common/images/admon/note.png)








上一頁

