【ORB_SLAM2源码解读】图像进行高斯滤波(12)

图文讲解

// preprocess the resized image
        // mat3.copyTo(mat1); // mat1未被重新分配内存, 通过mat1可以改变mat2的内容
        // mat1 = mat3.clone(); // mat1被重新分配内存, 通过mat1不能改变mat2的内容
        Mat workingMat = mvImagePyramid[level].clone();
        cv::imwrite("workingMat.png", workingMat);
        // 高斯滤波是一种线性平滑滤波, 本质上是一种数据平滑技术(data smoothing)对于除去高斯噪声有很好的效果
        // 所谓"模糊",可以理解成每一个像素都取周边像素的平均值
        // 通常图像处理软件会提供"模糊"(blur)滤镜,使图片产生模糊的效果
        // "模糊"的算法有很多种,其中有一种叫做"高斯模糊"(Gaussian Blur)它将正态分布(又名"高斯分布")用于图像处理
        // 第一个参数: InputArray类型的src输入图像Mat类的对象该函数对通道是独立处理的且可以处理任意通道数的图像但是待处理的图像深度应该是CV_8U,CV_16U,CV_16S,CV_32F,CV_64F
        // 第二个参数: OutputArray类型的dst目标图像,需要和输入图像有相同的尺寸和类型
        // 第三个参数: Size类型的size,内核的大小,一般用Size(w,h)的写法表示,w和h可以不同,但是必须是正数和奇数,例如Size(3,3),Size(5,5)。
        // 第四个参数: double类型的sigmaX,表示高斯核函数在X方向上的标准偏差
        // 第五个参数: double类型的sigmaY,表示高斯核函数在Y方向上的标准偏差
        // 如果sigmaY是0,就将它设为sigmaX,如果sigmaX和sigmaY都是0,那么就由ksize.width和ksize.height计算出来,为了结果的正确性最好是将Size,sigmaX,sigmaY全部指定到
        // 第六个参数: int类型的borderType,用于推断图像外部像素的某种边界模式,默认值 BORDER_DEFAULT
        // 边界点的处理: 如果一个点处于边界,周边没有足够的点怎么办,一个变通方法,就是把已有的点拷贝复制到边界的另一侧的对应位置进行扩充
        GaussianBlur(workingMat, workingMat, Size(7, 7), 2, 2, BORDER_REFLECT_101);
        cv::imwrite("GaussianBlur_workingMat.png", workingMat);

视频讲解

你可能感兴趣的:(从零开始学习SLAM,ORB_SLAM2,ORB_SLAM3)