数字图像处理(七)均值滤波

题目:使用均值滤波器对图像进行滤波。
采用国际标准测试图像Lena。
3*3的均值滤波器定义如下:
在这里插入图片描述
c++代码:

cv::Mat image = cv::imread("Lena.bmp");
    cv::Mat src(image.size(),CV_8UC1);
    cv::cvtColor(image, src, CV_BGR2GRAY);

    cv::Mat dst = src.clone();

    double v = 0;
    int r = 3;

    for (int row = 1; row < dst.rows-1; row++)
    {
    
    
        for (int col = 1; col < dst.cols-1; col++)
        {
    
    
            v = 0;
            for (int dy = -1; dy < r - 1; dy++)
            {
    
    
                for (int dx = -1; dx < r - 1; dx++)
                {
    
    
                    v = v + dst.at<uchar>(row + dy, col + dx);
                }
            }
            dst.at<uchar>(row, col) = uchar(v / (r*r));
        }
    }

结果展示:
在这里插入图片描述
均值滤波器的特点:
计算均值会将图像中的边缘信息和特征信息模糊掉,丢失很多特征,使得景物的清晰度降低,画面变得模糊。对于高斯噪声,当滤波器的长度足够大时,有非常好的噪声抑制效果。
参考链接:https://github.com/gzr2017/ImageProcessing100Wen/blob/master/Question_01_10/answers_cpp/answer_7.cpp

猜你喜欢

转载自blog.csdn.net/qq_41596730/article/details/126993289