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

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

我实现的效果如下

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

优化加速的导向滤波(Guided Filter)【CUDA】【OpenCV】_第1张图片

单通道的导向滤波

优化加速的导向滤波(Guided Filter)【CUDA】【OpenCV】_第2张图片

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

 

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

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

3. CUDA 加速的 Guided Filter 耗时:

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

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

你可能感兴趣的:(CUDA,图像处理算法)