图像处理/计算机视觉:过滤器的可分离性是如何实现的?

信息处理 图像处理 过滤器 计算机视觉 卷积 核心
2022-02-16 19:19:55

我试图说服自己可以通过两个 1D 过滤器实现可分离的 2D 过滤器。所以,我以下面的 Sobel 滤波器为例:

1/8[101202101]

基于Szeliski

图 3.14 来自 Szeliski。

这可以分为:

1/2[101]1/2[101]

考虑如下所示的图像:

[123456789]

让我们首先执行一个正常的 2D 卷积,其中包括:

1)水平和垂直翻转内核(即首先交换第一行和最后一行,然后交换第一列和最后一列)。

2)在图像上应用翻转内核(假设边界为零填充)。

3) 通过将值除以 8 来归一化值。

这会产生输出:

[1.1250.751.1252.512.52.6250.752.625]

现在我们可以尝试应用一维过滤器:

1)行向量表示的一维滤波器被翻转(列互换)。

2)翻转过滤器应用于整个图像。

3)将列向量表示的一维滤波器翻转(行互换)。

4) 翻转滤波器应用于第一个 1D 卷积的结果。

5) 这些值通过将它们除以 4 来归一化。

这会产生输出:

[1.250.51.251.501.51.250.51.25]

这两种结果是不同的。错误是什么以及如何正确执行这些操作?

1个回答

Szeliski 并没有说你认为他们在说什么。

可分离过滤器的垂直部分为:

v2=1/4[121]
不是
v1=1/2[101].

您可以通过定义看到这一点:

h=1/2[101]
看着

K1=v1h=[1/401/40001/401/4]

K2=v2h=[1/801/81/401/41/801/8]

您可以在我包含在您的问题中的图像中看到这种效果:垂直边缘突出显示,但水平边缘消失。这是因为v2filter 是一个低通滤波器,不增强边缘。