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

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

算法描述

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

  • 去除亮噪声(light noise)
  • 提取局部最小值区域
  • 腐蚀操作的替代方法之一

与 cv::cuda::createBoxMaxFilter 类似,但它是取邻域内像素的最小值。

参数

参数名 类型 描述
srcType int 输入图像的数据类型。目前仅支持:CV_8UC1、CV_8UC4。
ksize cv::Size 卷积核大小(宽 x 高),例如 cv::Size(3, 3)。建议使用奇数尺寸以保证锚点居中。
anchor cv::Point 锚点位置,默认为 (-1, -1) 表示中心点。
borderMode int 边界填充方式,常用值:cv::BORDER_DEFAULT, cv::BORDER_CONSTANT, cv::BORDER_REPLICATE 等。
borderVal cv::Scalar 如果 borderMode == BORDER_CONSTANT,则用该值填充边界,默认为黑色(全零)。

返回值

  • 返回一个指向 cv::cuda::Filter 的智能指针 cv::Ptrcv::cuda::Filter。
  • 可通过调用其 .apply() 方法来执行滤波操作。

代码示例

cpp 复制代码
#include <opencv2/cudaimgproc.hpp>
#include <opencv2/opencv.hpp>
#include <opencv2/cudafilters.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 );

    // 创建 Min Box Filter
    cv::Ptr< cv::cuda::Filter > minFilter = cv::cuda::createBoxMinFilter( d_src.type(),         // 输入图像类型(必须是 CV_8UC1 或 CV_8UC4)
                                                                          cv::Size( 5, 5 ),     // 卷积核大小
                                                                          cv::Point( -1, -1 ),  // 锚点默认为中心
                                                                          cv::BORDER_DEFAULT    // 默认边界处理
    );

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

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

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

    return 0;
}

运行结果

相关推荐
冬奇Lab13 小时前
你的 Skill 真的好用吗?来自OpenAI的 Eval 系统化验证 Agent 技能方法论
人工智能·openai
数智工坊14 小时前
Transformer 全套逻辑:公式推导 + 原理解剖 + 逐行精读 - 划时代封神之作!
人工智能·深度学习·transformer
GreenTea14 小时前
AI 时代,工程师的不可替代性在哪里
前端·人工智能·后端
小程故事多_8014 小时前
破除迷思,Harness Engineering从来都不是时代过渡品
人工智能·架构·prompt·aigc
热爱专研AI的学妹14 小时前
Seedance 2.0(即梦 2.0)深度解析:AI 视频正式迈入导演级精准可控时代
大数据·人工智能·阿里云·音视频
Ulyanov15 小时前
用Pyglet打造AI数字猎人:从零开始的Python游戏开发与强化学习实践
开发语言·人工智能·python
lcj092466615 小时前
磁控U位管理系统与DCIM对接实现:筑牢数据中心精细化运维底座
大数据·数据库·人工智能
swipe15 小时前
用 Nest + LangChain 打造 OpenClaw 式 Agent 定时任务系统
人工智能·llm·agent
幻风_huanfeng15 小时前
人工智能之数学基础:动量梯度下降法
人工智能·机器学习·动量梯度下降法
2301_7990730216 小时前
基于 Next.js + 火山引擎 AI 的电商素材智能生成工具实战——字节跳动前端训练营成果
javascript·人工智能·火山引擎