在给定一组离散点的情况下,我必须找到最大值的子像素(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 ++代码吗?