Math 当不是所有的邻域都已知时,如何执行双三次插值?

Math 当不是所有的邻域都已知时,如何执行双三次插值?,math,image-processing,interpolation,bicubic,Math,Image Processing,Interpolation,Bicubic,假设只有4个红色框中的边值,如果我想找出f(1,2)处的值,并且图中显示了它最近的16个邻域(不确定是否可以包含它本身?),我可以为未知函数指定0值,并执行双三次插值以导出f(1,2)吗 随后,利用上面导出的f(1,2)值,除了已知值之外,我还将使用它的值来计算其他未知值 我的概念错了吗?如果我错了,有人能教我吗?谢谢。如果用0替换未知值,那么最终所有值都将可笑地接近于零。不要用任何东西代替未知数,只使用实际已知的值来填充其余的值 对于像素的填充,双三次插值应该可以很好地工作,即使您不知道所有的

假设只有4个红色框中的边值,如果我想找出f(1,2)处的值,并且图中显示了它最近的16个邻域(不确定是否可以包含它本身?),我可以为未知函数指定0值,并执行双三次插值以导出f(1,2)吗

随后,利用上面导出的f(1,2)值,除了已知值之外,我还将使用它的值来计算其他未知值


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

如果用0替换未知值,那么最终所有值都将可笑地接近于零。不要用任何东西代替未知数,只使用实际已知的值来填充其余的值


对于像素的填充,双三次插值应该可以很好地工作,即使您不知道所有的邻居。只有更少的信息。维基百科关于和的文章是很好的起点。如果您正在寻找实际的实现,请尝试。

如果将未知值替换为0,那么最终所有值都会非常接近于零。不要用任何东西代替未知数,只使用实际已知的值来填充其余的值


对于像素的填充,双三次插值应该可以很好地工作,即使您不知道所有的邻居。只有更少的信息。维基百科关于和的文章是很好的起点。如果您正在寻找实际实现,请尝试。

谢谢,我必须编写自己的双三次插值实现。Wikipedia的双三次插值利用矩阵来解决我发现很难实现的问题。我试图根据我在第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像素的图像?在这种情况下,您只需要包含源图像中的更多像素。谢谢,我必须编写我自己的双三次插值实现。Wikipedia的双三次插值利用矩阵来解决我发现很难实现的问题。我试图根据我在第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像素的图像?在这种情况下,您只需要包含来自源图像的更多像素。