我试图说服自己可以通过两个 1D 过滤器实现可分离的 2D 过滤器。所以,我以下面的 Sobel 滤波器为例:
基于Szeliski
这可以分为:
和
考虑如下所示的图像:
让我们首先执行一个正常的 2D 卷积,其中包括:
1)水平和垂直翻转内核(即首先交换第一行和最后一行,然后交换第一列和最后一列)。
2)在图像上应用翻转内核(假设边界为零填充)。
3) 通过将值除以 8 来归一化值。
这会产生输出:
现在我们可以尝试应用一维过滤器:
1)行向量表示的一维滤波器被翻转(列互换)。
2)翻转过滤器应用于整个图像。
3)将列向量表示的一维滤波器翻转(行互换)。
4) 翻转滤波器应用于第一个 1D 卷积的结果。
5) 这些值通过将它们除以 4 来归一化。
这会产生输出:
这两种结果是不同的。错误是什么以及如何正确执行这些操作?