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

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

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

我实现的效果如下

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

image.png

单通道的导向滤波

image.png

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

image.png

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

image.png

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


3. CUDA 加速的 Guided Filter 耗时:


image.png

image.png

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


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


目录
相关文章
|
4月前
|
计算机视觉
OpenCV(二十四):可分离滤波
OpenCV(二十四):可分离滤波
122 0
|
4月前
|
计算机视觉
OpenCV(二十三):中值滤波
OpenCV(二十三):中值滤波
81 0
|
11月前
|
计算机视觉
openCV的中值滤波
openCV的中值滤波
32 0
|
3月前
|
资源调度 算法 计算机视觉
【Qt&OpenCV 图像平滑/滤波处理 -- Blur/Gaussian/Median/Bilateral】
【Qt&OpenCV 图像平滑/滤波处理 -- Blur/Gaussian/Median/Bilateral】
47 0
|
3月前
|
机器学习/深度学习 并行计算 计算机视觉
【入坑指南】| OpenCV4.8 + CUDA + 扩展模块支持编译
【入坑指南】| OpenCV4.8 + CUDA + 扩展模块支持编译
407 0
|
4月前
|
资源调度 API 计算机视觉
【OpenCV】—非线性滤波:中值滤波、双边滤波
【OpenCV】—非线性滤波:中值滤波、双边滤波
|
4月前
|
编解码 计算机视觉 C++
【OpenCV】—形态学滤波(1):腐蚀与膨胀
【OpenCV】—形态学滤波(1):腐蚀与膨胀
|
4月前
|
存储 编解码 资源调度
【OpenCV】—线性滤波:方框滤波、均值滤波、高斯滤波
【OpenCV】—线性滤波:方框滤波、均值滤波、高斯滤波
186 2
|
4月前
|
API 计算机视觉
【OpenCV】形态学滤波(2):开运算、形态学梯度、顶帽、黑帽
【OpenCV】形态学滤波(2):开运算、形态学梯度、顶帽、黑帽
|
11月前
|
计算机视觉
OpenCV-中值滤波cv::medianBlur
OpenCV-中值滤波cv::medianBlur