Java教程

【16】关于高斯 中值 和均值滤波的函数

本文主要是介绍【16】关于高斯 中值 和均值滤波的函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

均值卷积:

void blur( InputArray    src, 
           OutputArray   dst,
           Size          ksize,                         // 卷积窗口大小
           Point         anchor = Point(-1,-1),         // 锚点(即处理的像素位于kernel的位置)
           int           borderType = BORDER_DEFAULT    //边缘插值方法
         );

高斯卷积:

void GaussianBlur( InputArray   src, 
                   OutputArray  dst, 
                   Size         ksize,      // 卷积窗口大小
                   double       sigmaX,     // X方向卷积系数
                   double       sigmaY = 0, // Y方向卷积系数
                   int          borderType = BORDER_DEFAULT  //边缘插值方法
                 );
enum BorderTypes {
    BORDER_CONSTANT    = 0,     // `iiiiii|abcdefgh|iiiiiii`  with some specified `i`
    BORDER_REPLICATE   = 1,     // `aaaaaa|abcdefgh|hhhhhhh`
    BORDER_REFLECT     = 2,     // `fedcba|abcdefgh|hgfedcb`
    BORDER_WRAP        = 3,     // `cdefgh|abcdefgh|abcdefg`
    BORDER_REFLECT_101 = 4,     // `gfedcb|abcdefgh|gfedcba`
    BORDER_TRANSPARENT = 5,     // `uvwxyz|abcdefgh|ijklmno`
 
    BORDER_REFLECT101  = BORDER_REFLECT_101, // same as BORDER_REFLECT_101
    BORDER_DEFAULT     = BORDER_REFLECT_101, // same as BORDER_REFLECT_101
    BORDER_ISOLATED    = 16 // do not look outside of ROI
};

中值滤波:

原型:void medianBlur( InputArray src, OutputArray dst, int ksize );

参数1:函数的输入,要1,3或4通道的Mat类型的图像

参数2:目标图像

参数3:孔径的线性尺寸,必须大于1.、必须为奇数,越大,滤布越强。

 参考:
https://blog.csdn.net/weixin_34409895/article/details/112474924

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
    char input;
    Mat Origin = imread("0002.jpg");
    if (!Origin.data)
    {
        cout << "ERROR" << endl;
        return -1;
    }
    Mat OutPut = Mat(Origin.size(), Origin.type());
    namedWindow("OUTPUT", WINDOW_FREERATIO);
    imshow("origin", Origin);

    while (1)
    {
        input = waitKey(0);
        switch (input)
        {
        case 'a':
            medianBlur(Origin, OutPut, 7);
            //最后一个参数为奇数,越大越强
            break;
        case 'b':
            GaussianBlur(Origin, OutPut, Size(5, 5), 15, 10, BORDER_DEFAULT);
            break;
        case 'c':
            blur(Origin,OutPut, Size(5, 5), Point(-1, -1), BORDER_DEFAULT);
            break;
        case 27:
            return 0;
        }
         imshow("OUTPUT", OutPut);
    }

    waitKey(0);
    return 0;
}

具体计算等学了计算机视觉再回来补充。

这篇关于【16】关于高斯 中值 和均值滤波的函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!