Skip to content

dreamplayerzhang/Image-processing-algorithm-Speed

This branch is 37 commits behind BBuf/Image-processing-algorithm-Speed:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Nov 22, 2019
8b33c29 · Nov 22, 2019

History

82 Commits
Nov 22, 2019
Aug 27, 2019
Aug 1, 2019
Oct 29, 2019
Aug 28, 2019
Aug 1, 2019
Jul 22, 2019
Aug 28, 2019
Jul 15, 2019
Jul 26, 2019
Aug 7, 2019
Aug 5, 2019
Jul 15, 2019
Aug 14, 2019
Jul 19, 2019
Jul 16, 2019
Jul 15, 2019
Aug 8, 2019

Repository files navigation

Introduction

speed_histogram_algorithm_framework

  • 局部直方图加速框架,内部使用了一些近似计算及指令集加速(SSE),可以快速处理中值滤波、最大值滤波、最小值滤波、表面模糊等算法。

resources

  • SSE优化相关的资源。

PC的CPU为I7-8770,64位。

OpenCV版本为3.4.0

速度测试时,跑了10个loop。

测试速度时VS的配置图如下:

  • sse_implementation_of_common_functions_in_image_processing.cpp 多个图像处理中常用函数的SSE实现。
  • speed_rgb2gray_sse.cpp 使用sse加速RGB和灰度图转换算法,相比于OpenCV系统函数有2-3倍加速。算法原理:https://blog.csdn.net/just_sort/article/details/94456945 。速度测试结果如下:
优化方式 图像分辨率 速度
C语言实现+单线程 4032*3024 9.39ms
4次循环展开+单线程 4032*3024 8.74ms
SSE优化+单线程 4032*3024 4.57ms
优化方式 图像分辨率 速度
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语言实现+单线程 4032*3024 70.17ms
浮点数改成整形运算+单线程 4032*3024 36.30ms
SSE优化+单线程 4032*3024 8.72ms
优化方式 图像分辨率 速度
C语言实现+单线程 4032*3024 192.01ms
浮点数改成整形运算+单线程 4032*3024 91.20ms
SSE优化+单线程 4032*3024 21.14ms
优化方式 图像分辨率 速度
C语言实现+单线程 4272*2848 20.19ms
SSE优化+单线程 4272*2848 4.22ms
  • speed_common_functions.cpp 对图像处理的一些常用函数的快速实现,个别使用了SSE优化。
  • speed_max_filter_sse.cpp 使用speed_histogram_algorithm_framework框架实现最大值滤波,半径越大越明显。原理请看:https://blog.csdn.net/just_sort/article/details/97280807 。运行的时候记得把工程属性中的sdl检查关掉,不然会报一个变量未初始化的错误。速度测试效果如下:
优化方式 图像分辨率 半径 速度
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 3 5103.22ms
C语言实现+优化排序 4272*2848 3 749.43ms
SSE优化 4272*2848 3 10.26ms
OpenCV3.1.0自带的函数 4272*2848 3 100.09ms
  • speed_rgb2yuv_sse.cpp SSE极致优化RGB和YUV图像空间互转,算法原理请看:https://blog.csdn.net/just_sort/article/details/99545096 。YUV2RGB的SSE高级优化我讲了原理和方法,因为我时间有限就不提供这个函数源码了,速度测试结果如下:
优化方式 图像分辨率 速度
RGB2YUV C语言实现 4272*2848 45.57ms
RGB2YUV SSE初级优化 4272*2848 17.06ms
RGB2YUV SSE高级优化 4272*2848 13.52ms
YUV2RGB C语言实现 4272*2848 81.05ms
YUV2RGB SSE初级优化 4272*2848 14.95ms
优化方式 图像分辨率 插值后大小 速度
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 就好。

About

opencv

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 78.2%
  • C 21.8%