Library: Memory 運算子
| 硬體平台的可用性 |
|---|
| 請注意,此運算子僅適用於 microEnable 4 系列(含 Pixelplant)的目標平台。 |
此運算子會對其色彩成分進行空間校正。 此外,還包含一項「感興趣區域」(ROI)功能。 總位元數(位元寬度 × 並行度)不得超過對應幀擷取卡的記憶體限制。
此運算子將影像串流緩存至 幀擷取卡 RAM(DRAM)中進行緩衝。 需有一項類型為RAM的VisualApplets 資源(請參閱「裝置資源的分配」)。
有關運算子延遲的資訊,請參閱 表 46「Library Memory 中各運算子的個別延遲」。
此運算子的主要功能是校正三線性線掃描彩色攝影機的空間位移。 針對紅、綠、藍各色通道,可透過參數 DeltaRed、DeltaGreen 及 DeltaBlue 來定義相對位移。 所謂位移,是指輸入影像與最終輸出影像之間的行數延遲。 位移值為 0 時,輸入影像將保持不變。 例如,若 DeltaRed = 0、DeltaGreen = 1 及 DeltaBlue = 2,則輸出影像的第一行由以下 色成分組成: 紅色成分讀取自輸入影像的第一行,綠色成分讀取自第二行,而藍色 成分則讀取自第三行。 若要將讀取方向從正向切換為反向,只需更改參數:DeltaRed = 2、DeltaGreen = 1 以及 DeltaBlue = 0。 Delta 偏移量可以是負數、0 或正數。
緩衝區會在內部將 delta 值轉換為相對 delta 值。 此轉換實現了以下公式:

其中 delta 代表 DeltaRed、DeltaGreen 或 DeltaBlue。 此轉換是在內部執行的。 運算子的 delta 參數保持不變,並顯示指定的數值。 轉換為相對 delta 會導致其中一個 delta 偏移量變為 0,其餘兩個則變為 0 或負數, 例如,配置 [DeltaRed = 1, DeltaGreen = 2, DeltaBlue = 1] 等同於 [DeltaRed = -1, DeltaGreen = 0, DeltaBlue = -1]。 配置 [DeltaRed = -3, DeltaGreen = -3, DeltaBlue = -3] 和 [DeltaRed = 1, DeltaGreen = 1, DeltaBlue = 1] 均等同於 [DeltaRed = 0, DeltaGreen = 0, DeltaBlue = 0]。 類似 [DeltaRed = 1, DeltaGreen = 1, DeltaBlue = 1] 的設定,表示要採用 [DeltaRed = 0, DeltaGreen = 0, DeltaBlue = 0] 進行空間校正,並裁切第一行。 由於該運算子僅支援相對的 delta 偏移,因此裁切第一行的操作不會由該運算子執行。 不過,透過使用如 CoordinateY 和 RemoveLine 等 VA 運算子,在運算子外部實現裁切相對容易。
對於每條讀出行,操作員會提供一個與輸出鏈路 O 同步的行識別碼標記。 該行識別碼為全域標記,可用於偵測因緩衝區溢出而導致的行遺失情況。 當發生溢出時,緩衝區將捨棄輸入行,直至溢出狀態解除為止,即 RAM 擁有足夠 的儲存空間,至少可容納 1 條 RoI 行。 兩條連續行之間的差值減去 1,即為因緩衝區溢出而遺失的行數。
該運算器將持續校正空間位移——這是許多線掃描應用中的典型需求。 然而,當擷取開始時,緩衝區至少需要達到一定數量的行,才能輸出經校正的行。 若未達到此閾值,則不會輸出任何行。 緩衝區僅輸出經過校正的行。 為使第一行影像得以校正而所需的啟動行,將不會被輸出。 閾值取決於指定的偏移量(delta shifts),例如:DeltaRed = 0、DeltaGreen = 1、DeltaBlue = -3 需 5 行才能進行校正。 因此,閾值為 5。 在第 5 行之後,緩衝區才會開始輸出行。 換言之,緩衝區一能校正行,便會立即開始輸出。
在幀校正應用中(VALT_IMAGE2D 輸入),空間校正將針對每幀分別進行, 也就是說,每幀的空間校正都會從頭開始。
緩衝器輸出的第一行始終具有行 ID 0。 在 2D 應用模式下,第一幀的第一行的行 ID 與前一幀的最後一行之間會出現間隙。 該間隙大小等於對這第一條輸出行進行校正所需的行數。 無法校正的行將被緩衝器抑制。
可透過參數XOffset和XLength來定義 ROI 大小。 若 XLength 無法被鏈路並行度整除,運算子將插入虛擬像素以填滿最後一個並行 字元組, 例如:當鏈路並行度為 2、XOffset 為 0 且 XLength 為 7 時,運算子將輸出 4 個並行字元組,每個字元組由 2 個像素。 最後一個字元將包含一個虛擬像素。 該虛擬像素的值未定義。 在 VA 模擬中,為提高可視性,虛擬像素將設定為零。 XOffset 與 XLength 參數的總和不得超過連結影像的最大寬度。 若輸入影像的寬度小於 XOffset 與 XLength 的總和,該運算子仍會讀取參數化的 XLength 值。 在此情況下,該運算子將對超出範圍的像素輸出未定義的記憶體內容。
為了測量緩衝區的填滿程度,操作員需設定 2 個參數: FillLevel和Overflow。FillLevel 以 25% 為單位,顯示 RAM 的填滿百分比。 當 FillLevel 接近或達到 100%,且接下來要儲存至緩衝區的影像 將超過 RAM 容量時,Overflow 參數會被設定為 1。 若發生溢出,輸入資料將被捨棄,且輸入影像的高度會被縮減。 因此,記憶體中儲存的將是不完整的影像。 使用者必須輪詢溢出參數。 由於溢出狀態的持續時間可能非常短,因此有可能發生在操作員 輪詢週期之間。
參數 InfiniteSource 用於指定運算子是否直接連接至相機,或是與其他記憶體運算子串連。 請檢查 「無窮來源 / 連接相機」 以取得詳細資訊。
Operator Restrictions
-
不支援空影格。
不支援具有不同行長度的影像。
流經使用 Frame Grabber RAM (DRAM) 之 operator 的理論頻寬 [bits/second] 是根據下列公式計算:

然而,由於 DRAM 效率的關係,實際頻寬總是小於理論頻寬。
當 Bit Width 與 Parallelism 的乘積等於內部 RAM Port Width 時, 即可達到流經該 operator 的 最大頻寬。
![]() |
平台特定值 |
|---|---|
|
RAM Port Width 與 System Clock 因平台而異。如需關於您個人平台的詳細資訊,請參閱 Device Resources。 |
|
bit width 與 Parallelism 的乘積不得超過原生 RAM 資料寬度。 請檢查 Device Resources 以取得更多資訊。 |
| XOffset | |
|---|---|
| Type | 動態/靜態讀寫參數 |
| Default | 0 |
| Range | [0, 最大影像寬度 - XLength] |
|
此參數定義 ROI 左上角的 X 座標。 |
|
| XLength | |
|---|---|
| Type | 動態/靜態讀寫參數 |
| Default | 1024 |
| Range | [1, 最大影像寬度 - X 偏移量] |
|
此參數定義 ROI 的寬度。 |
|
| DeltaRed | |
|---|---|
| Type | 動態/靜態讀寫參數 |
| Default | 0 |
| Range | any |
|
此參數用以定義紅色成分的偏移量。 該偏移量可以是正整數或負整數。 |
|
| DeltaGreen | |
|---|---|
| Type | 動態/靜態讀寫參數 |
| Default | 0 |
| Range | any |
|
此參數用以定義綠色成分的偏移量。 該偏移量可以是正整數或負整數。 |
|
| DeltaBlue | |
|---|---|
| Type | 動態/靜態讀寫參數 |
| Default | 0 |
| Range | any |
|
此參數用於定義藍色成分的偏移量。 該偏移量可以是正整數或負整數。 |
|
| 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' 以取得更多資訊。 |
|

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


上一頁

