我将存储在byte[] array
中的图像数据转换为灰度图像时遇到问题。我想使用矢量SIMD操作,因为将来需要编写ASM和C ++ DLL文件来测量操作时间。
[当我了解SIMD时,我发现SSE命令是在128位寄存器上运行的,因此出现了一个问题,因为我需要将byte[] array
转换为存储在Vector<T>
中的几个List<T>.
,>
图像是四个通道的RGBA JPEG,所以我还需要知道如何基于单个128位Vector<T>
使用R,G,B数据创建矢量。之后,我可以使用灰度算法
fY(R,G,B)= R x 0.29891 + G x 0.58661 + B x 0.11448
总的来说是:
byte[] array
的块加载到128位寄存器Vector<T>
中。Vector<T>
分开,以将其相乘并复制到源Vector。我在将存储在byte []数组中的图像数据转换为灰度时遇到问题。我想使用矢量SIMD操作,因为将来需要编写ASM和C ++ DLL文件来测量操作...
它需要System.Runtime.Intrinsics.Experimental.dll且不安全,但它相对简单,并且对于许多实际应用而言可能足够快。