首先介绍一下模板卷积:
模板卷积是数字图像处理常用的一种邻域运算方式,模板卷积可以实现图像平滑、图像锐化、边缘检测等功能。
模板可以是一小幅图像,也可以是一个滤波器。
模板卷积的基本步骤:
(1)模板在输入图像上移动,让模板中心依次与输入图像的每个像素重合;
(2)模板系数与跟模板重合的输入图像的对应像素相乘,再将乘积相加;
(3)把结果赋予输图像,其像素位置与模板中心在输入图像上的位置一致;
具体过程如下图所示(原图像进行了边界扩展,目的是保持卷积后图像与原图像大小相同):
在图像模糊中出现的滤波器多数为线性核,也就是说目标图像(x,y处)的像素值由原图像的(x,y)处及其周围的像素点的的值加权相加而来.这个过程可以用下面的方程表示:
kernel即为滤波器(核),anchor为核的锚点,一般都位于核的中心。
均值滤波
均值滤波,即目标图像中的每个值都是源图像中相应位置一个窗口(核)中像素的平均值。
API介绍如下:
代码展示:
#include "pch.h"
#include <iostream>
#include "opencv2/opencv.hpp"
using namespace std;
using namespace cv;
int main()
{
Mat src = imread("F:\\visual studio\\Image\\women1.jpg");
if (src.empty())
{
cout << "Can't load the image" << endl;
return -1;
}
imshow("src", src);
Mat dst1;
blur(src, dst1, Size(5, 5), Point(-1, -1));
imshow("dst", dst1);
Mat dst2;
blur(src, dst2, Size(1, 25), Point(-1, -1));
imshow("dst2", dst2);
Mat dst3;
blur(src, dst3, Size(25, 1), Point(-1, -1));
imshow("dst3", dst3);
waitKey(0);
}
效果如图:
优点:算法简单,计算速度快;
缺点:降低噪声的同时使图像产生模糊,特别是景物的边缘和细节部分,像素强度变化变得平缓。