Arrays 在C语言中加速数组中的三维查找表
我有一个三维查找表LUT[宽度][高度][深度]。我必须将此LUT应用于大图像(4k x 4k)中的每个像素,并且我需要改进性能。我尝试了以下方法:Arrays 在C语言中加速数组中的三维查找表,arrays,Arrays,我有一个三维查找表LUT[宽度][高度][深度]。我必须将此LUT应用于大图像(4k x 4k)中的每个像素,并且我需要改进性能。我尝试了以下方法: u8 lut[1024][1024][32]; u16 image[4096][4096]; u16 image2[4096][4096]; for (z = 0; z < 32; z++) { for (y = 0; y < 4096; y++) { for (x = 0; x < 4096; x++)
u8 lut[1024][1024][32];
u16 image[4096][4096];
u16 image2[4096][4096];
for (z = 0; z < 32; z++) {
for (y = 0; y < 4096; y++) {
for (x = 0; x < 4096; x++) {
ci1 = colorindex = image[x + y*4096]
ci2 = colorindex2 = image2[x + y*4096]
result_image[x + (y*4096) + (z*4096*4096)] = lut[ci + (1024*ci2) + (1024*1024)*z];
}
}
u8 lut[1024][1024][32];
u16图像[4096][4096];
u16图像2[4096][4096];
对于(z=0;z<32;z++){
对于(y=0;y<4096;y++){
对于(x=0;x<4096;x++){
ci1=颜色索引=图像[x+y*4096]
ci2=colorindex2=image2[x+y*4096]
结果_图像[x+(y*4096)+(z*4096*4096)]=lut[ci+(1024*ci2)+(1024*1024)*z];
}
}
但是结果并不好。有没有办法改善这一点?单是上面的循环就需要大约5亿次浮点运算。当前的运行时间是多少,您期望的是什么?0次浮点运算。没有浮点运算。有没有更好的方法用C做查找表?我使用的是ARM SoC Cortex A8。有没有办法利用类似SIMD的N使用C语言还是使用库?