模糊原理:

  1. 模糊原理和上几节说的图像掩模矩阵有很多相似的地方,都是拿一个矩阵(3X3, 5X5)等,和原图从左向右从上到下分别进行卷积,将卷积值最后赋值个当前卷积的中心像素。
  2. 那么其最关键的参数,也就在于矩阵的大小和矩阵的值,我们通常称矩阵为卷积核。
  3. 模糊操作的重要原因之一也是为了给图像预处理时降低噪声。
  4. opencv 图像白平衡 opencv图像模糊处理_opencv 图像白平衡


  5. opencv 图像白平衡 opencv图像模糊处理_卷积_02


  6. opencv 图像白平衡 opencv图像模糊处理_opencv 图像白平衡_03

均值滤波

  • 均值滤波也称为线性滤波,其采用的主要方法为邻域平均法。线性滤波的基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点(x,y),选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度g(x,y),即g(x,y)=1/m ∑f(x,y) m为该模板中包含当前像素在内的像素总个数。
  • 不足之处
    均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。

高斯滤波

通常用它来减少图像噪声以及降低细节层次。这种模糊技术生成的图像,其视觉效果就像是经过一个半透明屏幕在观察图像,这与镜头焦外成像效果散景以及普通照明阴影中的效果都明显不同。高斯平滑也用于计算机视觉算法中的预先处理阶段,以增强图像在不同比例大小下的图像效果(参见尺度空间表示以及尺度空间实现)。 从数学的角度来看,图像的高斯模糊过程就是图像与正态分布做卷积。由于正态分布又叫作高斯分布,所以这项技术就叫作高斯模糊。图像与圆形方框模糊做卷积将会生成更加精确的焦外成像效果。由于高斯函数的傅立叶变换是另外一个高斯函数,所以高斯模糊对于图像来说就是一个低通滤波器。

API

opencv 图像白平衡 opencv图像模糊处理_卷积_04

高斯模糊

opencv 图像白平衡 opencv图像模糊处理_均值滤波_05


关于参数ksize:

  • ksize.width和ksize.height可以不同
    取值有2种情况:
  1. 可以是正的奇数
  2. 也可以是0,此时它们的值会自动由sigma进行计算
  • 关于参数sigmaX和sigmaY:
  1. sigmaY=0时,其值自动由sigmaX确定(sigmaY=sigmaX);
  2. sigmaY=sigmaX=0时,它们的值将由ksize.width和ksize.height自动确定;

均值模糊

void blur( InputArray src, OutputArray dst,
                        Size ksize, Point anchor = Point(-1,-1),
                        int borderType = BORDER_DEFAULT );

举例

int main() {
	Mat src;
	src = imread("D:\\test\\first.png");
	if (src.empty()) {
		cerr << "open error" << endl;
		return -1;
	}
	imshow("src", src);
	Mat dst1, dst2;
	//dst1 = Mat::zeros(src.size(), src.type());
	//dst1 = Mat::zeros(src.size(), src.type());
	blur(src, dst1, Size(11, 5), Point(-1, -1));
	imshow("blur", dst1);

	GaussianBlur(src, dst2, Size(5, 5), 11, 11);
	imshow("GaussianBlur", dst2);
	waitKey(0);
	return 0;

}

opencv 图像白平衡 opencv图像模糊处理_均值滤波_06