数字图像处理(10):图像复原(去噪,C语言)

1. 复原被加性高斯噪声污染的图像

在数字图像中的高斯噪声的主要来源出现在采集期间。 由于不良照明和/或高温引起的传感器噪声。在数字图像处理中,可以使用空间滤波器来降低高斯噪声,但是当对图像进行平滑时,结果可能导致精细缩放的图像边缘和细节的模糊,因为它们也对应于被阻挡的高频。

用于噪声去除的常规空间滤波技术包括:平均(卷积)滤波,中值滤波和高斯平滑。
在这里插入图片描述

分析:对于加性高斯噪声污染的图像分别用了3x3算术均值滤波,3x3几何均值滤波,3x3中值滤波。可以看到几何均值滤波相对于算术均值滤波要更清晰一些。相比而言,中值滤波效果不如均值滤波效果好(在高斯噪声污染情况下)。

2. 复原被椒盐噪声污染的图像

椒盐噪声也称为脉冲噪声,是图像中经常见到的一种噪声,它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有)。盐和胡椒噪声的成因可能是影像讯号受到突如其来的强烈干扰而产生、类比数位转换器或位元传输错误等。例如失效的感应器导致像素值为最小值,饱和的感应器导致像素值为最大值。
在这里插入图片描述

分析:对于椒盐噪声污染的图像分别用了3x3算术均值滤波,3x3几何均值滤波,3x3中值滤波。可以看到对于椒盐噪声来讲,中值滤波是三个当中最好的选择。其中几何均值滤波效果最差,不适合用于此种情况。

3. 代码实现

平台:vs2015
语言:C语言
3x3算术均值滤波关键代码
在这里插入图片描述

3x3几何均值滤波关键代码
在这里插入图片描述

3x3中值滤波关键代码
在这里插入图片描述

遇到的问题

在进行3x3几何均值滤波的时候,得到的输出图像是这样的
在这里插入图片描述

经检查,打印其中的累乘结果,发现是因为是溢出了(用的double型)。

想了想也是,8个0~255的数相乘,结果是挺大的。于是对像素的值进行了归一化操作。

归一化操作后能出结果,但结果也不对——
在这里插入图片描述
最后发现是由于改成归一化后用了*=进行累乘。却忘记了赋值1 的操作。导致当有一个计算结果是0的话,后面的计算结果全是零。
在这里插入图片描述

添加之后,问题解决。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章