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

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

算法描述

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

函数原型

cpp 复制代码
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(),则函数为同步执行。

代码示例

cpp 复制代码
#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: 将图像上传到 GPU
    cv::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;
}

运行结果

相关推荐
BEOL贝尔科技1 分钟前
样本安全存储中还有哪些重要因素需要考虑?如何设置样本安全?
人工智能·安全·数据分析
thesky12345630 分钟前
27届大模型岗面试准备(十四):多模态大模型 VLM——从视觉编码器到多模态推理的完整链路
人工智能·ai·大模型
一根数据线32 分钟前
BIM建模效率低?试试和AI工具配合使用
人工智能·ai·3d建模·3d模型·bim·ai建模·造形家
怕浪猫38 分钟前
2840亿参数只卖白菜价:DeepSeek V4 Flash 正式版上线,Agent 能力暴涨6倍
人工智能·算法
不爱记笔记38 分钟前
多模态AI如何理解视频内容?从视觉、语音到语义的三层技术拆解
人工智能·自然语言处理·nlp·音视频·多模态
让学习成为一种生活方式43 分钟前
苄基异喹啉生物碱糖基转移酶UGT74AN1晶体--Journal of Agricultural and Food Chemistry
人工智能·算法
犀利豆1 小时前
Claude code tools 研究系列(二)EnterPlanMode
人工智能·后端
sponge'1 小时前
《以场景为中心的无监督视频全景分割》论文框架讲解
人工智能·深度学习
陕西企来客1 小时前
2026年7月西安GEO优化哪家好?实战对比评估
人工智能·西安geo优化哪家好
LXT7121 小时前
2026职称申报冲刺期:ChatGPT、Claude、Kimi、雷小兔同题横评
人工智能·chatgpt