可见这里实际上是对字节类型进行查表,所以这里最后的那个scale参数我们取的是1,即中间的偏移是以字节为单位的,但是这里其实隐含着一个问题,即如果我们取样的是图片最右下角的那个位置的像素,因为要从那个位置开始读取四个字节的内存,除非图像原始格式是BGRA的,否则,必然会读取到超出图像内存外的内存数据,这个在普通的C语言中,已改会弹出一个系统错误框,蹦的一下说访问非法内存,但是我看用这个指令似乎目前还没有遇到这个错误,哪怕认为的输入一个会犯错误的坐标 。
如果是这样的话,得到的一个好处就是对于那些图像扭曲滤镜、缩放图像中哪些重新计算坐标的函数来说,不用临时构建一副同样数据的int类型图了,而可以直接放心的使用这个函数了 。
最后说明一点,经过在其他一些机器上测试,似乎有些初代即使支持AVX2的CPU,使用这些函数后相应的算法的执行速度反而有下降的可能性,不知道为什么 。
在我提供的SIMD指令优化的DEMO中,在 Adjust-->Exposure菜单下可以看到使用C语言和使用AVX进行查表优化的功能,有兴趣的作者可以自行比较下 。

文章插图
很明显,在这里SSE优化选项是无法使用的 。
本文可执行Demo下载地址: https://files.cnblogs.com/files/Imageshop/SSE_Optimization_Demo.rar,菜单中蓝色字体显示的部分为已经使用AVX加速的算法,如果您的硬件中不支持AVX2,可能这个DEMO你无法运行 。
如果想时刻关注本人的最新文章,也可关注公众号:

文章插图
经验总结扩展阅读
- BLS签名算法
- 从源码分析 MGR 的新主选举算法
- Upscayl,免费开源的 AI 图像增强软件
- GC plan_phase二叉树挂接的一个算法
- AVX图像算法优化系列一: 初步接触AVX。
- 含源码 手把手教你使用LabVIEW OpenCV dnn实现图像分类
- 什么是a3算法
- 根号加根号怎么算
- 独辟蹊径:逆推Krpano切图算法,实现在浏览器切多层级瓦片图
- 数列的四种表示方法
