Мне нужно найти субпиксель (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|
Iхотел бы использовать квадратичную интерполяцию, чтобы найти координаты точек субпикселя интерполированного максимального значения, используя только ближайшие соседи.
В 1d случае я использую эту формулу (предполагая, что 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 ++ для 2dслучай