c++ - 双线性插值的代码优化
问题描述
我已经根据 MATLAB 示例实现了双线性插值算法: https ://se.mathworks.com/matlabcentral/fileexchange/10772-fast-2-dimensional-interpolation ;https://en.wikipedia.org/wiki/Bilinear_interpolation - 单位平方公式。
加快实施速度会很好。有人可以给我建议如何优化代码以加快速度吗?请找到方法的一部分:
x_loops = floor((X_end-X_11)/pixel_size_mm)+1;
y_loops = floor((Y_end-Y_11)/pixel_size_mm)+1;
float** Zi = new float*[x_loops] ();
for(int i = 0; i < x_loops; ++i)
Zi[i] = new float[y_loops] ();
n_dx = 1/(X_12 - X_11);
n_dy = 1/(Y_21 - Y_11);
Yi = Y_11;
int count = 0;
for(int i = 0; i < y_loops; i++)
{
Xi = X_11;
xi = 0;
yi = 0;
for(int j = 0; j < x_loops; j++)
{
xi = (Xi - X_11)*n_dx;
yi = (Yi - Y_11)*n_dy;
Xi += pixel_size_mm;
fxi = floor(xi);
fyi = floor(yi);
dfxi = xi - fxi;
dfyi = yi - fyi;
Zi[j][i] = (Strain_image[fxi][fyi]*(1 - dfxi)*(1-dfyi) +
Strain_image[fxi+1][fyi]*dfxi*(1-dfyi) + Strain_image[fxi][fyi+1]*
(1-dfxi)*dfyi + Strain_image[fxi+1][fyi+1]*dfxi*dfyi);
}
Yi += pixel_size_mm;
}
iMage(Zi, x_loops, y_loops,fX1,fY1);
for(int i = 0; i < x_loops; ++i)
delete [] Zi[i];
delete[] Zi;
for(int i = 0; i < number_of_RF_rows; ++i)
delete [] Strain_image[i];
delete[] Strain_image;
解决方案
推荐阅读
- php - 如何为select2多选添加值
- cuda - 多个进程可以共享一个 CUDA 上下文吗?
- node.js - Lambda Axios 发布到第二个 API 奇怪的异步行为
- reactjs - 如何在反应中显示下拉框其映射值而不是其键
- rest - 将我的 Postman 调用转换为 Dart/Flutter API 调用
- angular - 模块“AppModule”导入的意外值“AngularFireAuth”。请在删除未使用的页面时添加@NgModule 注释
- mysql - mySql 中的 Varcar(200) 与 html textarea 的 maxLength=200 属性不匹配
- reactjs - 在 react-grid-layout 中同时进行垂直和水平压缩
- javascript - 用于在鼠标悬停时修改表格单元格颜色的 Javascript - javascript 的语法错误 800A03EA
- javascript - 为什么我需要两次调用 setPageFromHash() 方法?