如果不是双线性插值,这种技术是什么?

时间:2014-06-03 15:59:26

标签: algorithm terminology interpolation

摘要:我在下面介绍的技术是否有名称?

this question中,我描述了一种情况,即我有四个非轴对齐的2D输入点映射到输出向量,并希望将任意输入点映射到新的输出向量。

(-19,-7) -> (-150,-100)
( 10,-8) -> ( 150,-100)
(-11, 4) -> (-150, 100)
(  9, 7) -> ( 150, 100)
(-4.2,1) -> (  ??,  ??)

基于one answer,我想出了我的own algorithm,如上图所示为绿色和橙色计算。有关详细信息,请参阅答案,但简而言之:在顶部和底部线上找到X截距,将输出值调整到那些“北”/“南”位置,然后根据输入点所在的位置在这些输出之间进行搜索这条线。

对我的回答的评论表明,我所做的不能称为“双线性插值”。我相信这是因为我正在计算顶部和底部边缘的不同百分比,而我这样做的方式可能会导致四边形中的某些输入点导致输出值超出角点输出点的最小值/最大值

  • 例如,我的方案中的(-19,0)输入导致沿底边的点为-40%,因此产生的输出值为〜(-236,43),远小于-150的minX。

如果它不是“双线性插值”,那么这个算法是什么?而且,如果你允许第二个问题,你将如何在非平行四边形输入上使用双线性插值,因为我有这里?这甚至可能吗?

我的算法的漂亮视觉测试可以找到on my website

2 个答案:

答案 0 :(得分:2)

我不知道这种算法是否有名称,但您似乎要尝试的是将4点多边形的坐标反转为矩形。 类似的东西用在这段代码http://www.vcskicks.com/image-distortion.php上 如果你想要一个更好的解释,你可以在这里找到它http://ryoushin.com/cmerighi/en-US/2006-09-30_21/Quadrilateral_Distortion_Algorithm。 但请记住,这些几何算法很慢,也不适用于凹形......(你可能也注意到了你的测试)..

这就是为什么我开发了一个不同的tecnique http://www.codeproject.com/Articles/247214/Quadrilateral-Distortion,它在凹多边形上更快且更容易破碎。

但是如果你想要实现的效果就像你的样本......从给定的点创建一个渐变...可能有更简单和有效的方法来做它。 比点maping ..也许你可以枚举画布中的所有点,并根据“锚点”的距离选择它的颜色..我可能会更快..并且不会有那些凹陷的故障..

答案 1 :(得分:0)

Welll。将这称为双线性插值的变量在技术上是合理的,其中每个顶部端点首先沿顶线外推以沿着X轴与相应的底点对齐。也就是说,首先你将任意四边形转变为梯形,然后你在该梯形上进行双线性插值。

在一般情况下,它不太可能产生有用的结果。

至于你如何使用双线性插值,它主要归结为求解方程组。有一些(u,v)对,这样如果你用它们进行双线性插值,你就得到输入坐标。您可以找到该对,然后使用它来生成输出值。