Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

opencv

NotificationsYou must be signed in to change notification settings

BBuf/Image-processing-algorithm-Speed

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

speed_histogram_algorithm_framework

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

resources

  • SSE优化相关的资源。

PC的CPU为I5-3230,64位。

OpenCV版本为3.4.0

  • sse_implementation_of_common_functions_in_image_processing.cpp 多个图像处理中常用函数的SSE实现。
  • speed_rgb2gray_sse.cpp 使用sse加速RGB和灰度图转换算法,相比于原始实现有接近5倍加速。算法原理:https://mp.weixin.qq.com/s/SagVQ5gfXWWA7NATv-zvBQ 速度测试结果如下:

测试CPU型号:Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz

分辨率优化循环次数速度
4032x3024原始实现100012.139ms
4032x3024第一版优化(float->INT)10007.629ms
4032x3024OpenCV 自带函数10004.287ms
4032x3024第二版优化(手动4路并行)100010.528ms
4032x3024第三版优化(OpenMP4线程)10007.632ms
4032x3024第四版优化(SSE优化,一次处理12个像素)10005.579ms
4032x3024第五版优化(SSE优化,一次处理15个像素)10005.843ms
4032x3024第六版优化(AVX2优化,一次处理10个像素)10003.576ms
4032x3024第七版优化(AVX2优化+std::async)10002.626ms
分辨率优化循环次数速度
4032x3024原始实现100115.36ms
4032x3024第一版优化10062.43ms
4032x3024第二版优化(4线程)10028.89ms
4032x3024第三版优化(SSE)10012.69ms
分辨率算法优化循环次数速度
4032x3024普通实现1000126.54 ms
4032x3024Float->INT+查表法100081.62 ms
4032x3024SSE优化版本1100034.95 ms
4032x3024SSE优化版本2100028.87 ms
4032x3024AVX2优化版本1100015.42 ms
4032x3024AVX2优化+std::async10005.69 ms
分辨率算法优化循环次数速度
4272x2848普通实现100041.40ms
4272x2848OpenMP 4线程100036.54ms
4272x2848SSE第一版10006.77ms
4272x2848SSE第二版(std::async)10004.73ms
分辨率算法优化循环次数速度
4032x3024普通实现1000150.58ms
4032x3024去掉浮点数,除法用位运算代替100076.70ms
4032x3024OpenMP 4线程100050.48ms
4032x3024普通SSE向量化100048.92ms
4032x3024_mm_madd_epi16二次优化100033.04ms
4032x3024SSE+4线程100023.70ms
分辨率算法优化循环次数速度
4032x3024普通实现108293.79 ms
4032x3024逻辑优化,更好的流水1083.75 ms
4032x3024SSE优化1011.93 ms
4032x3024AVX优化109.32 ms

优化方式图像分辨率速度
C语言普通实现+单线程4032*3024290.43ms
SSE优化+单线程4032*3024265.96ms
优化方式图像分辨率速度
C语言实现+单线程4032*302466.66ms
C语言实现+4线程4032*302465.34ms
SSE优化+单线程4032*302466.10ms
SSE优化+4线程4032*302466.20ms
  • 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*284879445.90ms
SSE优化+单线程4272*284872234.55ms
C语言实现+单线程4272*2848914468.76ms
SSE优化+单线程4272*284892221.68ms
C语言实现+单线程4272*28481123069.10ms
SSE优化+单线程4272*2848112180.95ms
优化方式图像分辨率半径速度
C语言实现+单线程4272*284811163.16ms
SSE优化+单线程4272*284811123.83ms
C语言实现+单线程4272*284821167.81ms
SSE优化+单线程4272*284821126.98ms
C语言实现+单线程4272*284831168.62ms
SSE优化+单线程4272*284831126.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*28487206.00ms
SSE优化+单线程4272*2848757.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 就好。

About

opencv

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp