C#-如何使用向量SSE操作将图像像素数据的字节数组转换为灰度

问题描述 投票:0回答:1

我将存储在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


总的来说是:

  1. 如何将byte[] array的块加载到128位寄存器Vector<T>中。
  2. 如何将R,G,B值与Vector<T>分开,以将其相乘并复制到源Vector。

我在将存储在byte []数组中的图像数据转换为灰度时遇到问题。我想使用矢量SIMD操作,因为将来需要编写ASM和C ++ DLL文件来测量操作...

c# image vectorization sse simd
1个回答
0
投票

它需要System.Runtime.Intrinsics.Experimental.dll且不安全,但它相对简单,并且对于许多实际应用而言可能足够快。

© www.soinside.com 2019 - 2024. All rights reserved.