Operator ImageBufferSpatial

Operator Library: Memory

硬體平台的可用性
請注意,此 operator 僅適用於 microEnable 4 系列(包含 PixelPlant)的目標平台。

此運算子會對其色彩分量計算 Spatial Correction。 此外,還包含 ROI 功能。 總位元數 (Bit Width × Parallelism) 不得超過相應擷取卡的 Memory 限制。

此運算子會在 Frame Grabber RAM (DRAM) 中緩衝影像串流。 需要一個類型為 RAM 的 VisualApplets 資源 (請參閱 'Allocation of Device Resources')。

有關 operator 延遲的資訊,請參閱 表 46「Library Memory 中各 operator 的個別延遲」。

此運算子最主要的特色是能夠校正三線式線掃描彩色相機的空間位移。 針對紅色、綠色和藍色各個色彩分量,可以使用參數 DeltaRed、DeltaGreen 和 DeltaBlue 定義相對位移。 位移是指輸入影像與產生的輸出影像之間以行 (Line) 為單位計算的延遲。 位移為 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] 的 Spatial Correction 並裁切掉第一行。 由於運算子僅支援相對 Delta 位移,因此裁切第一行的動作不會由運算子執行。 不過,使用 CoordinateY 和 RemoveLink 等 VA 運算子,在運算子外部實現裁切相對來說非常簡單。

對於每個讀出的行,運算子都會提供一個與輸出鏈結 O 同步的行 ID 標記。 行 ID 是一個全域標記,可用於偵測何時因緩衝區溢位而遺失行。 發生溢位時,緩衝區將會捨棄輸入行,直到溢位狀況解除(也就是 RAM 有足夠的 儲存空間可容納至少 1 個 RoI 行)。 任意 2 個連續行之間的差值減去 1,即為因緩衝區溢位而遺失的行數。

運算子將持續進行 Spatial Correction,這是許多線掃描應用的典型需求。 不過,當 Acquisition Start 時,緩衝區需要至少一定數量行才能輸出已校正的行。 當未達到此閾值時,將不會輸出任何行。 緩衝區僅會輸出已校正的行。 第一個影像行進行校正所需的啟動行將不會被輸出。 閾值取決於指定的 Delta 位移,例如 DeltaRed = 0、DeltaGreen = 1、DeltaBlue = -3 需要 5 行才能執行校正。 因此閾值為 5。 在第 5 行之後,緩衝區開始輸出行。 換句話說,緩衝區一但能夠進行校正就會開始輸出行。

在影格校正應用 (VALT_IMAGE2D 輸入) 中,Spatial Correction 將對每個影格個別執行, 亦即針對每個影格,Spatial Correction 都會重新開始。

緩衝區產生的第一行永遠擁有行 ID 0。 在 2D 應用模式中,第 1 個影格行的行 ID 與前一個影格的最後一行之間會出現間隙。 間隙的大小等於為此第 1 個輸出行執行校正所需的行數。 無法校正的行會被緩衝區抑制。

使用參數 XOffset 和 XLength 可以定義 ROI 大小。 如果 XLength 無法被 Link Parallelism 整除,運算子將會插入虛擬像素來 Fill 最後一個平行字元, 例如 Link Parallelism 為 2、XOffset 為 0 且 XLength 為 7,運算子將輸出 4 個平行字元,每個字元包含 2 個像素。 最後一個字元將包含一個虛擬像素。 該虛擬像素的值未定義。 在 VA 模擬中,為了便於觀察,虛擬像素將設定為零。 XOffset 與 XLength 參數的總和不得超過最大 Link Image Width。 如果輸入影像寬度小於 X-Offset 與 X-Length 的總和,運算子仍會讀取參數化的 X-Length。 在此情況下,運算子將向超出範圍的像素輸出未定義的 Memory 內容。

為了測量緩衝區的 Fill 水平,Operator 提供了 2 個參數: FillLevel 與 Overflow。FillLevel 以 25% 為級距顯示 RAM 的百分比填充水準。 當 FillLevel 接近或達到 100% 且下一個要儲存至緩衝區的影像將超出 RAM 容量時,Overflow 參數會設為 1。 若發生溢位(Overflow),輸入資料將被捨棄,且輸入影像高度會縮減。 因此,不完整的影像會被儲存至 Memory 中。 使用者必須輪詢(poll)溢位參數。 由於溢位狀態持續的時間可能非常短,它很有可能會落在 Operator 的輪詢週期之間。

參數 InfiniteSource 用於指定 Operator 是直接連接至相機,還是與其他 Memory Operator 進行串接。 請參閱 'Infinite Sources / Connecting Cameras' 以取得更多資訊。

算子限制

  • Empty frames are not supported.

    不支援具有不同行長度的影像。

頻寬最佳化

通過使用 Frame Grabber RAM (DRAM) 之運算子的理論頻寬 [位元/秒],是根據下列公式計算:

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

當 Bit Width 和 Parallelism 的乘積等於內部 RAM Port Width 時,即達到通過運算子的 maximum bandwidth。

[備註] 平台特定值

RAM Port Width 和 System Clock 是平台特定的。有關您個別平台的詳細資訊,請參閱 Device Resources。

I/O Properties

Property Value
Operator Type M
Input Link I,影像資料輸入
輸出連結 O,資料輸入
LinkID,資料輸入

支援的 Link 格式

Link Parameter Input Link I Output Link O 輸出鏈結 LinkID
Bit Width [3, 63] 無符號,[6, 63] 有符號1 as I 自動
Arithmetic {unsigned, signed} as I unsigned
Parallelism any2 as I as I
Kernel Columns 1 as I as I
Kernel Rows 1 as I as I
Img Protocol {VALT_IMAGE2D, VALT_LINE1D} as I as I
Color Format VAF_COLOR as I VAF_GRAY
Color Flavor FL_RGB as I FL_NONE
Max. Img Width any as I as I
Max. Img Height any as I as I

1 2

Bit width 與 Parallelism 的乘積不得超過原生 RAM 資料寬度。 請查看 Device Resources 以取得更多資訊。

參數

XOffset
Type dynamic/static read/write parameter
Default 0
Range [0, Max.Img Width - XLength]

此參數定義 ROI 左上角的 x 座標。

XLength
Type dynamic/static read/write parameter
Default 1024
Range [1, Max.Img Width - XOffset]

此參數定義 ROI 的寬度。

DeltaRed
Type dynamic/static read/write parameter
Default 0
Range any

此參數定義紅色分量的位移。 Delta 可以是正整數或負整數值。

DeltaGreen
Type dynamic/static read/write parameter
Default 0
Range any

此參數定義綠色分量的位移。 Delta 可以是正整數或負整數值。

DeltaBlue
Type dynamic/static read/write parameter
Default 0
Range any

此參數定義藍色分量的位移。 Delta 可以是正整數或負整數值。

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

此參數以 25% 為遞增幅度提供 DRAM 的 Fill 級別。

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

This parameter indicates a buffer overflow.

InfiniteSource
Type static parameter
Default ENABLED
Range {ENABLED, DISABLED}

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