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).
Если данные разбросаны, вы можете использовать триангуляцию Делоне, а затем барицентрическую интерполяцию в качестве варианта или обратного взвешивания расстояния.