图像平滑是图像处理和计算机视觉中最常用、最基本的操作
其目的主要是去除图像中的噪声,因为图像平滑是低通滤波,处理过程中往往会使得图像边缘模糊化,因此又称为模糊处理
图像平滑的基本原理是,将噪声所在像素点的像素值处理为其周围临近像素点的值的近似值
滤波相当于筛选器,只允许指定范围内的数据通过筛选,其余数据即为噪点,应当舍弃
常见的滤波方法:
图像平滑的方法很多,包括均值滤波、高斯滤波、方框滤波、中值滤波、双边滤波等
示例:高斯滤波
高斯滤波是一种线性平滑滤波,适用于消除高斯噪声。通俗来讲,高斯滤波就是对整幅图片进行加权平均,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到
程序源码如下:
#include
using namespace cv;
int main()
{
Mat img = imread("/home/wang/opencv/demo/1.jpg",-1);
imshow("picture_before",img);
Mat img_out;
GaussianBlur(img,img_out,Size(5,5),3,3);
GaussianBlur(img_out,img_out,Size(5,5),3,3);
imshow("picture_after",img_out);
waitKey(0);
return 0;
}
程序分析:
程序编译语句:
g++ Gaussian.cpp -o Gaussian `pkg-config --cflags --libs opencv`
程序运行效果如下:
高斯模糊将正态分布用于图像处理
在计算机视觉中,计算机得到的图像信息均为矩阵,将每个像素点都替换为取周边像素的平均值
在数据上来看,该操作将数据平滑化,转换为图像效果来看,图像被模糊化
计算平均值时,范围越大,模糊效果越明显
GaussianBlur函数参数详解:
函数原型如下:
CV_EXPORTS_W void GaussianBlur( InputArray src, OutputArray dst, Size ksize,
double sigmaX, double sigmaY = 0,
int borderType = BORDER_DEFAULT );