cv::remap (в opencv) и interp2 (matlab)

Я пытаюсь найти эквивалентную функцию OpenCV для Interp2, и я понимаю, что cv::remap это хороший способ сделать это.

Однако, если у меня есть следующее:

f2 = interp2( x, y, f, x2, y2, 'bicubic' );

где x, y, x2 а также y2 все (скажем, mxn) матрицы, я не уверен, как использовать cv::remap за это.

Как бы я использовал remap за это? Я знаю, что должен преобразовать это в карту... но я не могу этого сделать.

И есть ли что-нибудь еще, что может сделать interp2 как это делает функция matlab?

2 ответа

Решение

Если вы еще не нашли свой ответ, это то, как вы должны его использовать.

remap(f,f2,x2,y2,CV_INTER_CUBIC);

Функция remap предполагает, что вы работаете именно с сеткой, в которой определено f, поэтому нет необходимости передавать монотонные координаты x,y. Я почти уверен, что матрицы не могут быть CV_64F (double), поэтому примите это во внимание.

interp2 - это интерполятор - если вы получаете значения x,y и f для некоторой сетки, это дает вам значение f2 для x2 и y2.

remap - оборачивает вашу сетку, перемещая координаты x и y в соответствии с картами деформации.

если вы хотите интерполировать регулярную сетку, используйте масштабирование (например, cv::resize).

Если данные разбросаны, вы можете использовать триангуляцию Делоне, а затем барицентрическую интерполяцию в качестве варианта или обратного взвешивания расстояния.

Другие вопросы по тегам