标题: ARM NEON加速引擎 使用C语言实现RGB图像转灰度图 [打印本页] 作者: chendi 时间: 2017-3-13 22:45 标题: ARM NEON加速引擎 使用C语言实现RGB图像转灰度图 //使用C语言实现RGB图像转灰度图
//Gray = (R * 77 + G * 151 + B * 28 ) / 256
void reference_convert (uint8_t * __restrict dest, uint8_t * __restrict src, int n)
{
int i;
for (i=0; i<n; i++)
{
int r = *src++; // load red
int g = *src++; // load green
int b = *src++; // load blue
// build weighted average:
int y = (r*77)+(g*151)+(b*28);
// undo the scale by 256 and write to memory:
*dest++ = (y>>8);
}
}
//使用NEON Intrinsics优化
void neon_convert (uint8_t * __restrict dest, uint8_t * __restrict src, int n)
{
int i;
//读取8字节的预设值到64位寄存器
uint8x8_t rfac = vdup_n_u8 (77);// 转换权值 R
uint8x8_t gfac = vdup_n_u8 (151);// 转换权值 G
uint8x8_t bfac = vdup_n_u8 (28);// 转换权值 B
n/=8;