【问题标题】:How to perform Bicubic Interpolation when not all neighbours are known?当并非所有邻居都已知时,如何执行双三次插值?
【发布时间】:2012-03-01 11:26:58
【问题描述】:

鉴于只有 4 个边缘值用红色框起来,如果我想找出 f(1,2) 处的值并且它是最近的 16 个邻居(不确定自己是否可以包括在内?)显示在图片中,我可以分配0 值到未知函数并执行双三次插值以导出 f(1,2)?

随后,使用从上面导出的 f(1,2) 值,我将使用它的值以及已知值来计算其他未知值。

我的概念错了吗?如果我错了,有人可以教我吗?谢谢。

【问题讨论】:

    标签: math image-processing interpolation bicubic


    【解决方案1】:

    如果你用 0 代替你的未知值,你最终会得到所有值接近于零的荒谬。不要用任何东西代替未知数,只使用实际已知的值来填充其余部分。

    对于像素的填充,即使您不认识所有的邻居,双三次插值也应该可以正常工作。只是信息较少。关于resamplingbicubic interpolation 的维基百科文章是很好的起点。如果您正在寻找实际的实现,请尝试OpenCV cvResize function

    【讨论】:

    • 谢谢,我要编写自己的双三次插值实现。维基百科的双三次插值利用矩阵来解决我发现难以实现的问题。我正在尝试根据我在此fho-emden.de/~hoffmann/bicubic03042002.pdf,第 8 页上找到的方法来实现。您是否碰巧熟悉双三次插值,如果您可以提供帮助,我有一些概念需要澄清。谢谢!
    • 在大多数双三次示例(例如 pdf 中的示例)中,要计算中间点 f(1.5,1.5)。通过截断,它的最近邻居将是 f(1,1) 并且计算出 dx 和 dy 值为 0.5。但是,在我的示例中,该点恰好是 f(1,1) 本身,并且它最近的邻居是它自己,这是否意味着 dx 和 dy 值为 0?
    • 不,您应该将图表中的红点标记为 f(1,1) f(1,2) f(2,1) 和 f(2,2) 您需要额外的 12周围点的值为 f(0,0) ... f(4,4) 以执行双三次插值。可以说,您的蓝点是“离网”,就像您的 pdf 的第 8 页的圆形操作一样,dx 和 dy 都是 1/3。所以你的蓝点在 f(1+1/3,1+1/3)
    • 这是否意味着我的示例是错误的,并且双三次插值不能用于导出非整数点,例如我的示例中的蓝点,因为它周围的邻居是 f(0,0).. .f(4,4) 因为缺少 dx 和 dy?如果我错了,请纠正我。
    • 这与缺少dx和dy无关。您的示例对于双三次插值来说是错误的。您需要 16 个已知的周围点来执行双三次插值。在您的情况下,只有 4 个已知的周围点,您应该研究其他技术。但我假设您正在插入更大的图像?不只是 4 像素的图像?在这种情况下,您只需要包含源图像中的更多像素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多