图像噪声
图像噪声是图像在数字化或者传输过程中受到的随机信号的干扰,在图像上出现的一些随机的,离散的,孤立的像素点。这些像素点往往会干扰人眼对图像信息的感知与接收。噪声主要有以下几类:
- 加性噪声
- 乘性噪声
- 量化噪声
- 高斯噪声
- 椒盐噪声
- …
去噪算法
常见的去噪处理有均值滤波,中值滤波,灰度最小方差均值滤波,K近邻平滑滤波,对称近邻均值滤波,西戈玛平滑滤波等。其中均值滤波和中值滤波比较基础并且具有快速、稳定等特性,在很多成熟的软件或者工具包中也集成了这些算法。滤波的思想和卷积思想类似,都涉及窗口运算,只是卷积是用一个卷积核和图像中对应位置做卷积运算,而滤波是在窗口内做相应的操作。本文主要介绍均值滤波。
均值滤波
均值滤波器是一种线性滤波器,它的输出为邻域模板内的像素的简单平均值。主要是用于图像的模糊和降噪。
均值滤波器的实现过程也比较简单:使用滤波器窗口内的像素的平均灰度值代替图像中的像素值,从而使图像“不那么尖锐”,所以均值滤波器在降低噪声的同时也模糊了图像的边缘,即过滤掉与滤波模板尺寸相比较小的像素区域的“不相关”细节。
对图像中每个像素的像素值进行重新计算。假设滑动窗口的大小size为3,上图中的“5”对应的像素是在3*3的邻域窗口内进行计算。最简单的算术均值滤波器的计算过程为:
(1+2+3+4+5+6+7+8+9)/ 9 = 4.4
代码实现:
//方法一:使用opencv工具包
denoise = cv2.fastNlMeansDenoising(img, ksize=3)
# 方法二:使用均值滤波函数cv2.blur()
import cv2
img = cv2.imread('01.jpg')
blur = cv2