为什么 Sobel Edge Eetection 需要零填充?

信息处理 图像处理 过滤器 边缘检测
2022-01-10 02:51:14

为什么我们要在使用Sobel 算子Prewitt 算子时将图像的两行和两列(或)填充零以检测边缘?

2个回答

Sobel 滤波器是一个矩阵(它是可分离的,但我们忽略它)。3×3

锚像素是中间像素,因此要在上排像素上评估运算符,运算符需要它们上方的数据。
最后一行、最左列或最右列的像素也是如此。

这通常通过填充图像来解决(我实际上使用“复制”而不是零填充)。

另一种选择是通过不评估极端行或列来将输出设置为较小的图像。

本身不需要零填充但是,如果要估计它们的离散导数/平滑,则基于居中的因此,您必须:3×3

  • 在图像边界上使用更短的导数估计器(不对副作用做出假设),例如罗伯茨交叉边缘检测器,或
  • 正确扩展图像;零填充(用于居中,左右多行或一列,底部或底部就足够了)是最简单的版本,但对称/反对称、周期性或镜像扩展可能更合适,或者
  • 使用可能更稳健的非线性运算符,或
  • 丢弃边界值,如果没有假设,您无法以任何合理的方式计算这些值。