Operator Library: Memory
此運算子為每個緩衝影像提供多個感興趣區域 (ROI) 的支援。所有 ROI 會依序讀出。 每個 ROI 都是一個全新且獨立的輸出影像:ROI 0、ROI 1、ROI 2 等等,直到 ROI N-1。N 是由參數 NumRoI 指定的 ROI 數量。 只要不超過畫格尺寸,所有可能的矩形區域皆受支援,亦即可以將單一像素、單一行、單一列、矩形區域或 完整畫格定義為 ROI。不同的 ROI 可以有不同的尺寸。 每個 ROI 都可以個別定義。ROI 相互之間可以重疊。不過,所有 ROI 必須符合由輸入和輸出連結所定義的最大影像大小限制,亦即 ROI 寬度不得超過最大影像寬度,且 ROI 高度不得超過 最大影像高度。
有關運算子延遲的資訊,請參見 表 46「Library Memory 中運算子的各別延遲」。
此運算子會在擷取卡的機載 RAM 中緩衝影像串流。需要一個類型為 RAM 的 VisualApplets 資源 (請參閱 「配置裝置資源」)。
ImageBufferMultiRoI 適用於由輸入連結最大影像寬度和高度參數所定義之固定 尺寸的影像。這表示由運算子執行輸入畫格尺寸控制。
小於最大影像 尺寸的影像將在不進行修改的情況下進行緩衝。然而,讀取 ROI 可能 會導致讀取未定義的像素值,即輸入影像 尺寸之外的像素值。遺失的畫格像素包含隨機資料,在後續 處理中應視為未定義。
如果發生滿溢(即緩衝區因滿載而無法 儲存更多影像),所有傳入的影像都將被捨棄,直到 緩衝區中有足夠的可用空間來儲存至少一個畫格。之所以會發生滿溢, 是因為相較於寫入速度,讀取 ROI 的速度太慢。這可能是 因為定義了太多 ROI,或者因為後續運算子封鎖了輸出。在 平衡設計的正常情況下,絕對不會發生滿溢。
一旦對應的畫格完全緩衝完畢,此運算子就會在其輸出端 提供 ROI 影像。讀取類型由 參數 Mode 定義。
參數 MaxNumRoI 指定 ROI 的最大數量。實際使用的 ROI 數量可以較少,並使用參數 NumRoI 來定義。
參數 NumRoI 指定運算子將針對每個緩衝影像在輸出端提供的 ROI 數量。當設為動態類型時,此數量不得超過 MaxNumRoI。
參數 Mode 指定用於處理影像的運算子行為。FreeRun 定義 緩衝區盡快在其輸出端提供 ROI,亦即一 對應的畫格完全緩衝完畢後即提供。此模式也稱為自由執行模式。 運算子僅由管線流程控制機制控制。 WaitAfterImage 模式會強制運算子在畫格的所有 ROI 在其輸出端提供後暫停。若要重新啟動下一個畫格 ROI 的讀取,必須寫入 參數 Unlock。WaitAfterRoI 與 WaitAfterImage 類似,不同之處在於運算子會在每個畫格的 每個 ROI 之後停止。若要重新啟動後續處理,需要對參數 Unlock 執行寫入循環。
參數 Unlock 用於 WaitAfterImage 和 WaitAfterRoI 模式,以解除鎖定 運算子並啟動後續讀出作業。在 FreeRun 模式下, 此參數沒有作用。
XOffset、XLength、YOffset 和 YLength 指定 一組 ROI。這些參數是欄位參數。這些參數的 參數類型可以設為動態或靜態,這表示在執行階段期間可調整或不可調整。 當設定其中一個 ROI 參數的參數類型時,所有 ROI 參數的參數類型都會自動 相應調整。欄位的大小由參數 MaxNumRoI 定義。 運算子將以循序順序讀取 NumRoI 個 ROI。請參閱 「參數編輯」 了解如何設定 欄位參數。
所有 ROI 都可以動態更新。然而, 只有在未啟動影像擷取的情況下,才能針對 FreeRun、WaitAfterImage 和 WaitAfterRoI 模式執行更新。此外,在 WaitAfterImage 和 WaitAfterRoI 模式下,如果已傳輸對應的畫格 / 畫格的所有 ROI,且運算子正在等待對 Unlock 參數進行寫入循環,則可以更新 ROI。
在影像擷取期間更新 ROI 可能 導致暫時出現非矩形的 ROI,因此應予避免。
如果運算子搭配影像協定 VALT_LINE1D 使用,Y 坐標參數將會停用。在 1D 運作中,運算子 會將一個 ROI 讀取為一行。運算子的輸出接著將會是無限的 1D 影像串流,其中每一行由一個 ROI 表示,例如行 0 = ROI 0、行 1 = ROI 1、行 N = ROI N、行 N+1 = ROI 0、...
為了測量緩衝區的填滿程度, 運算子提供了 2 個暫存器:FillLevel 和 Overflow。FillLevel 顯示 RAM 的百分比填滿程度。Overflow 參數在 FillLevel 接近或達到 100% 且要儲存在緩衝區中的下一個影像將超出 RAM 容量時設為 1。
參數 InfiniteSource 用於指定運算子是直接連接到相機,還是與其他記憶體運算子串接。 請查看 「無限來源 / 連接相機」 以取得更多 資訊。
算子限制
-
不支援空白畫面。
-
不支援具有不同行長度的影像。
![]() |
ImageBufferMultiRoI 不適用於 imaFlex CXP-12 Quad 和 imaFlex CXP-12 Penta 平台 |
|---|---|
|
ImageBufferMultiRoI 不支援 imaFlex CXP-12 Quad 和 imaFlex CXP-12 Penta 平台,但您可以改為對 imaFlex CXP-12 Quad 和 imaFlex CXP-12 Penta 平台使用對應的使用者函式庫元素。請參閱 「已交付的使用者函式庫」 以取得如何 處理使用者函式庫元素的說明。 |
![]() |
範例:記憶體用量最佳化 |
|---|---|
|
客戶輸入尺寸為 20000 x 7096 像素的影像(輸入連接埠上的連結屬性)。Parallelism 設為 8。像素 bit width 設為 8。 此範例中使用的平台為 mE5, 亦即平台提供 256 Mbyte RAM 記憶庫。若要使用所有 256 MB, 應向運算子輸入 128 位元。但在 Parallelism 為 8 的情況下,僅輸入 64 位元(8 x 8 位元),亦即使用者只能使用 128 MB 的 RAM。若要儲存尺寸為 20000 x 7096 像素的影像,需要 141,920,000 位元組 (~ 135 MB), 這大於可用的 128 MB。VisualApplets 會偵測到這一點,且 連結會以紅色反白顯示。 解決方案:在運算子 ImageBufferMultiRoi 前方進行 Parup(至 16)。 |
通過使用 Frame Grabber RAM (DRAM) 之運算子的理論頻寬 [位元/秒],是根據下列公式計算:

然而,由於 DRAM 效率的關係,實際頻寬總是小於理論頻寬。
當 Bit Width 和 Parallelism 的乘積等於內部 RAM Port Width 時,即達到通過運算子的 maximum bandwidth。
![]() |
平台特定值 |
|---|---|
|
RAM Port Width 和 System Clock 是平台特定的。有關您個別平台的詳細資訊,請參閱 Device Resources。 |
|
針對無號輸入,輸入 Bit Width 的範圍為 [1, 64]。針對有號輸入,範圍為 [2, 64]。針對無號彩色輸入,範圍為 [3, 63],而針對有號彩色輸入,範圍則為 [6, 63]。 |
|
|
bit width 與 Parallelism 的乘積不得超過 原生 ram 資料寬度 (RamDataWidth)。 請查看 Device Resources 以取得更多資訊。 |
|
|
I 的最大影像尺寸:
|
| RamDataWidth | |
|---|---|
| Type | 靜態寫入參數 |
| Default | 不適用 |
| Range | 整數 |
|
此參數提供可用於 RAM 介面的資料位元數。這是輸入和輸出的最大位元數。 |
|
| RamAddressWidth | |
|---|---|
| Type | 靜態寫入參數 |
| Default | 不適用 |
| Range | 整數 |
|
此參數提供可用的位址位元數,有助於計算允許的最大影像尺寸。 |
|
| MaxNumRoI | |
|---|---|
| Type | static parameter |
| Default | 1 |
| Range | [1, 65535] |
|
此參數定義運算子能夠儲存的最大 ROI 數量。 |
|
| NumRoI | |
|---|---|
| Type | dynamic/static read/write parameter |
| Default | 1 |
| Range | [1, MaxNumRoI] |
|
此參數定義實際使用的 ROI 數量。運算子將從每個輸入影像中讀取 NumRoI 個 ROI 並在輸出端提供。如果參數設為 static,則範圍為 [1, 65536],且 MaxNumRoI 會被停用。 |
|
| 模式 | |
|---|---|
| Type | static parameter |
| Default | FreeRun |
| Range | {FreeRun, WaitAfterImage, WaitAfterRoI} |
|
此參數定義讀出演算法的操作模式。在 FreeRun 模式下,一旦對應的畫面完全緩衝,運算子就會提供 ROI 影像。在 WaitAfterImage 模式下,運算子將在單一畫面內提供所有 ROI,然後停止並等待軟體存取以寫入 Unlock 參數,從而啟用下一個畫面 ROI 的讀出。在 WaitAfterRoI 模式下,運算子將在每個畫面的每個 ROI 之後停止。若要重新啟動讀出操作,軟體必須寫入 Unlock 參數。 |
|
| Unlock | |
|---|---|
| Type | 動態寫入參數 |
| Default | 1 |
| Range | {1} |
|
此參數實作 WaitAfterImage 和 WaitAfterRoI 模式的交握。將此參數值寫入 1 將使運算子繼續讀出下一個 ROI / 下一個畫面的所有 ROI。 此參數只能在 Mode 參數設為 WaitAfterImage 或 WaitAfterRoI 時使用。 |
|
| XOffset | |
|---|---|
| Type | dynamic/static read/write parameter |
| Default | 0 |
| Range | [0, Max.Img Width - XLength] |
|
此欄位參數定義 ROI 左上角的 X 座標。 步進大小即為 Parallelism。 請參閱 「Parameter Editing」 了解如何設定欄位參數。 |
|
| XLength | |
|---|---|
| Type | dynamic/static read/write parameter |
| Default | 1024 |
| Range | [2*parallelism, Max.Img Width - XOffset] |
|
此欄位參數定義 ROI 的寬度。 步進大小即為 Parallelism。 請參閱 「Parameter Editing」 了解如何設定欄位參數。 |
|
| YOffset | |
|---|---|
| Type | dynamic/static read/write parameter |
| Default | 0 |
| Range | [0, Max.Img Height - YLength] |
|
此欄位參數定義 ROI 左上角的 Y 座標。 請參閱 「Parameter Editing」 了解如何設定欄位參數。 |
|
| YLength | |
|---|---|
| Type | dynamic/static read/write parameter |
| Default | 1024 |
| Range | [1, Max.Img Height - YOffset] |
|
此欄位參數定義 ROI 的高度。 請參閱 「Parameter Editing」 了解如何設定欄位參數。 |
|
| FillLevel | |
|---|---|
| Type | 動態讀取參數 |
| Default | 0 |
| Range | [0%, 100%] |
|
此參數提供 DRAM 的 Fill 程度。 |
|
| Overflow | |
|---|---|
| Type | 動態讀取參數 |
| Default | 0 |
| Range | [0, 1] |
|
此參數表示緩衝區溢位。 |
|
| InfiniteSource | |
|---|---|
| Type | static parameter |
| Default | ENABLED |
| Range | {ENABLED, DISABLED} |
|
此參數會啟用對無限來源 operator(例如 Camera operator)的支援。如需詳細資訊,請參閱 'Infinite Sources / Connecting Cameras'。 |
|
ImageBufferMultiRoI 運算子的使用方式如以下範例所示:
-
'Color Plane Separation Option 3 - Sequential with Operator ImageBufferMultiRoI'
色平面的循序 DMA 輸出。 色彩分離使用 ImageBufferMultiROI 運算子執行。
-
彩色平面的循序 DMA 輸出。 色彩分離是使用 ImageBufferMultiROI 運算子執行。 額外的預排序可最佳化頻寬與資源。

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



上一頁

