假设有一个抛物线Y = aX^2 + bX + c
,它可能会按如下方式旋转:
X = x.sin(phi) + y.cos(phi)
Y = x.cos(phi) - y.sin(phi)
phi = rotation angle
我们希望将它放在边框上(例如眼睑的内边缘,如下图所示)。问题是我们如何在每次迭代中改变抛物线,以便最小化成本函数。我们知道抛物线可以处于不同的旋转,其起源可能在搜索区域中有所不同。注意,拟合抛物线应该通过它们有两个给定点(例如下图中的白色方块)。因此,在每次迭代中,我们可以通过两个给定点和原点(三个方程和三个变量)计算a
,b
和c
。
问题是我们如何在最小迭代中达到目标(而不是测试所有可能性,即搜索区域中的所有角度和所有位置)。
任何想法都将受到赞赏。
答案 0 :(得分:1)
一种可能的解决方案是首先沿垂直线搜索,该垂直线与两个给定点之间的直线正交。此外,您还可以在此间隔内改变角度。作为问题的本质(眼睑边框),您可以限制-pi / 4和pi / 4之间的角度变化。在此垂直线中找到位置的最低成本后,您可以沿水平线搜索并执行类似的任务。
答案 1 :(得分:0)
为什么不使用回归将抛物线拟合到目标形状中的几个点?然后你可以使用你想要的哪种算法来获得近似解。牛顿的方法收敛得非常快。这里的优化是关于近似抛物线的系数。