将数组中的所有数字更改为其索引值

Changing all number in an array to their indexed value

本文关键字:索引值 数字 数组      更新时间:2023-10-16

我正在用过滤器进行图像处理,因为它目前很酷,我用来创建过滤器的一个快速方法是计算rgb曲线轮廓,这样我就有了3个数组,redProfile、greenProfile和blueProfile。

当我在循环中对像素应用效果时,我通常会这样做:

*dest++ = bLomoRGB[top(r)];
*dest++ = gLomoRGB[top(g)];
*dest++ = rLomoRGB[top(b)];
*dest++ = 0xff;         
x++;        
if (x > 639) { x = 0; y++; }        
continue;

因此,对于每种颜色,我都会在配置文件中选择颜色。

这有可能与矩阵一起工作,或者更有效地执行它吗?

即编码如下:Array a = all my pixelsArray b = my indexApply b on a

我知道这比伪代码更简单,甚至不应该作为代码显示为灰色,但我仍然想知道始终保持一个循环来做一件事是否相关,比如更改其索引值的所有数字。

我怀疑是否有一些神奇的运算可以对整个矩阵执行此操作。

然而,如果你一次用32位块写入数据,这可以更有效地完成:

uint32_t *dest;
*dest++ = (bLomoRGB[top(r)] & 0xff) | ((gLomoRGB[top(g)] & 0xff) << 8) | 
          ((rLomoRGB[top(b)] & 0xff) << 16) | 0xff000000;

此外,代码可以很好地并行化。如果您正在寻找一些标准的方法来并行化这样的循环,请查看OpenMP。