OpenCV CUDA模块图像过滤------用于创建一个最大值盒式滤波器(Max Box Filter)函数createBoxMaxFilter()

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

算法描述

createBoxMaxFilter()函数创建的是一个 最大值滤波器(Maximum Filter),它对图像中每个像素邻域内的像素值取最大值。常用于:

  • 去除暗噪声(dark noise)
  • 提取局部最大值区域
  • 膨胀操作的替代方法之一

与 cv::cuda::createBoxFilter 类似,但它的卷积核不是加权平均,而是取最大值。

函数原型

cpp 复制代码
Ptr<Filter> cv::cuda::createBoxMaxFilter 	
(
 		int  	srcType,
 		Size  	ksize,
		Point  	anchor = Point(-1, -1),
		int  	borderMode = BORDER_DEFAULT,
		Scalar  	borderVal = Scalar::all(0) 
	) 		

参数

  • srcType 输入/输出图像类型。仅支持 CV_8UC1 和 CV_8UC4。

  • ksize 核大小(卷积核的宽度和高度)。

  • anchor 锚点。默认值 (-1) 表示锚点位于卷积核中心。

  • borderMode 像素外推方法(边界填充方式)。详细信息,请参见 borderInterpolate。

  • borderVal 默认边界值

代码示例

cpp 复制代码
#include <opencv2/cudafilters.hpp>
#include <opencv2/cudaimgproc.hpp>
#include <opencv2/opencv.hpp>

int main()
{
    // 读取图像
    cv::Mat h_img = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png", cv::IMREAD_GRAYSCALE );  // 确保是单通道图像
    if ( h_img.empty() )
    {
        std::cerr << "Error: Image not found!" << std::endl;
        return -1;
    }

    // 上传图像到 GPU
    cv::cuda::GpuMat d_src, d_dst;
    d_src.upload( h_img );

    // 创建 Max Box Filter(支持 CV_8UC1 或 CV_32FC1)
    cv::Ptr< cv::cuda::Filter > maxFilter = cv::cuda::createBoxMaxFilter( d_src.type(),         // 输入图像类型
                                                                          cv::Size( 5, 5 ),     // 卷积核大小
                                                                          cv::Point( -1, -1 ),  // 锚点默认为中心
                                                                          cv::BORDER_DEFAULT    // 默认边界处理
    );

    // 应用滤波器
    maxFilter->apply( d_src, d_dst );

    // 下载结果回 CPU
    cv::Mat h_dst;
    d_dst.download( h_dst );

    // 显示结果
    cv::imshow( "Original", h_img );
    cv::imshow( "Max Filtered", h_dst );
    cv::waitKey( 0 );

    return 0;
}

运行结果

相关推荐
沃达德软件7 分钟前
图像处理与复原技术
图像处理·人工智能·深度学习·神经网络·目标检测·计算机视觉·目标跟踪
坐在地上想成仙8 分钟前
人工智能商业落地思考:从人类行为图谱到技术栈映射
人工智能
zhangfeng11339 分钟前
ModelScope(魔搭社区)介绍与模型微调全指南 中国版Hugging Face GPU租借平台 一站式开源模型社区与服务平台
人工智能·开源
PaperRed ai写作降重助手9 分钟前
如何选择适合自己的AI智能降重写作软件
人工智能·深度学习·aigc·ai写作·论文降重·论文查重·智能降重
友思特 智能感知11 分钟前
友思特案例 | 金属行业视觉检测案例三:彩涂钢板表面纹理检测
人工智能·视觉检测
李永奉19 分钟前
杰理芯片SDK开发-ENC双麦降噪配置/调试教程
人工智能·单片机·嵌入式硬件·物联网·语音识别
Dfreedom.28 分钟前
图像滤波:非线性滤波与边缘保留技术
图像处理·人工智能·opencv·计算机视觉·非线性滤波·图像滤波
小白跃升坊39 分钟前
基于1Panel的AI运维
linux·运维·人工智能·ai大模型·教学·ai agent
kicikng43 分钟前
走在智能体前沿:智能体来了(西南总部)的AI Agent指挥官与AI调度官实践
人工智能·系统架构·智能体协作·ai agent指挥官·ai调度官·应用层ai
Dfreedom.1 小时前
开运算与闭运算:图像形态学中的“清道夫”与“修复匠”
图像处理·python·opencv·开运算·闭运算