主要内容

噪声消除

数字图像容易受到各种类型的噪声的影响。噪声是图像采集过程中的错误导致的结果,这些错误导致像素值不能反映真实场景的真实强度。有几种方法可以将噪声引入图像,具体取决于图像的创建方式。例如:

  • 如果从胶片上拍摄的照片扫描图像,胶片颗粒就是噪声源。噪声也可能是胶片损坏的结果,或者是扫描仪本身造成的。

  • 如果以数字格式直接获取图像,则数据采集机制(如CCD探测器)会引入噪声。

  • 图像数据的电子传输会引入噪声。

为了模拟上面列出的一些问题的影响,工具箱提供加噪函数,可以使用添加图像的各种噪声。本节中的示例将使用这个函数。

线性滤波去除噪声

可以使用线性滤波来消除某些类型的噪波。某些滤波器,如平均滤波器或高斯滤波器,适用于此目的。例如,平均滤波器用于从照片中去除颗粒噪声。因为每个像素被设置为其邻域中像素的平均值,所以由颗粒引起的局部变化会减少。

什么是空间域中的图像过滤?有关使用线性过滤的详细信息,请参见imfilter.

使用平均滤波器和中值滤波器去除噪声

这个例子展示了如何使用平均滤波器和中值滤波器从图像中去除盐和胡椒噪声,以便对结果进行比较。这两种滤波都将输出像素的值设置为对应输入像素周围的邻域像素值的平均值。然而,中值滤波的输出像素的值是由邻域像素的中值决定的,而不是平均值。中位数对极端值(称为离群值)的敏感度要比均值低得多。中值滤波因此能够在不降低图像清晰度的情况下更好地去除这些异常值。

注:中值过滤是顺序统计过滤的一种特殊情况,也称为秩过滤。有关订单统计过滤的信息,请参阅参考页ordfilt2功能。

将图像读入工作区并显示它。

I=imread(“8.tif”);图imshow(我)

图中包含一个轴对象。axes对象包含类型为image的对象。

对于本例,请向图像添加椒盐噪波。这种类型的噪声由设置为黑色或白色(数据范围的极端值)的随机像素组成。

J=imnoise(I,“盐和胡椒”,0.02); 图3(J)

图中包含一个轴对象。axes对象包含类型为image的对象。

过滤噪声图像,J,并显示结果。该示例使用3乘3的邻域。

K平均值=过滤器2(F专用(“平均”J)/255;图imshow(平均值)

图中包含一个轴对象。axes对象包含类型为image的对象。

现在使用中值滤波器来过滤有噪声的图像,J. 该示例还使用了3乘3的邻域。并排显示两个过滤后的图像以进行比较。注意medfilt2能更好地去除噪声,使硬币的边缘不那么模糊。

Kmedian = medfilt2 (J);imshowpair (Kaverage Kmedian,“蒙太奇”)

图中包含一个轴对象。axes对象包含类型为image的对象。

通过自适应滤波去除噪声

这个例子展示了如何使用wiener2函数自适应地对图像应用维纳滤波器(一种线性滤波器)。维纳滤波器会根据图像的局部方差来调整自身。当方差很大时,wiener2执行少量平滑。如果差异很小,wiener2执行更平滑。

这种方法通常比线性滤波产生更好的结果。自适应滤波器比可比较的线性滤波器更具选择性,可以保留图像的边缘和其他高频部分。此外,没有设计任务;这个wiener2函数处理所有初步计算并实现输入图像的过滤器。wiener2然而,与线性滤波相比,它需要更多的计算时间。

wiener2当噪波为恒功率(“白色”)加性噪波(如高斯噪波)时效果最佳。下面的例子适用wiener2添加高斯噪声的土星图像。

将图像读入工作区。

RGB = imread (“saturn.png”);

将图像从truecolor转换为灰度。

I = im2gray (RGB);

向图像添加高斯噪声

J=imnoise(I,“高斯”, 0, 0.025);

显示有噪声的图像。因为图像很大,所以只显示图像的一部分。

imshow(J(600:1000,1:600));标题(“添加高斯噪声的部分图像”);

图中包含一个轴对象。标题为“添加高斯噪声的图像部分”的轴对象包含一个类型为“图像”的对象。

消除噪音使用wiener2功能。

K=wiener2(J[5]);

显示处理后的图像。因为图像很大,所以只显示图像的一部分。

图imshow (K (600:1000 1:6));标题('通过维纳滤波器去除噪声的图像部分');

图中包含一个轴对象。标题为“Wiener Filter去除噪点的图像部分”的轴对象包含一个类型为“Image”的对象。

另见

|||||

相关的话题