0
我想通过使用Neon intrinsics作为练习来减去两个图像(灰度),我不知道用C intrinsics减去两个向量的最佳方法是什么。使用NEON减去两个图像
void subtractTwoImagesNeonOnePass(uint8_t *src, uint8_t*dest, uint8_t*result, int srcWidth)
{
for (int i = 0; i<srcWidth; i++)
{
// load 8 pixels
uint8x8x3_t srcPixels = vld3_u8 (src);
uint8x8x3_t dstPixels = vld3_u8 (src);
// subtract them
uint8x8x3_t subPixels = vsub_u8(srcPixels, dstPixels);
// store the result
vst1_u8 (result, subPixels);
// move 8 pixels
src+=8;
dest+=8;
result+=8;
}
}
编译后使用'objdump'并检查生成的二进制文件的程序集。如果它看起来够好,那就够好了。 – auselen 2013-03-18 17:04:04
@auselen它不编译,uint8x8x3_t subPixels = vsub_u8(srcPixels,dstPixels); – 2013-03-18 17:12:13
如果这些只是灰度图像,那么您不想使用3种组件类型和内在函数 - 使用'uint8x16_t'作为数据类型,然后使用普通的16字节加载和存储。 – 2013-03-18 17:19:11