原理:
图像模糊又称为图像平滑,是图像处理中最简单和常用的操作之一,使用该操作就是为了给图像降低噪音。图像模糊处理包括:高斯模糊、均值滤波、中值滤波、双边滤波等。模糊滤波其实就是图像的卷积计算,通常这些卷积算子都是线性计算,所以又叫线性滤波。
图像的卷积计算
图1 图2 图3
卷积过程,黄色区域(包含红色方框)成为卷积核,这是一个3*3的卷积核,灰色区域(其中部分被黄色区域覆盖)是一个6*6的图像像素,卷积核上的数值与其覆盖的灰色区域上相对应位置的数值进行相乘,最后将相乘得到的9个数值求和然后替换红色方块覆盖灰色模板上的像素值(也就是替换红色对应位置的原图像的像素。这样从左到右依次移动,不停地操作替换,每次移动一个方格,直到整个图像处理完成。注意和掩膜的区分。
均值滤波
将黄色卷积核覆盖的9个像素值求平均值代替红色方框位置的像素值。
blur(src,dst,size(x,y),point(-1,-1))-第一个参数输入图像,第二个参数输出图像,第三个参数卷积核在x,y方向的大小, point默认参数值为(-1,-1)代表将均值赋给卷积核的中间位置
中值滤波
将黄色卷积核对应的9个像素值按照从小到大排序,用中间位置的数值代替红色方框位置处的像素值
medianBlur(src,dst,ksize)-第一个参数输入图像,第二个参数输出图像,第三个参数卷积核大小
高斯滤波
https://www.cnblogs.com/wangguchangqing/p/6407717.html
双边滤波
https://blog.csdn.net/qq_36359022/article/details/80198890
Robert算子
这两种都属于Robert的卷积核,即上面的黄色区域,只是处理的方向不同。
Sobel算子
这两种都属于Sobel的卷积核,即上面的黄色区域,只是处理的方向不同。
拉普拉斯算子
代码示例
均值滤波和高斯滤波
#include
#include
using namespace cv;
int main(int argc, char** argv) {
Mat src, dst;
src = imread("D:/test.png");
if (!src.data) {
printf("could not load image...\n");
return -1;
}
char input_title[] = "input image";
char output_title[] = "blur image";//均值滤波输出
namedWindow(input_title, CV_WINDOW_AUTOSIZE);
namedWindow(output_title, CV_WINDOW_AUTOSIZE);
imshow(input_title, src);
blur(src, dst, Size(11, 11), Point(-1, -1));
imshow(output_title, dst);
Mat gblur;
GaussianBlur(src, gblur, Size(11, 11), 11, 11);
imshow("gaussian blur", gblur);//高斯滤波输出
waitKey(0);
return 0;
}
从左到右依次是原图,均值滤波图,高斯滤波图
双边滤波和中值滤波
#include
#include
using namespace cv;
int main(int argc, char** argv) {
Mat src, dst;
src = imread("D:/test.png");
if (!src.data) {
printf("could not load image...\n");
return -1;
}
namedWindow("input image", CV_WINDOW_AUTOSIZE);
imshow("input image", src);
//medianBlur(src, dst, 3);//中值滤波
bilateralFilter(src, dst, 15, 100, 5);//双边滤波
namedWindow("BiBlur Filter Result", CV_WINDOW_AUTOSIZE);
imshow("BiBlur Filter Result", dst);
Mat resultImg;
Mat kernel = (Mat_(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
filter2D(dst, resultImg, -1, kernel, Point(-1, -1), 0);//掩膜处理,图像增强
imshow("Final Result", resultImg);
waitKey(0);
return 0;
}
运行结果
双边滤波图
从左到右依次是原图、双边滤波图、滤波后图像增强图
中值滤波结果图
从左到右依次是原图、中值滤波图、滤波后图像增强图