优化加速的导向滤波(Guided Filter)【CUDA】【OpenCV】

原理可以参看:白马负金羁的《导向滤波(Guided Filter)的解析与实现》 ,写得很清晰透彻

我实现的效果如下

原图(894*1080,由于笔记本屏幕不够大,截图有截断)

优化加速的导向滤波(Guided Filter)【CUDA】【OpenCV】

单通道的导向滤波

优化加速的导向滤波(Guided Filter)【CUDA】【OpenCV】

1.CPU 版的 Guided Filter  和 Fast Guided Filter (缩放倍数为 2,何凯明大神加了一个 resize 就成了新算法,大神就是大神!) 的耗时(循环 100 次取平均):

优化加速的导向滤波(Guided Filter)【CUDA】【OpenCV】

 2.基于 OpenCV CUDA 编译库实现的 Guided Filter (实现了多流覆盖)的耗时

优化加速的导向滤波(Guided Filter)【CUDA】【OpenCV】

 可见 OpenCV 实现的 CUDA 函数其实性能也是有很大优化空间的。由于 GPU 开辟设备内存相当耗时,一般 GPU 内存是重用的(比如视频流),上图的时间是 Guided Filter 循环 100 次计算的平均值。


3. CUDA 加速的 Guided Filter 耗时:


优化加速的导向滤波(Guided Filter)【CUDA】【OpenCV】

同上,所以内存开辟的时间只记录一次,Guided Filter 是循环 100 次计算的平均值。可见设备内存开辟的时间还是很多的,所以如果只处理少量图片,GPU 并不占优势,适合采用 CPU 版的 Fast Guided Filter 。


如果引导图像和原图是同一张图的话,还可以尽一步减少计算时间,避免重复计算。


上一篇:轻松搞定一切的PS毛发的抠图技巧


下一篇:MySQL调优