欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > OpenCV CUDA模块图像过滤------用于创建一个最小值盒式滤波器(Minimum Box Filter)函数createBoxMinFilter()

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

2025/5/24 1:56:24 来源:https://blog.csdn.net/jndingxin/article/details/148138283  浏览:    关键词:OpenCV CUDA模块图像过滤------用于创建一个最小值盒式滤波器(Minimum Box Filter)函数createBoxMinFilter()
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

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

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

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

参数

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

返回值

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

代码示例

#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;}// 上传到 GPUcv::cuda::GpuMat d_src, d_dst;d_src.upload( h_img );// 创建 Min Box Filtercv::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 );// 下载结果回 CPUcv::Mat h_dst;d_dst.download( h_dst );// 显示结果cv::imshow( "Original", h_img );cv::imshow( "Min Filtered", h_dst );cv::waitKey( 0 );return 0;
}

运行结果

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词