将数组中的所有数字更改为其索引值
Changing all number in an array to their indexed value
我正在用过滤器进行图像处理,因为它目前很酷,我用来创建过滤器的一个快速方法是计算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 pixels
Array b = my index
Apply b on a
我知道这比伪代码更简单,甚至不应该作为代码显示为灰色,但我仍然想知道始终保持一个循环来做一件事是否相关,比如更改其索引值的所有数字。
我怀疑是否有一些神奇的运算可以对整个矩阵执行此操作。
然而,如果你一次用32位块写入数据,这可以更有效地完成:
uint32_t *dest;
*dest++ = (bLomoRGB[top(r)] & 0xff) | ((gLomoRGB[top(g)] & 0xff) << 8) |
((rLomoRGB[top(b)] & 0xff) << 16) | 0xff000000;
此外,代码可以很好地并行化。如果您正在寻找一些标准的方法来并行化这样的循环,请查看OpenMP。
相关文章:
- 如何在for循环中包含两个索引值的测试条件
- *无符号字符中的索引值
- 返回向量的单个索引值
- 如何在对向量排序后更改索引值?c++
- 为什么C++数组索引值是有符号的,而不是围绕size_t类型构建的(或者我错了)
- 如何计算 3d 数组中的索引值在内存中的位置?如何计算字符**中的索引值在内存中的位置?
- 如何在C++中为数组分配不同的索引值
- C++枚举索引值
- 查找索引值在char表中
- 根据索引值提取特定字节
- 尝试输出所有索引值(如果找到)
- 有没有办法创建一个花哨的迭代器和相应的新数组,以便检查每个索引的索引值的条件?
- 为什么在将单词从文本文件C++到行进行多重映射时获得额外的索引值
- C++使用 min_element 或 max_element 时检索向量中的索引值
- 如何使用二进制索引树来计算小于索引值的元素数量
- 存储数组索引值C++
- 在 for 循环中使用 int 以外的数据类型作为索引值C++
- 向函数传递特定的数组索引值
- 为什么我可以索引到数字超出范围的三维数组中,但仍然可以访问数组中的最后一个数字
- 将数组中的所有数字更改为其索引值