模糊处理原理:
Blur是图像处理中最简单和常用的操作之一,使用该操作的原因为了给图像预处理时候减低噪声使用,Blur操作其背后是数学的卷积计算,
通常这些卷积算子计算都是线性操作,所以又出线性虑波。
- 假设有6x6的图像像素点矩阵。
- 卷积过程:6x6上面是个3x3的窗口,从左向右,从上向下移动,黄色的每个像个像素点值之和取平均值赋给中心红色像素作为它卷积处理之后新的像素值。每次移动一个像素格。
常用的进行模糊滤波方法:均值滤波 和 高斯滤波
- 均值滤波: 就是根据周围像素点和当前像素点的平均值计算出当前点的像素值,采用的是算术平均值
- 高斯滤波:是运用高斯函数(遵循数据正态分布)用邻域内像素的加权平均值去替代模板中心像素点的值
1 均值滤波
void blur( InputArray src, OutputArray dst, Size ksize, Point anchor = Point(-1,-1), int borderType = BORDER_DEFAULT );
参数:
src :输入图片
dst :输出图片
ksize :卷积核大小(注意:必须是基数值)
anchor :锚点位置,默认值Point(-1,-1)表示锚点位于内核
borderType :边框模式用于外推图像外部的像素
代码示例:
Mat src, dst;
src = imread("./1.png");
if (!src.data) //判断图片是否加载成功!
{
std::cout << "打开图片失败!" << std::endl;
return -1;
}
dst = Mat::zeros(src.size(), src.type());
blur(src,dst,Size(7,7),Point(-1,-1));
imshow("src image", src);
imshow("dst image", dst);