0

我在 Wikipedia 上阅读并看到如果我们需要对图像执行空间过滤,我们必须有一个过滤器,例如 3x3,我在这里不明白的是我们如何选择过滤器的值?假设原始图像是灰度的,因此其强度从 0 变为 255(8 位)。
另一个问题是,如果图像是 9x9,我们如何将过滤器应用于该图像的边界像素?如果我们选择填充图像以便过滤器可以处理所有边界像素,那么新填充像素的值是多少?
非常感谢

4

1 回答 1

1

过滤器的值取决于您希望通过过滤实现的目标。有很多过滤器设计可以执行特定任务。例如,最简单的滤波器 f=[-1 1 -1] 通过在水平方向(x 导数)上对每个像素执行一阶差分来执行图像推导,而 f' 在垂直方向(y 导数)执行相同的操作. 为此目的选择值 -1,1,-1。3*3 过滤器也是如此。通常,值的选择来自有限冲激响应 (FIR) 和无限冲激响应 (IIR) 滤波器的 2D(双向)设计。

您应该记住,边界上的过滤器操作的值并不是那么准确。边界像素的过滤操作通过称为边界插值的过程对超出范围的像素进行插值。在 OpenCV 和类似的图像处理/计算机视觉库中,有一些方法可以做到这一点。例如在opencv中如下

各种边框类型,图像边界用'|'表示

  • BORDER_REPLICATE: aaaaaa|abcdefgh|hhhhhhh
  • BORDER_REFLECT: fedcba|abcdefgh|hgfedcb
  • BORDER_REFLECT_101:gfedcb|abcdefgh|gfedcba
  • BORDER_WRAP: cdefgh|abcdefgh|abcdefg
  • BORDER_CONSTANT: iiiiii|abcdefgh|iiiiiii 带有一些指定的 'i'

因此,根据您的选择,您可以填充边界像素。

于 2012-11-28T19:19:12.257 回答