我读了一篇关于相关核的论文,它定义了: 其中α = (\int(1+d(y − x)dy)^{ -1} , (d(|y − x|)) 是到中心像素的空间欧几里得距离。我的问题是什么是相关核以及该核与高斯核比较的好处?非常感谢。
什么是相关核并与高斯核进行比较
参考论文,卷积核可以写成:

和内核中的位置之间的欧几里得距离。 用于确保内核下的整个区域为 1。但是,您没有指定此内核的大小。因此,我们将分别指定这个内核的行和列。我们还假设每个维度的内核大小都是奇数。原因是因为内核的形状将是一个均匀的正方形,并且使实现更容易。因此,以下是我将执行的步骤:MN
- 定义网格
X和Y坐标,并确保中心像素为 0。 - 计算没有项的卷积核中的每个项。
- 将内核中的所有项相加,然后将该内核中的每个值除以该项,使得内核的整个区域为 1。
让我们一步一步来:
第1步
我们可以通过使用来做到这一点meshgrid。 meshgrid(在这种情况下)创建一个 2D(X,Y)坐标网格。 X定义 中每个位置的水平坐标X,而Y垂直定义。通过调用meshgrid(1:m, 1:n),我为和创建了一个n x m网格,其中每一行从 1 前进到,而每一列从 1 前进到。因此,它们都是矩阵。调用上面的和计算:XYXmYnn x mm = 4n = 4
m = 4;
n = 4;
[X,Y] = meshgrid(1:m, 1:n)
X =
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
Y =
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
因此,我们只需要修改它,但我们要确保中间在 处(0,0),并确保 和 的大小X是Y奇数。让我们这么说M = 5和N = 5。然后我们可以像这样定义我们的X和Y坐标:
M = 5;
N = 5;
[X,Y] = meshgrid(-floor(N/2):floor(N/2), -floor(M/2):floor(M/2))
X =
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2
Y =
-2 -2 -2 -2 -2
-1 -1 -1 -1 -1
0 0 0 0 0
1 1 1 1 1
2 2 2 2 2
正如您在此处看到的,两者的中心像素X和Y都定义为(0,0)。其他任何地方都有相对于 center(X,Y)定义的坐标。
第2步
我们只需要计算中心像素到内核中每个点的欧几里得距离。这可以通过以下方式完成:
dis = sqrt(X.^2 + Y.^2)
dis =
2.8284 2.2361 2.0000 2.2361 2.8284
2.2361 1.4142 1.0000 1.4142 2.2361
2.0000 1.0000 0 1.0000 2.0000
2.2361 1.4142 1.0000 1.4142 2.2361
2.8284 2.2361 2.0000 2.2361 2.8284
做一些快速的计算检查,你可以看到这与我们对欧几里得距离的理解是一致的。从中心向左移动 1 是距离 1。向左移动 1 然后向上移动 1 得到欧几里得距离 . 对每个元素进行类似的检查将证明这确实是距中心像素的欧几里得距离场。在我们这样做之后,让我们计算没有项的核项。
kern = 1 ./ (1 + dis)
kern =
0.2612 0.3090 0.3333 0.3090 0.2612
0.3090 0.4142 0.5000 0.4142 0.3090
0.3333 0.5000 1.0000 0.5000 0.3333
0.3090 0.4142 0.5000 0.4142 0.3090
0.2612 0.3090 0.3333 0.3090 0.2612
步骤#3
我们需要的最后一步是对掩码进行归一化,使内核的总和为 1。这可以简单地通过以下方式完成:
kernFinal = kern / sum(kern(:))
kernFinal =
0.0275 0.0325 0.0351 0.0325 0.0275
0.0325 0.0436 0.0526 0.0436 0.0325
0.0351 0.0526 0.1052 0.0526 0.0351
0.0325 0.0436 0.0526 0.0436 0.0325
0.0275 0.0325 0.0351 0.0325 0.0275
这应该最终为您提供您正在寻找的相关内核。您现在可以在卷积中使用它(即使用imfilteror conv2)。
希望我已经充分回答了你的问题。祝你好运!