如何将 Argb32 加载到特征矩阵中以获得最佳性能

How to load Argb32 into Eigen Matrix for best performance?

本文关键字:性能 最佳 Argb32 加载 特征      更新时间:2023-10-16

给定一个 Int 数组,一个 Argb32 图像,我怎样才能以最佳方式将其加载到特征矩阵中?

目标是创建一个小型图像处理库。作为第一部分,我想从RGB转换为灰度。

有没有办法将 int[] 加载到 3 个特征矩阵中,而无需任何内存复制?

(当提到特征时,它是线性代数库)。

是的,使用 Map<> 类进行适当的内步幅,例如:

unsigned char* data = ...;
int w, h; // the width and height
typedef Map<Matrix<unsigned char,Dynamic,Dynamic>, 0, InnerStride<4> > Slide;
Slice red(data, w, h), green(data+1, w, h), blue(data+2, w, h);

然后你可以开始使用它们,例如,构造一个灰度浮点版本:

MatrixXf gray = (red.cast<float>() * 11 + green.cast<float>() * 16 + blue.cast<float>() * 5)/(32.*255.);