为什么我们要在使用Sobel 算子和Prewitt 算子时将图像的两行和两列(或)填充零以检测边缘?
为什么 Sobel Edge Eetection 需要零填充?
信息处理
图像处理
过滤器
边缘检测
2022-01-10 02:51:14
2个回答
Sobel 滤波器是一个矩阵(它是可分离的,但我们忽略它)。
锚像素是中间像素,因此要在上排像素上评估运算符,运算符需要它们上方的数据。
最后一行、最左列或最右列的像素也是如此。
这通常通过填充图像来解决(我实际上使用“复制”而不是零填充)。
另一种选择是通过不评估极端行或列来将输出设置为较小的图像。
本身不需要零填充。但是,如果要估计它们的离散导数/平滑,则基于居中的因此,您必须:
- 在图像边界上使用更短的导数估计器(不对副作用做出假设),例如罗伯茨交叉边缘检测器,或
- 正确扩展图像;零填充(用于居中,左右多行或一列,底部或底部就足够了)是最简单的版本,但对称/反对称、周期性或镜像扩展可能更合适,或者
- 使用可能更稳健的非线性运算符,或
- 丢弃边界值,如果没有假设,您无法以任何合理的方式计算这些值。
其它你可能感兴趣的问题