主要内容

噪声去除

数字图像是容易发生各种类型的噪声。噪声是图像采集过程中的错误的结果,导致像素值并不能反映真实的强度的真实场景。有几种方法可以引入噪声图像,根据图像是如何创建的。例如:

  • 如果一张照片的图像扫描了电影,电影纹理噪音的来源。噪声也可以破坏电影的结果,或被引入的扫描仪本身。

  • 如果图像中直接获得一个数字格式,收集数据的机制(如CCD探测器)会引入噪声。

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

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

通过线性滤波去除噪声

您可以使用线性过滤去除某些类型的噪声。某些过滤器,如平均或高斯过滤器,适合这一目的。例如,一个平均滤波器用于消除颗粒噪声的照片。因为每个像素被设置为像素的平均值附近,当地变化造成粮食减少。

看到图像在空间域滤波是什么?关于线性过滤使用的更多信息imfilter

使用一个平均滤波和中值滤波消除噪声

这个例子展示了如何从一个图像去除椒盐噪声使用一个平均滤波和中值滤波允许的比较结果。这两种过滤设置的值输出像素的平均像素值在相应的输入像素周围的邻居。然而,中值滤波,输出像素的值是由邻域像素的中值决定的,而不是说。中位数比意味着不太敏感极端值(称为离群值)。因此,中值滤波能更好地去除这些异常值而不降低图像的清晰度。

注意:中值滤波是一种特定的顺序统计量过滤,也称为过滤。顺序统计量过滤的信息,请参见页面的引用ordfilt2函数。

图像读入工作区和显示它。

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

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

对于这个示例,加盐和胡椒噪声图像。这种类型的噪声包括随机像素被设置为黑色或白色(极端的数据范围)。

J = imnoise(我的盐和胡椒,0.02);图imshow (J)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

过滤噪声图像,J,平均过滤并显示结果。本例使用3 x3的社区。

Kaverage = filter2 (fspecial (“平均”3),J) / 255;图imshow (Kaverage)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

现在使用中值滤波过滤噪声图像,J。示例还使用了一个3×3社区。显示两个过滤图片并排比较。请注意,medfilt2才能更好的消除噪音,用更少的模糊边缘的硬币。

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

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

通过自适应滤波去除噪声

这个例子展示了如何使用wiener2函数应用维纳滤波器(一种线性滤波器)到一个图像自适应。维纳滤波器裁缝本身到本地图像方差。方差大,wiener2执行平滑。在方差很小,wiener2执行更平滑。

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

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

读取图像到工作区中。

RGB = imread (“saturn.png”);

真彩图像转换成灰度。

I = im2gray (RGB);

添加高斯噪声图像

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

嘈杂的图像显示。因为图像是相当大的,只显示图像的一部分。

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

图包含一个坐标轴对象。坐标轴对象与标题部分的图像添加高斯噪声包含一个类型的对象的形象。

消除噪音使用wiener2函数。

K = wiener2 (J [5 5]);

处理过的图像显示。因为图像是相当大的,只显示图像的一部分。

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

图包含一个坐标轴对象。坐标轴对象与标题部分的图像噪声被维纳滤波器包含一个类型的对象的形象。

另请参阅

|||||

相关的话题