当前位置: 首页 > news >正文

OpenCV CUDA模块图像处理------双边滤波的GPU版本函数bilateralFilter()

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

该函数在 GPU 上执行双边滤波操作,是一种非线性平滑滤波器,能够在 保留边缘的同时去除噪声。

函数原型

void cv::cuda::bilateralFilter 	
(InputArray  	src,OutputArray  	dst,int  	kernel_size,float  	sigma_color,float  	sigma_spatial,int  	borderMode = BORDER_DEFAULT,Stream &  	stream = Stream::Null() 
) 		

参数

  • src 源图像。支持的条件为:通道数不等于 2,且图像深度不能是 CV_8S、CV_32S 和 CV_64F。

  • dst 目标图像(输出图像)。

  • kernel_size 滤波核窗口大小。

  • sigma_color 颜色空间中的滤波参数(标准差),用于控制颜色差异的影响程度。

  • sigma_spatial 坐标空间中的滤波参数(标准差),用于控制空间距离的影响程度。

  • borderMode 边界类型。具体细节请参见 borderInterpolate 函数。目前支持的边界模式包括:

    • BORDER_REFLECT101
    • BORDER_REPLICATE
    • BORDER_CONSTANT
    • BORDER_REFLECT 和 BORDER_WRAP
  • stream 用于异步执行的流(Stream)。若使用默认值 Stream::Null(),则函数为同步执行。

代码示例

#include <iostream>
#include <opencv2/cudaimgproc.hpp>
#include <opencv2/opencv.hpp>int main()
{// Step 1: 读取图像cv::Mat h_img = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png", cv::IMREAD_COLOR );if ( h_img.empty() ){std::cerr << "Failed to load image!" << std::endl;return -1;}// Step 2: 将图像上传到 GPUcv::cuda::GpuMat d_img, d_dst;d_img.upload( h_img );// Step 3: 执行双边滤波int kernel_size     = 5;float sigma_color   = 25.0f;float sigma_spatial = 30.0f;int borderMode      = cv::BORDER_DEFAULT;cv::cuda::bilateralFilter( d_img, d_dst, kernel_size, sigma_color, sigma_spatial, borderMode );// Step 4: 下载结果并显示cv::Mat h_dst;d_dst.download( h_dst );cv::imshow( "Original", h_img );cv::imshow( "Denoised (Bilateral)", h_dst );cv::waitKey( 0 );return 0;
}

运行结果

在这里插入图片描述


文章转载自:

http://s2YivauG.mddpj.cn
http://ivNhj97p.mddpj.cn
http://1yMPNYwI.mddpj.cn
http://wMgIr9Zs.mddpj.cn
http://Yv6UX1aJ.mddpj.cn
http://DL9e4bu2.mddpj.cn
http://YwPG7J84.mddpj.cn
http://5wLr8556.mddpj.cn
http://09WlErd3.mddpj.cn
http://JsiYWhTc.mddpj.cn
http://ZsvsSsgO.mddpj.cn
http://2KtyXjES.mddpj.cn
http://r1HjXccb.mddpj.cn
http://pMAEVic0.mddpj.cn
http://mWLXQDfa.mddpj.cn
http://oSGakkwI.mddpj.cn
http://sYcqO1Ml.mddpj.cn
http://OwupoLHC.mddpj.cn
http://yMVDhiBx.mddpj.cn
http://3QpnSxvh.mddpj.cn
http://jrOtDTHp.mddpj.cn
http://z8F15WWA.mddpj.cn
http://Cnagee6k.mddpj.cn
http://kPV4HlJN.mddpj.cn
http://CqFyrSWV.mddpj.cn
http://tmgLe9ub.mddpj.cn
http://v9ShhQcS.mddpj.cn
http://beg4dCYD.mddpj.cn
http://ciKdsOQc.mddpj.cn
http://c1zrLIqt.mddpj.cn
http://www.dtcms.com/a/228169.html

相关文章:

  • 结构型设计模式之Decorator(装饰器)
  • 进阶配置与优化:配置 HTTPS 以确保数据安全传输
  • C#面试问题81-100
  • HttpServletResponse 对象用来做什么?
  • (10)Fiddler抓包-Fiddler如何设置捕获Firefox浏览器的Https会话
  • 群晖 NAS 如何帮助培训学校解决文件管理难题
  • django入门-orm数据库操作
  • Java面试八股--08-数据结构和算法篇
  • 如何合理设计缓存 Key的命名规范,以避免在共享 Redis 或跨服务场景下的冲突?
  • 升级:用vue canvas画一个能源监测设备和设备的关系监测图!
  • RabbitMQ 监控与调优实战指南(二)
  • JAVA获取ES连接并查询所有数据
  • RabbitMQ如何保证消息可靠性
  • Linux 安装 JDK
  • rabbitMQ初入门
  • SpringBoot 系列之集成 RabbitMQ 实现高效流量控制
  • Deepseek/cherry studio中的Latex公式复制到word中
  • LeetCode 139. 单词拆分(Word Break) - 动态规划深度解析
  • WPS word 已有多级列表序号
  • 【从0-1的HTML】第2篇:HTML标签
  • Walle-Web:打造轻量级高效的DevOps自动化部署平台
  • 【网络安全 | 信息收集】灯塔(资产收集工具)安装教程
  • 【Oracle】视图
  • DPDK与网络协议栈
  • 第十八章 EMQX日志管理
  • ORACLE 缺失 OracleDBConsoleorcl服务导致https://xxx:port/em 不能访问
  • 基于QwenAgent解锁Qwen3无思考高效模式:vLLM部署实战与Ollama模板定制
  • 基于SDN环境下的DDoS异常攻击的检测与缓解
  • Matlab回归预测大合集又更新啦!新增2种高斯过程回归预测模型,已更新41个模型!性价比拉满!
  • AIGC学习笔记(9)——AI大模型开发工程师