Operator ImageBuffer

Operator Library: Memory

此運算子會在 Frame Grabber RAM (DRAM) 中緩衝影像串流。 需要一個類型為 RAM 的 VisualApplets 資源。請查看 'Allocation of Device Resources' 以取得更多資訊。 此運算子另外具備區域 (ROI) 支援功能。 總位元數 (Bit Width 乘以 Parallelism) 不得超過各個擷取卡的記憶體限制。

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

此運算子的運作方式類似 FIFO。 任何輸入資料都會立即轉發至輸出。 然而,如果輸出遭到阻塞(例如後續運算子無法處理輸入頻寬),運算子將會儲存資料。 因此,只有在運算子無法輸出資料時,才會填滿 Memory。 此運算子通常用於補償尖峰輸入頻寬。

在內部,影像緩衝區是以影像行為單位進行運作。 此內部行緩衝區功能可帶來非常短的 Memory 延遲。 當然,如果緩衝區填入更多行,延遲就會增加。 例如,傳輸至 Memory 中的影像將立即轉發至輸出。 在應用中,當相機仍在傳輸剩餘的影像行時,部分相機影像即可轉發至 PC。

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

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

為了測量緩衝區的填滿程度,運算子提供了 2 個參數: FillLevel 與 Overflow。 FillLevel 以 25% 為單位顯示 RAM 的填滿程度。 當 FillLevel 接近或等於 100%,且下一個要儲存至緩衝區的影像將超出 RAM 容量時,Overflow 參數會設為 1。 發生溢位時,系統會捨棄輸入資料並減少輸入影像高度。 因此,不完整的影像會被儲存在 Memory 中。 使用者必須輪詢 overflow 參數。 由於 overflow 狀態的持續時間可能非常短短暫,因此有可能在運算子的輪詢週期內發生。

參數 InfiniteSource 用於指定運算子是直接連接至相機,還是與其他 memory 運算子串聯。 請查看 'Infinite Sources / Connecting Cameras' 以取得更多資訊。

算子限制

  • 不支援空白畫面。

[備註] 可用的 Memory 空間

此運算子需要額外的 Memory 空間來存放內部資料。因此,所使用的 RAM 資源無法全數用於緩衝影像資料。 實際可用於緩衝影像資料的空間取決於硬體平台(Platform RAM Size 與 Platform RAM Interface Width)以及連結組態。 如需有關 Platform RAM Size 和 Platform RAM Interface Width 的資訊,請參閱 Device Resources。)

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

  • Utilized RAM Size [in Bytes] = ((PRS * 2^20 / (PRIW / 8 bit)) / RLS) * MIW * BW / 8

  • Utilized RAM Size [in Lines] = ((PRS * 2^20 / (PRIW / 8 bit)) / RLS)

  • Utilized RAM Size [in Frames] = ((PRS * 2^20 / (PRIW / 8 bit)) / RLS) / MIH

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

  • PRS: Platform RAM Size [in MB, 1MB = 2^20 Byte]

  • PRIW: Platform RAM Interface Width [in bit]

  • MIW: MaxImageWidth [in pixel]

  • MIH: MaxIMageHeight [in lines]

  • P: Parallelism

  • BW: Bit Width [in bit]

  • RLS: Raw Line Size: 2 ^ ceil(log2n(MIW / P + 4))

頻寬最佳化

通過使用 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,影像資料輸入
Output Link O,資料輸入

支援的 Link 格式

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

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

參數

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

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

步進大小即為 Parallelism。

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

此參數定義 ROI 的寬度。

步進大小即為 Parallelism。

YOffset
Type dynamic/static read/write parameter
Default 0
Range [0, Max.Img Height - YLength]

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

YLength
Type dynamic/static read/write parameter
Default 1024
Range [1, Max.Img Height - YOffset]

此參數定義 ROI 的高度。

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

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

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

此參數表示緩衝區溢位。

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

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

使用範例

ImageBuffer 運算子的使用方式顯示於下列範例中: