ImageBuffer 運算子

Library: Memory 運算子

此運算子將影像串流緩衝至 幀擷取器 RAM(DRAM)中進行緩衝。 需具備一個類型為RAM的VisualApplets 資源。如需更多資訊,請參閱「裝置資源的分配」。 此外,此運算子還支援感興趣區域 (ROI)。 總位元數(位元寬度乘以並行度)不得超過該幀 擷取卡的記憶體限制。

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

此運算子的工作原理類似 FIFO。 任何輸入資料都會立即轉發至輸出端。 然而,若輸出端遭到阻塞(例如,因後續運算子無法處理該輸入頻寬),則 此運算子會將資料儲存起來。 因此,只有當運算子無法輸出資料時,記憶體才會被填滿。 通常,此運算子用於補償輸入頻寬的峰值。

在內部,影像緩衝區是以影像行為單位進行運作的。 這項內部行緩衝區功能使得記憶體延遲非常短。 當然,若緩衝區中填入的影像行越多,延遲便會增加。 例如,傳輸至記憶體中的影像將會立即轉發至輸出端。 在實際應用中,可將相機的部分影像轉發至電腦,同時相機仍持續傳輸剩餘的 影像行。

您可以透過XOffset、XLength、 YOffset和YLength等參數來定義 ROI 的大小。 若輸入影像的寬度小於XOffset與 XLength 的總和,該運算子仍會讀取參數化的XLength 值。 在此情況下,該運算子將針對額外的像素輸出未定義的記憶體內容。 若輸入影像的高度小於要求的輸出影像高度,該運算子將僅輸出可用的行。

在 Line1D 應用程式模式下,YOffset 和 YLength 的設定不會影響緩衝區。

為了測量緩衝區的填滿程度,操作員需提供 2 個參數: FillLevel和Overflow。 FillLevel 以 25% 為單位顯示 RAM 的填滿程度。 當 FillLevel 接近或等於 100%,且接下來要儲存至緩衝區的影像 將超過 RAM 容量時,Overflow 參數會被設定為 1。 若發生溢出,輸入資料將被捨棄,且輸入影像的高度會被縮減。 因此,記憶體中儲存的將是不完整的影像。 使用者必須對溢出參數進行輪詢。 由於溢出狀態的持續時間可能非常短暫,因此有可能發生在操作員的 輪詢週期內。

參數InfiniteSource用於指定該運算子是直接連接至攝影機,還是與其他記憶體運算子串接。 請參閱「無限來源/連接攝影機」以獲取更多資訊。

Operator Restrictions

  • 不支援空影格。

[注意] 可用記憶體空間

該裝置需要額外的記憶體空間來儲存內部資料。因此,無法將所使用的 RAM 資源的全部容量 用於緩衝影像資料。 實際可用於緩衝影像資料的空間,取決於硬體平台(平台 RAM 容量及 平台 RAM 介面寬度)以及鏈路配置。 有關平台 RAM 容量及 平台 RAM 介面寬度的資訊,請參閱 裝置資源。)

您可以使用以下公式計算 RAM 資源的可用容量:

  • 已使用 RAM 大小 [以位元組為單位] = ((PRS * 2^20 / (PRIW / 8 位元)) / RLS) * MIW * BW / 8

  • 已使用 RAM 大小 [以行為單位] = ((PRS * 2^20 / (PRIW / 8 位元)) / RLS)

  • 已使用 RAM 大小 [以幀為單位] = ((PRS * 2^20 / (PRIW / 8 位元)) / RLS) / MIH

公式及計量單位中所使用的縮寫:

  • PRS:平台 RAM 容量 [單位:MB,1MB = 2^20 位元組]

  • PRIW: 平台 RAM 介面寬度 [位元]

  • MIW:MaxImageWidth [以像素為單位]

  • MIH:MaxIMageHeight [以行計]

  • P:Parallelism

  • BW: 位寬 [單位:位]

  • RLS: 原始行大小:2 ^ ceil(log2n(MIW / P + 4))

頻寬最佳化

透過採用 幀擷取卡 RAM(DRAM) 的營運商,其理論頻寬 [位元/秒] 計算方式如下:

然而,由於 DRAM 的效率限制,實際頻寬總是低於理論頻寬。

該 最大頻寬 若Bit Width 與Parallelism 的乘積等於內部 RAM 埠寬度,則透過該運算器的 最大頻寬即已達到。

[注意] 特定於平台的數值

RAM 位元寬度與系統時脈因平台而異。 請參閱 裝置資源 以獲取您所使用平台的詳細資訊。

I/O Properties

Property Value
Operator Type M
Input Link I,影像資料輸入
Output Link O,資料輸入

Supported Link Format

Link Parameter Input Link I Output Link O
Bit Width [1, 64]12 as I
Arithmetic {unsigned, signed} as I
Parallelism any3 as I
Kernel Columns 1 as I
Kernel Rows 1 as I
Img Protocol {VALT_IMAGE2D, VALT_LINE1D} as I
Color Format any as I
Color Flavor any as I
Max. Img Width 65535 as I
Max. Img Height 65535 as I

1

無號輸入的 Bit Width 範圍為 [1, 64]。 有號輸入的範圍為 [2, 64]。 無號彩色輸入的範圍為 [3, 63],有號彩色輸入的範圍為 [6, 63]。

2 3

位元寬度與並行度的乘積不得超過原生 RAM 資料寬度。 檢查 裝置資源 以獲取更多資訊。

Parameters

XOffset
Type 動態/靜態讀寫參數
Default 0
Range [0, 最大影像寬度 - XLength]

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

步長即為並行度。

XLength
Type 動態/靜態讀寫參數
Default 1024
Range [2*並行度,最大影像寬度 - X 偏移量]

此參數定義 ROI 的寬度。

步長即為並行度。

YOffset
Type 動態/靜態讀寫參數
Default 0
Range [0, Max.Img Height - YLength]

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

YLength
Type 動態/靜態讀寫參數
Default 1024
Range [1, Max.Img Height - YOffset]

此參數定義 ROI 的高度。

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

此參數以 25% 為單位,指定 DRAM 的填滿程度。

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

此參數表示發生緩衝區溢位。

InfiniteSource
Type 靜態參數
Default ENABLED
Range {ENABLED, DISABLED}

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

Examples of Use

以下範例展示了 ImageBuffer 運算子的使用方式: