gpt4 book ai didi

algorithm - Matlab中双三次插值的解释?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:14:21 24 4
gpt4 key购买 nike

我对 Matlab 在 http://www.mathworks.com/help/vision/ug/interpolation-methods.html#f13689 上的双三次插值示例感到困惑

我想我理解他们的双线性示例。看起来他们取了两侧相邻翻译值的平均值。因此,为了获得第一行第一列中的 0.5,取 0 和 1 的平均值。

对于他们的双三次插值示例,我对他们的方法感到很困惑。他们说他们取“两边两个转换值的加权平均值”。

在他们的例子中,他们有

1 2 3
4 5 6
7 8 9

在双三次插值的第一步中,他们将零添加到矩阵并将其向右平移 0.5 个像素以获得以下结果:

0 0 0 1 1 2 2 3 3 0 0 0 0
0 0 0 4 4 5 5 6 6 0 0 0 0
0 0 0 7 7 8 8 9 9 0 0 0 0

然后,使用加权平均,他们得到

0.375 1.500 3.000 1.625
1.875 4.875 6.375 3.125
3.375 8.250 9.750 4.625

但是,我不确定他们是如何得到这些数字的。而不是第一行第一列中的 0.375,我会做 (1 * 3/8 + 2 * 1/8) = 5/8 。这是因为格式好像是

0  _  0  1  1  _  2
3d d d 3d

其中 d 是距离。

因此,为了取转换值的加权平均值,我们可以注意到,我们可以先做 (3d + d + d + 3d) = 1 等 d = 1/8。这意味着我们应该将 3/8 的权重放在每个更接近的翻译值上,将 1/8 的权重放在每个进一步翻译的值上。这导致 (0 * 1/8 + 0 * 3/8 + 1 * 3/8 + 2 * 1/8),这是 5/8,与他们的 3/8 结果不匹配。我想知道我哪里错了。

谢谢!

最佳答案

双三次插值使用负权重(这有时会导致过滤时过冲)。

在这个例子中,使用的权重是:

-1/8 5/8 5/8 -1/8

这些权重总和为 1,但给予中间样本更大的权重,给外部样本更小(负)的权重。

使用这些权重我们得到观察值,例如

0.375 = 5/8*1 -1/8*2
1.5 = 5/8*1+5/8*2 -1/8*3

关于algorithm - Matlab中双三次插值的解释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23860155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com