Operator ImageBuffer

Operator Library: Memory

该算子将图像流缓冲在 Frame Grabber RAM (DRAM) 中。 需要一个类型为 RAM 的 VisualApplets 资源。请查看 'Allocation of Device Resources' 了解更多信息。 该算子还支持兴趣区 (ROI)。 总比特数(Bit Width 乘以 Parallelism)不得超过相应图像采集卡的内存限制。

有关 operator 延迟的信息,请参见 Table 46, 'Individual Latencies of the Operators in Library Memory'。

该算子的工作方式类似于 FIFO。 任何输入数据都会立即转发到输出端。 但是,如果输出被阻塞(例如,因为后续算子无法处理输入带宽),算子将存储数据。 因此,只有在算子无法输出数据时才会填充 memory。 该算子通常用于补偿峰值输入带宽。

在内部,图像缓冲区按图像行进行操作。 这种内部行缓冲区特性可实现非常短的 Memory 延迟。 当然,如果缓冲区填充了更多的行,延迟就会增加。 例如,传输到 Memory 中的图像将立即转发到输出端。 在应用中,部分相机图像可以在相机仍在传输剩余图像行时转发到 PC。

您可以使用参数 XOffset、XLength、 YOffset 和 YLength 来定义 ROI 大小。 如果输入图像宽度小于 XOffset 和 XLength 的总和,算子仍会读取参数化的 XLength。 在这种情况下,算子将为额外的像素输出未定义的 memory 内容。 如果输入图像高度小于请求的输出图像高度,算子将仅输出可用行。

在 Line1D 应用模式下,YOffset 和 YLength 设置不影响缓冲区。

为了测量缓冲区的 Fill Level,该算子提供了 2 个参数: FillLevel 和 Overflow。 FillLevel 以 25% 的步长显示 RAM 的 Fill Level。 当 FillLevel 接近或等于 100% 且下一个要存储在缓冲区中的图像将超出 RAM 容量时,Overflow 参数设置为 1。 如果发生溢出,输入数据将被丢弃,输入图像高度会减小。 因此,不完整的图像会被存储在 memory 中。 用户必须轮询 overflow 参数。 由于溢出状态持续时间可能非常短,它可能会在算子的轮询周期内发生。

参数 InfiniteSource 用于指定算子是直接连接到相机还是与其他 memory 算子串联。 请查看 'Infinite Sources / Connecting Cameras' 了解更多信息。

算子限制

  • 不支持空帧。

[注意] 可用内存空间

该算子需要额外的 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: BitWidth [in bit]

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

带宽优化

流经使用 采集卡 RAM (DRAM) 的算子的理论带宽 [bits/second] 根据以下公式计算:

然而,由于 DRAM 效率的限制,实际带宽总是小于理论带宽。

当 Bit Width 和 Parallelism 的乘积等于内部 RAM Port Width 时,通过算子的 maximum bandwidth 将达到最大值。

[注意] 平台特定值

RAM Port Width 和 System Clock 是平台相关的。 请参阅 Device Resources 以获取有关您各个平台的详细信息。

I/O Property

Property 值
Operator Type M
Input Link I, image data input
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

Bit Width 与 Parallelism 的乘积不得超过本机 RAM 数据宽度。 请查看 Device Resources 了解更多信息。

参数

XOffset
键入 动态/静态读/写参数
默认 0
范围 [0, Max.Img Width - XLength]

该参数定义 ROI 左上角的 x 坐标。

步长为 Parallelism。

XLength
键入 动态/静态读/写参数
默认 1024
范围 [2*parallelism, Max.Img Width - XOffset]

该参数定义了 ROI 的宽度。

步长为 Parallelism。

YOffset
键入 动态/静态读/写参数
默认 0
范围 [0, Max.Img Height - YLength]

该参数定义 ROI 左上角的 y 坐标。

YLength
键入 动态/静态读/写参数
默认 1024
范围 [1, Max.Img Height - YOffset]

该参数定义了 ROI 的高度。

FillLevel
键入 动态只读参数
默认 0
范围 [0%, 100%]

该参数以 25% 的步长提供 DRAM 的 Fill 级别。

Overflow
键入 动态只读参数
默认 0
范围 [0, 1]

此参数表示发生缓冲区溢出。

InfiniteSource
键入 static 参数
默认 ENABLED
范围 {ENABLED, DISABLED}

此参数激活对无限源 operators(如相机 operators)的支持。 请参阅 'Infinite Sources / Connecting Cameras' 了解更多信息。

使用示例

以下示例展示了 ImageBuffer 算子的使用方法: