Operator FIRkernelNxM

Operator Library: Filter

算子 FIRkernelNxM 在每个像素周围创建一个矩形核窗口,其中包括相邻像素。核的大小可以通过编辑输出链路来定义。N 表示核的行数,M 表示核的列数。

[注意] 无 FIR 滤波器

顾名思义,该算子与 FIR 滤波器无关。它可用于生成滤波器输入数据。

用于生成核的其他算子包括 LineNeighboursNx1 和 PixelNeighbours1xM。

核的中心元素始终表示相应位置的原始输入像素。具有像素索引 x 和 y 以及核索引 m 和 n 的输出图像 O 是通过输入按以下方式推导出来的:

并分别带有 和

在图像边缘,未定义相邻像素。该算子允许使用参数 EdgeHandling 定义所需的边缘处理算法。

对于偶数大小的核,没有中心像素。在这种情况下,中心像素会位移到左上角,例如,对于大小为 4x4 的核,中心像素定义在 (1,1) 处,如下表所示。

0,0 0,1 0,2 0,3
1,0 1,1 1,2 1,3
2,0 2,1 2,2 2,3
3,0 3,1 3,2 3,3

核由行数和列数来描述。在 VisualApplets 中,N 表示行数,M 表示列数。通常,核元素是通过其索引而不是坐标来寻址的。在这种情况下,顺序是按行进行的,如下表所示。

0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15

以下示例展示了三行三列核的合成结果。所描绘算子中的 3x3 矩阵提供了定义各个核内容的相对寻址。输出上的每个 3x3 簇都显示了每个像素的不同核值。

此示例没有按像素显示核配置,而是显示了生成的子核:索引 0 处的第一个核和索引 8 处的最后一个核。

以下示例展示了两行两列核的合成结果。由于相对地址仅引用右侧或下方的邻居,因此无需对左侧或顶部的内容执行边缘处理。

将最后两个奇数和偶数核大小的示例进行比较,可以看出 edgeMirroring 模式下 edgeHandling 功能的一个明显行为。虽然 edgeMirroring 对于偶数和奇数核大小在顶部和左侧边沿的处理方式相同,但在底部和右侧会产生略有不同的结果。由于输出图像较大,此处仅展示第一行、右上角以及最后一行、右下角输入像素及其每个核的结果值的配置结果:

奇数核大小的 EdgeMirroring 使用来自等距区域且带有数据的区域填充缺失数据的区域。边沿得以保留,不会被复制。该原则同样适用于为偶数核大小填充顶部或左侧的区域。与此相反,填充底部或右侧的区域在镜像期间会复制边沿。同样,这仅发生于偶数核大小。

[提示] 偶数核大小的 EdgeMirroring

对于偶数核大小,填充底部或右侧的区域在镜像期间会复制边沿。

从技术上讲,该算子会等待并缓冲核所需的像素,直到它们能够并行输出。因此,该算子会导致延迟,因为像素只能在输入端处理完所有必需的相应相邻像素之后才能输出。行延迟为:

算子限制

  • ImageWidth < 2*Parallelism is not allowed.

  • 不允许使用空图像,即没有像素的图像。

  • 不允许使用空行或长度可变的行。

I/O Property

Property 值
Operator Type M
Input Link I,数据输入
Output Link O,卷积核输出

Supported Link Format

Link Parameter Input Link I Output Link O
Bit Width any1 as I
Arithmetic {unsigned, signed} as I
Parallelism {1, 2, 4, 8, 16, 32, 64} as I
Kernel Columns 1 any2
Kernel Rows 1 any3
Img Protocol {VALT_IMAGE2D, VALT_LINE1D}4 as I
Color Format any as I
Color Flavor any as I
Max. Img Width any as I
Max. Img Height any as I

1

输入 bit width 的范围是:

  • 对于无符号输入:[1, 64]

  • 对于有符号输入:[2, 64]

  • 对于无符号彩色输入:[3, 63]

  • 对于有符号彩色输入:[6, 63]。

4

如果使用 VALT_LINE1D 图像协议,则该算子属于 P 类型,而不是 M 类型。

2

OutputKernelColumns <= ImageWidth

3

OutputKernelRows <= ImageHeight

参数

EdgeHandling
键入 static 参数
默认 EdgeMirrored
范围 {EdgeMirrored, EdgeConstant}

在图像边缘,不存在用于生成核的邻居。在这种情况下,该算子可以在两种边缘处理模式下使用:

在 EdgeMirrored 模式下,图像边缘使用镜像像素。

在 EdgeConstant 模式下,边缘处缺失的卷积核元素由一个常量值进行 Fill。该值可以通过参数 Constant 进行定义。

Constant
键入 static 参数
默认 0
范围 输入链路 I 的范围

如果参数 EdgeHandling 设置为 EdgeConstant,则此参数定义图像边界外像素的默认值。

对于 Color Format,该值是一个无符号整数,组合了所有颜色分量的二进制表示。

使用示例

以下示例展示了 FIRkernelNxM 算子的使用: