OpenCV学习(27)

本文深入剖析了OpenCV中的线性滤波,包括GaussianBlur函数源码解读,以及方框滤波、均值滤波和高斯滤波的核心API函数:boxFilter、blur和GaussianBlur的详细使用方法和参数解释,帮助读者快速掌握这些滤波技术。
摘要由CSDN通过智能技术生成

图像处理(1):

线性滤波(3):线性滤波相关OpenCV源码剖析

一,OpenCV中GaussianBlur函数源码剖析;

二,线性滤波核心API函数(1.方框滤波:boxFilter函数;2. 均值滤波:blur函数;3.高斯滤波:GaussianBlur函数);

一,OpenCV中GaussianBlur函数源码剖析

下面我们看一下OpenCV 中 GaussianBlur函数源代码:
 

//-----------------------------------【GaussianBlur()函数中文注释版源代码】-----------------------
//     代码作用:封装高斯滤波的GaussianBlur()函数
//     说明:以下代码为来自于计算机开源视觉库OpenCV的官方源代码
//     OpenCV源代码版本:2.4.8
//     源码路径:…\opencv\sources\modules\imgproc\src\smooth.cpp
//     源文件中如下代码的起始行数:832行
//     中文注释by浅墨
//--------------------------------------------------------------------------------------------------------
 
void cv::GaussianBlur( InputArray _src,OutputArray _dst, Size ksize,
                   double sigma1, doublesigma2,
                   int borderType )
{
//拷贝形参Mat数据到临时变量,用于稍后的操作
   Mat src = _src.getMat();
   _dst.create( src.size(), src.type() );
Mat dst =_dst.getMat();
 
//处理边界选项不为BORDER_CONSTANT时的情况
   if( borderType != BORDER_CONSTANT )
    {
       if( src.rows == 1 )
           ksize.height = 1;
       if( src.cols == 1 )
           ksize.width = 1;
}
 
       //若ksize长宽都为1,将源图拷贝给目标图
   if( ksize.width == 1 && ksize.height == 1 )
    {
       src.copyTo(dst);
       return;
}
 
//若之前有过HAVE_TEGRA_OPTIMIZATION优化选项的定义,则执行宏体中的tegra优化版函数并返回
#ifdef HAVE_TEGRA_OPTIMIZATION
   if(sigma1 == 0 && sigma2 == 0 && tegra::gaussian(src,dst, ksize, borderType))
       return;
#endif
 
//如果HAVE_IPP&& (IPP_VERSION_MAJOR >= 7为真,则执行宏体中语句
#if defined HAVE_IPP &&(IPP_VERSION_MAJOR >= 7)
   if(src.type() == CV_32FC1 && sigma1 == sigma2 &&ksize.width == ksize.height && sigma1 != 0.0 )
    {
       IppiSize roi = {src.cols, src.rows};
       int bufSize = 0;
       ippiFilterGaussGetBufferSize_32f_C1R(roi, ksize.width, &bufSize);
       AutoBuffer<uchar> buf(bufSize+128);
       if( ippiFilterGau
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值