使用离散二次插值找到最大值的(x,y)个子像素坐标

时间:2019-04-10 09:35:30

标签: c++ interpolation discrete-mathematics

在给定一组离散点的情况下,我必须找到最大值的子像素(x,y)
在任何情况下,我都运行cv::matchTemplate函数,该函数沿图像滑动模型窗口并返回每个像素位置的得分值。
结果是一张图像,其中每个位置的得分以及位置(x0, y0)的得分都具有最大值,就像这些值在找到的最大值附近一样:

      x_1    x0     x1
y_1 |0.91 | 0.89 | 0.90|
y0  |0.92 | 0.99 | 0.89|
y1  |0.95 | 0.95 | 0.90|

我想使用二次插值法,仅使用最近的邻居,找到插值最大值的子像素点坐标在哪里。
在一种情况下,我使用以下公式(假设x0是原点):

interpolated_x = (x_1-x1)/(2.*(x_1-2.*x0+x1));

例如:

  x_1    x0     x1
|0.92 | 0.99 | 0.89|

您得到interpolated_x = -0.08823,它恰好位于x0的左侧。

二维情况下有一些C ++代码吗?

0 个答案:

没有答案