一.什么是图像中噪声?

图像中噪声是指由于成像传感器噪声、相片颗粒噪声、图片在传输过程中的通道传输误差等因素会使图片上出现一些随机的、离散的、孤立的像素点,这就是图像噪声。图像噪声在视觉上通常与它们相邻的像素明显不同,例如黑区域中的白点、白区域中的黑点等。

噪声对人的影响噪声可以理解为“ 妨碍人们感觉器官对所接收的信源信息理解的因素”。而图像中各种妨碍人们对其信息接受的因素即可称为图像噪声 。噪声在理论上可以定义为“不可预测,只能用概率统计方法来认识的随机误差”。因此将图像噪声看成是多维随机过程是合适的,因而描述噪声的方法完全可以借用随机过程的描述,即用其概率分布函数和概率密度分布函数。

图片噪点检测Java 图片的噪点什么意思_图片噪点检测Java

二.什么是高斯模糊

高斯模糊(英语:Gaussian Blur),也叫高斯平滑,是在Adobe Photoshop、GIMP以及Paint.NET等图像处理软件中广泛使用的处理效果,通常用它来减少图像噪声以及降低细节层次

 

三.高斯模糊算法GaussianBlur原理与实践

模糊的原理可以理解为将每一个像素点设置成它周边领域内像素的均值,均值可以是平均值、中值等等,比如以下示意图。

图片噪点检测Java 图片的噪点什么意思_像素点_02

左图中心像素点值为2,周围3×3领域内的像素点都为1,取平均值为1,将其设置为中心像素点的值,成为右图的形式。

这种简单平均进行模糊显然是不合理的,因为实际上一幅图像基本都是连续的,这也意味着越相邻的像素点之间的关系越密切,权重应该越高,越疏远的像素点之间的关系也越疏远,权重应该越低。因此我们应该使用加权平均的方法进行模糊。

正态分布是一种钟形曲线,那么越接近中心,取值越大,反之越小。

图片噪点检测Java 图片的噪点什么意思_像素点_03

 

由于图像是二维的,高斯模糊则将二维正态分布作为权重分配的模式

图片噪点检测Java 图片的噪点什么意思_二维_04

 

将中心点作为原点,所以二维正态分布的密度函数,即二维高斯函数公式如下:

 

图片噪点检测Java 图片的噪点什么意思_权重_05

 

那么由此即可计算每一个像素点的权重了。假设σ=1.5,模糊半径为1,那么此时权重矩阵如下:

图片噪点检测Java 图片的噪点什么意思_图片噪点检测Java_06

 

这9个点的权重相加后不为1,做归一化处理,即每个权重/9个权重的和作为该像素的新权重,可以得到下图所示的权重矩阵:

图片噪点检测Java 图片的噪点什么意思_像素点_07

然后进行模糊计算:假设中心像素值为25,其周围模糊半径为1的的像素值如下图所示:

图片噪点检测Java 图片的噪点什么意思_像素点_08

那么每个像素点乘以对应的权重值,得到下图所示的矩阵:

图片噪点检测Java 图片的噪点什么意思_像素点_09

 

 

再将这个9个数据相加,作为中心像素点的值。如果原图是RGB图像,则将三个通道的值分别进行模糊计算即可。

对于边界上的像素点,进行模糊时,只需将已有的一侧的点拷贝到另一侧,构成完成的矩阵即可。

 

C++代码

代码还是非常简单,直接调用即可。而关于该算法的原理还是非常值得借鉴。

#include <iostream>
using namespace std;
using namespace cv;


int main()
{
	Mat image = imread("building.jpg");
	Mat out ;	
	GaussianBlur(image,out,Size(3,3),4);	
	imshow("GaussianBlur",out);
	//imwrite("blur.jpg",out);
	waitKey();
	return 0;
}

  

 

图片噪点检测Java 图片的噪点什么意思_图片噪点检测Java_10

 

 高斯模糊处理后

 

图片噪点检测Java 图片的噪点什么意思_权重_11

可以看到处理之后的图片,过渡很自然,没有明显的突兀和噪点