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,「庫記憶體中各運算子的個別延遲」。
操作員會將影像串流緩衝至 幀擷取卡上的板載 RAM 中。需有一個類型為RAM的VisualApplets 資源 (請參閱「裝置資源的分配」)。
ImageBufferMultiRoI 針對由輸入連結中的「最大影像寬度」與「最大影像高度」參數所定義的固定 尺寸影像進行處理。這意味著 該運算子會對輸入影像的尺寸進行控制。
小於最大影像 尺寸的影像將不經修改直接存入緩衝區。然而,讀取感興趣區域(ROI)可能會 導致讀取未定義的像素值,亦即超出輸入影像 尺寸範圍的像素值。缺失幀的像素包含隨機資料,在後續 處理中應視為未定義。
若發生溢出,即緩衝區因已滿而無法 再儲存任何影像時,所有傳入的影像都將被捨棄,直到 緩衝區有足夠的可用空間來儲存至少一幀影像為止。 溢出可能發生 是因為相較於寫入速度,讀取 ROI 的速度過慢。這可能是 因為定義了過多的 ROI,或是因為連續的操作阻塞了輸出。在 設計平衡的正常情況下,絕不會發生溢出。
該運算器會在輸出端提供 ROI 影像, 只要對應的幀已完全緩衝完成。讀出類型 由參數Mode 定義。
參數MaxNumRoI 指定了 ROIs 的最大數量。實際使用的 ROIs 數量可能少於此數值,並 透過參數NumRoI 來定義。
參數NumRoI 指定運算子針對每張緩衝 影像,將在輸出端提供多少個 ROIs。當此參數設定為 動態類型時,該數值不得超過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。
在影像擷取過程中更新 ROIs 可能會導致 ROIs 暫時呈現非矩形狀,應予以避免。
若將此運算子與影像協定 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 的填滿百分比。 當FillLevel接近或達到 100%,且接下來要 儲存至緩衝區的影像將超過 RAM 容量時,Overflow參數會被設定為 1。
參數InfiniteSource 用於指定該運算子是直接連接至攝影機,還是與其他記憶體運算子 依序串接。如需更多 資訊,請參閱「無限來源/連接攝影機」。
Operator Restrictions
-
不支援空影格。
-
不支援具有不同行長度的影像。
![]() |
ImageBufferMultiRoI功能不適用於 imaFlex CXP-12 Quad 及imaFlex CXP-12 Penta 平台 |
|---|---|
|
imaFlex CXP-12 Quad 和imaFlex CXP-12 Penta 平台不支援ImageBufferMultiRoI,但您可改用等效的用戶函式庫元件來替代,適用於 imaFlex CXP-12 Quad 和imaFlex CXP-12 Penta 平台。有關如何 使用用戶函式庫元件的說明,請參閱「隨附的用戶函式庫」。 |
![]() |
範例:記憶體使用量的優化 |
|---|---|
|
一位客戶輸入了一張 尺寸為 20000 x 7096 像素的影像(輸入埠上的連結屬性)。並行度設定 為 8。像素位寬設定為 8。 本範例所使用的平台為 mE5, 也就是說,該平台提供 256 Mbyte 的 RAM 銀行。若要使用全部 256 MB,應 向操作器提供 128 位元資料。 但若並行度設定為 8,實際傳入的資料僅有 64 位元(8 × 8 位元), 也就是說,使用者僅能使用 128 MB 的 RAM。若要儲存一張 20000 × 7096 像素的圖像,需佔用 141,920,000 位元組(約 135 MB), 這已超過可用的 128 MB。此情況會由VisualApplets 偵測到,且 該連結將以紅色標示。 解決方案:在 運算子 ImageBufferMultiRoi 之前加入 Parup(取模至 16)。 |
透過採用 幀擷取卡 RAM(DRAM) 的營運商,其理論頻寬 [位元/秒] 計算方式如下:

然而,由於 DRAM 的效率限制,實際頻寬總是低於理論頻寬。
該 最大頻寬 若Bit Width 與Parallelism 的乘積等於內部 RAM 埠寬度,則透過該運算器的 最大頻寬即已達到。
![]() |
特定於平台的數值 |
|---|---|
|
RAM 位元寬度與系統時脈因平台而異。 請參閱 裝置資源 以獲取您所使用平台的詳細資訊。 |
|
對於無符號輸入,輸入位元寬度的範圍為 [1, 64]。至於 有符號輸入,其範圍為 [2, 64]。對於無符號色彩輸入,其範圍為 [3, 63];至於有符號色彩輸入,其範圍為 [6, 63]。 |
|
|
位元寬度與並行度的乘積不得超過 原生 RAM 資料寬度 (RamDataWidth)。 檢查 裝置資源 以獲取更多資訊。 |
|
|
I 的最大影像尺寸為:
|
| RamDataWidth | |
|---|---|
| Type | 靜態寫入參數 |
| Default | 不適用 |
| Range | 整數 |
|
此參數指定可在 RAM 介面上使用的資料位元數。這是 輸入與輸出所能使用的最大位元數。 |
|
| RamAddressWidth | |
|---|---|
| Type | 靜態寫入參數 |
| Default | 不適用 |
| Range | 整數 |
|
此參數提供可用的位址位元數。這有助於計算最大允許的影像尺寸。 |
|
| MaxNumRoI | |
|---|---|
| Type | 靜態參數 |
| Default | 1 |
| Range | [1, 65535] |
|
此參數定義操作員 所能儲存的區域 of interest(ROI)的最大數量。 |
|
| NumRoI | |
|---|---|
| Type | 動態/靜態讀寫參數 |
| Default | 1 |
| Range | [1, MaxNumRoI] |
|
此參數定義實際使用的 ROIs 數量。該運算子將 從每張輸入影像中讀取 NumRoI 個 ROIs,並將其提供至輸出端。若 此參數設定為 static,其取值範圍為 [1, 65536],且 MaxNumRoI 將被停用。 |
|
| Mode | |
|---|---|
| Type | 靜態參數 |
| Default | FreeRun |
| Range | {FreeRun、WaitAfterImage、WaitAfterRoI} |
|
此參數定義讀出演算法的運作模式。在 FreeRun 模式下,操作員會在對應的幀 完全緩衝完成後,立即提供 ROI 影像。在 WaitAfterImage 模式下,操作員將提供 單一幀內的所有 ROI,隨後停止並等待軟體存取以寫入 「解鎖」參數,以啟用讀取下一幀 ROI 的操作。在「WaitAfterRoI」 模式下,操作員將在每幀的每個 ROI 讀取完畢後暫停。若要重新啟動讀取 操作,軟體必須寫入「解鎖」參數。 |
|
| 解鎖 | |
|---|---|
| Type | dynamic write parameter |
| Default | 1 |
| Range | {1} |
|
此參數用於實作「WaitAfterImage」及 「WaitAfterRoI」模式的握手機制。將此參數寫入值 1 將導致操作器 繼續讀取下一幀的下一處 ROI/所有 ROI。 此參數僅可在「Mode」參數設定為「WaitAfterImage」 或「WaitAfterRoI」時使用。 |
|
| XOffset | |
|---|---|
| Type | 動態/靜態讀寫參數 |
| Default | 0 |
| Range | [0, 最大影像寬度 - XLength] |
|
此欄位參數定義了 ROI 左上角的 x 座標。 步長即為並行度。 了解如何在 'Parameter Editing' 中設定欄位參數。 |
|
| XLength | |
|---|---|
| Type | 動態/靜態讀寫參數 |
| Default | 1024 |
| Range | [2*並行度,最大影像寬度 - X 偏移量] |
|
此欄位參數用於定義 ROI 的寬度。 步長即為並行度。 了解如何在 'Parameter Editing' 中設定欄位參數。 |
|
| YOffset | |
|---|---|
| Type | 動態/靜態讀寫參數 |
| Default | 0 |
| Range | [0, Max.Img Height - YLength] |
|
此欄位參數定義了 ROI 左上角的 y 座標。 了解如何在 'Parameter Editing' 中設定欄位參數。 |
|
| YLength | |
|---|---|
| Type | 動態/靜態讀寫參數 |
| Default | 1024 |
| Range | [1, Max.Img Height - YOffset] |
|
此欄位參數用於定義 ROI 的高度。 了解如何在 'Parameter Editing' 中設定欄位參數。 |
|
| FillLevel | |
|---|---|
| Type | 動態讀取參數 |
| Default | 0 |
| Range | [0%, 100%] |
|
此參數用於設定 DRAM 的填充程度。 |
|
| Overflow | |
|---|---|
| Type | 動態讀取參數 |
| Default | 0 |
| Range | [0, 1] |
|
此參數表示發生緩衝區溢位。 |
|
| InfiniteSource | |
|---|---|
| Type | 靜態參數 |
| Default | ENABLED |
| Range | {ENABLED, DISABLED} |
|
此參數可啟用對無限光源運算子(例如相機 運算子)的支援。更多資訊請參閱「無限光源/連接相機」。 |
|
以下範例展示了 ImageBufferMultiRoI 運算子的使用方式:
-
「色彩平面分離選項 3 — 搭配 Operator ImageBufferMultiRoI 的順序處理」
色彩層的順序 DMA 輸出。 色彩分離是透過 ImageBufferMultiROI 運算子來執行的。
-
Color plane 的循序 (sequential) DMA 輸出。 色彩分離是透過 ImageBufferMultiROI operator 來執行。 額外的預先排序 (pre-sorting) 可最佳化頻寬和資源。

![[注意]](../common/images/admon/note.png)
![[提示]](../common/images/admon/tip.png)



上一頁

