目前我在 STM32 上使用 MLX90641 传感器来获取温度网格。网格本身是 18x12 像素。我想将此网格双三次插值到 31x23 的网格,我认为这是最合乎逻辑的吗?
我的数学/微积分知识足以掌握双三次插值的概念。但是我无法弄清楚让它在代码中工作。
使用的语言是 C++ 和https://www.paulinternet.nl/?page=bicubic作为来源。
double cubicInterpolate (double p[4], double x) {
return p[1] + 0.5 * x*(p[2] - p[0] + x*(2.0*p[0] - 5.0*p[1] + 4.0*p[2] - p[3] + x*(3.0*(p[1] - p[2]) + p[3] - p[0])));
}
double bicubicInterpolate (double p[4][4], double x, double y) {
double arr[4];
arr[0] = cubicInterpolate(p[0], y);
arr[1] = cubicInterpolate(p[1], y);
arr[2] = cubicInterpolate(p[2], y);
arr[3] = cubicInterpolate(p[3], y);
return cubicInterpolate(arr, x);
}
我是否循环遍历我的双精度数组并在每个值上调用函数 bicubicInterpolate?为什么他们使用参数double x,double y?
谁能帮我将此功能应用于我的双网格[192]?
谢谢!