随着ARKit发布,手机端的图像识别及追踪功能越来越普及,诸多app都纷纷开动脑筋去做一些好玩的场景,这其中就离不开手机端的指令加速问题。最近刚开始研究arm neon,打算从Opencv现有的代码来扒一扒neon加速都被放在哪些地方,具体怎么实现的
Opencv的imgproc模块中有一个pyramids的文件,图像金字塔是图像多尺度的一种表达,将图片进行上采样或下采样得到一系列不同大小的图片集合。我们就挑其中用的最多的高斯下采样来举例。Sample里面调用的入口函数是pyrDown,它里面三个参数,src, dst, size,分别是输入图片,输出图片,输出图片大小,输出图片大小的size计算公式一般是rows/2 +1, cols/2 +1。
pyrDown函数里面,有一些并行加速的逻辑,忽略掉,可以直接看pyrDown_<FixPtCast<uchar, 8>, PyrDownVec_32s8u>,这里面也是基于输入图片的depth等于CV_8U