我的图像处理项目适用于灰度图像。我有ARM Cortex-A8处理器平台。我想利用NEON。

我有一个灰度图像(考虑下面的示例),在我的算法中,我只需要添加列。

如何将 uint8_t 四个8位像素值并行加载为128位NEON寄存器之一,作为的四个uint32_t ?我必须使用什么内在函数来做到这一点?

我是说:

我必须将它们加载为32位,因为如果仔细看,我执行255 + 255的那一刻将是512,这不能保存在8位寄存器中。

例如

255 255 255 255 ......... (640 pixels)
255 255 255 255
255 255 255 255
255 255 255 255
.
.
.
.
.
(480 pixels)

最佳答案

我建议您花一些时间来了解SIMD如何在ARM上工作。看着:

看一眼:

  • http://blogs.arm.com/software-enablement/161-coding-for-neon-part-1-load-and-stores/
  • http://blogs.arm.com/software-enablement/196-coding-for-neon-part-2-dealing-with-leftovers/
  • http://blogs.arm.com/software-enablement/241-coding-for-neon-part-3-matrix-multiplication/
  • http://blogs.arm.com/software-enablement/277-coding-for-neon-part-4-shifting-left-and-right/

  • 让您开始。然后,您可以使用嵌入式汇编程序或domen建议的相应ARM内部函数来实现SIMD代码。

    09-27 03:38
    查看更多