我在将存储的图像数据转换byte[] array为灰度时遇到问题。我想使用向量 SIMD 操作,因为将来需要编写 ASM 和 C++ DLL 文件来测量操作时间。
当我读到SIMD我发现,SSE指令是在128位寄存器的操作,因此是一个问题,因为我需要我转换byte[] array成几个Vector<T>存储List<T>.
图像是四通道 RGBA JPEG,所以我还需要知道如何使用基于单个 128 位的 R、G、B 数据创建向量Vector<T>。之后,我可以使用灰度算法
fY(R, G, B) ? R x 0.29891 + G x 0.58661 + B x 0.11448
总而言之,问题是:
byte[] array到 128 位寄存器中Vector<T>。Vector<T>将 R、G、B 值分开以将其相乘并复制到源 Vector。