speed_histogram_algorithm_framework
局部直方图加速框架,内部使用了一些近似计算及指令集加速(SSE),可以快速处理中值滤波、最大值滤波、最小值滤波、表面模糊等算法。
测试CPU型号:Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz
分辨率
优化
循环次数
速度
4032x3024
原始实现
1000
12.139ms
4032x3024
第一版优化(float->INT)
1000
7.629ms
4032x3024
OpenCV 自带函数
1000
4.287ms
4032x3024
第二版优化(手动4路并行)
1000
10.528ms
4032x3024
第三版优化(OpenMP4线程)
1000
7.632ms
4032x3024
第四版优化(SSE优化,一次处理12个像素)
1000
5.579ms
4032x3024
第五版优化(SSE优化,一次处理15个像素)
1000
5.843ms
4032x3024
第六版优化(AVX2优化,一次处理10个像素)
1000
3.576ms
4032x3024
第七版优化(AVX2优化+std::async)
1000
2.626ms
分辨率
优化
循环次数
速度
4032x3024
原始实现
100
115.36ms
4032x3024
第一版优化
100
62.43ms
4032x3024
第二版优化(4线程)
100
28.89ms
4032x3024
第三版优化(SSE)
100
12.69ms
分辨率
算法优化
循环次数
速度
4032x3024
普通实现
1000
126.54 ms
4032x3024
Float->INT+查表法
1000
81.62 ms
4032x3024
SSE优化版本1
1000
34.95 ms
4032x3024
SSE优化版本2
1000
28.87 ms
4032x3024
AVX2优化版本1
1000
15.42 ms
4032x3024
AVX2优化+std::async
1000
5.69 ms
分辨率
算法优化
循环次数
速度
4272x2848
普通实现
1000
41.40ms
4272x2848
OpenMP 4线程
1000
36.54ms
4272x2848
SSE第一版
1000
6.77ms
4272x2848
SSE第二版(std::async)
1000
4.73ms
分辨率
算法优化
循环次数
速度
4032x3024
普通实现
1000
150.58ms
4032x3024
去掉浮点数,除法用位运算代替
1000
76.70ms
4032x3024
OpenMP 4线程
1000
50.48ms
4032x3024
普通SSE向量化
1000
48.92ms
4032x3024
_mm_madd_epi16二次优化
1000
33.04ms
4032x3024
SSE+4线程
1000
23.70ms
分辨率
算法优化
循环次数
速度
4032x3024
普通实现
10
8293.79 ms
4032x3024
逻辑优化,更好的流水
10
83.75 ms
4032x3024
SSE优化
10
11.93 ms
4032x3024
AVX优化
10
9.32 ms
优化方式
图像分辨率
速度
C语言普通实现+单线程
4032*3024
290.43ms
SSE优化+单线程
4032*3024
265.96ms
优化方式
图像分辨率
速度
C语言实现+单线程
4032*3024
66.66ms
C语言实现+4线程
4032*3024
65.34ms
SSE优化+单线程
4032*3024
66.10ms
SSE优化+4线程
4032*3024
66.20ms
优化方式
图像分辨率
半径
速度
C语言实现+单线程
4272*2848
7
9445.90ms
SSE优化+单线程
4272*2848
7
2234.55ms
C语言实现+单线程
4272*2848
9
14468.76ms
SSE优化+单线程
4272*2848
9
2221.68ms
C语言实现+单线程
4272*2848
11
23069.10ms
SSE优化+单线程
4272*2848
11
2180.95ms
优化方式
图像分辨率
半径
速度
C语言实现+单线程
4272*2848
11
163.16ms
SSE优化+单线程
4272*2848
11
123.83ms
C语言实现+单线程
4272*2848
21
167.81ms
SSE优化+单线程
4272*2848
21
126.98ms
C语言实现+单线程
4272*2848
31
168.62ms
SSE优化+单线程
4272*2848
31
126.17ms
speed_multi_scale_detail_boosting_see.cpp 在speed_box_filter_sse.cpp提供的盒子滤波sse优化的基础上,进一步使用指令集实现了对论文《DARK IMAGE ENHANCEMENT BASED ON PAIRWISE TARGET CONTRAST AND MULTI-SCALE DETAIL BOOSTING》的算法优化。算法原理请看:https://blog.csdn.net/just_sort/article/details/98485746 。在CoreI7-3770速度测试结果如下:
优化方式
图像分辨率
半径
速度
C语言实现+单线程
4272*2848
7
206.00ms
SSE优化+单线程
4272*2848
7
57.12ms
优化方式
图像分辨率
插值后大小
速度
C语言原始算法实现
4272*2848
长宽均为原始1.5倍
1856.29ms
C语言实现+查表优化+边界优化
4272*2848
长宽均为原始1.5倍
839.10ms
SSE优化+边界优化
4272*2848
长宽均为原始1.5倍
315.70ms
OpenCV3.1.0自带的函数
4272*2848
长宽均为原始1.5倍
118.77ms
维护了一个微信公众号,分享论文,算法,比赛,生活,欢迎加入。
图片要是没加载出来直接搜GiantPandaCV 就好。