欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

OpenCV学习第九篇:图像模糊(卷积)

程序员文章站 2022-07-15 23:31:22
...

模糊原理:
Smooth/Blur是图像处理中最简单和常用的操作之一
使用该操作的原因之一就为了给图像预处理时候减低噪声
使用Smooth/Blur操作其背后是数学的卷积计算
通常这些卷积算子计算都是线性操作,所以又叫线性滤波
OpenCV学习第九篇:图像模糊(卷积)
假设6x6的图像像素点矩阵
黄色3x3区域代表算子

卷积过程:
6x6上面是个3x3的窗口,从左向右,从上向下移动,黄色的每个像素点值之和取平均值赋给中心红色像素作为它卷积处理之后新的像素值,每次移动一个像素格!

均值模糊:
-blur(Mat src,Mat dst,Size(xradius,yradius),Point(-1,-1));
高斯模糊:
-GaussianBlur(Mat src,Mat dst,Size(11,11),sigmax,sigmay);
其中Size(x,y),x,y必须是正数而且是奇数

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main(int argc,char** argv) {
    Mat src, dst;
    src = imread("F:/识图/645-140GG51041.JPG");
    if (src.empty()) {
        printf("could not found image!");
        return -1;
    }
    char input_title[] = "input image";
    char output_title[] = "output image";
    namedWindow(input_title, CV_WINDOW_AUTOSIZE);
    namedWindow(output_title, CV_WINDOW_AUTOSIZE);
    imshow(input_title, src);
    //均值模糊
    blur(src, dst, Size(15, 15), Point(-1, -1));
    Mat gblur;
    //高斯模糊
    GaussianBlur(src, gblur, Size(11, 11), 11, 11);
    imshow("Gaussian blur", gblur);
    imshow(output_title, dst);
    waitKey(0);
    return 0;
}

这里是效果:
OpenCV学习第九篇:图像模糊(卷积)