Understanding ISP Pipeline - Noise Reduction

本文深入探讨了图像传感器中的噪声类型,包括固定模式噪声、随机噪声和条带噪声,以及它们对图像质量的影响。介绍了信噪比作为评估图像质量的重要指标,并讨论了在低光照条件下出现的彩噪问题。降噪原理通过区分平坦和纹理区域来实施,文中提到了空域降噪、时域降噪以及结合两者的技术。重点讲述了光流法、块匹配法和形态学运算在运动适应降噪中的应用,旨在提升图像质量和后续处理的效果。
摘要由CSDN通过智能技术生成

背景
下图是使用单反相机在ISO6400条件下拍摄24MP分辨率图片的预览效果。
在这里插入图片描述
看起来似乎还不错,但是如果将图像放大到100%显示,则真实效果是这样的,

在这里插入图片描述
原生画面上实际充满了各种颜色杂乱的斑点和斑块,几何线条也不太清晰。这些破坏图像质量的东西就是噪声。

噪声(Noise

噪声是图像中不请自来的信号。在数码照相机和摄影机产品中,总的规律是光圈越小、(电子)快门越短、ISO越高,图像噪声就越大。图像中的噪声有多种来源,下图列举了几种常见的噪声模式,即

固定模式噪声(FPN),由于图像传感器的空间不均匀性引起的,硅片本身的瑕疵,失效像素(坏点),像素参数的随机分布,均可构成固定模式噪声
随机噪声,由于电子的随机热运动、光信号的统计涨落等多种原因引起的噪声,在芯片中普遍存在的1/f噪声也是一种随机噪声
在这里插入图片描述
条带噪声(Banding),有水平条带和垂直条带两种表现形式,有固定模式和随机模式两种来源,其中固定模式来源包括传感器中各晶体管工作参数相对理论值的漂移;垂直条带往往是由于传感器中存在两个ADC器件,其参数不完全一致;随机模式往往由于电源纹波引起的,更多细节可参考本专栏的主题文章
在这里插入图片描述
下图是一个条带噪声的例子。
在这里插入图片描述
在一幅图像内部,暗部的噪声会比亮部的噪声更明显,如下图所示。
在这里插入图片描述
P.S. 这是由人眼的生理特性决定的。德国生理学家Ernest Heinrich Weber(1795-1878) 和他的学生Gustav Theodor Fechner1834年提出,最小可分辨的刺激变化值与刺激值本身之比是一个常数,用公式表示为
在这里插入图片描述
这就是著名的韦伯-费希纳定律。
在这里插入图片描述
举例来说,如果50%的受试者能够分辨从100支蜡烛中移走1支蜡烛导致的亮度差别,那么对于200支蜡烛,需要移走2支才能被同样比例的受试者分辨出来。

噪声一方面会表现为像素亮度的随机波动,对于彩色图像还会造成像素颜色的随机波动,给图像引入并不存在的颜色,这对图像质量造成的破坏往往更加严重。
在这里插入图片描述
关于人类视觉系统(Human Vision System)的研究表明,人眼对亮度和色度的空间分辨能力是不同的,在低频段色度的分辨能力大于亮度,随着频率提高缓慢衰减,频率高于一定阈值后色度的空间分辨能力迅速衰减至零,而亮度空间分辨能力则是先增大再衰减。
在这里插入图片描述
噪声的空间频率高低会影响关于图像质量的主观感受,而且这种影响与人的直觉不一定相符。在下图的例子中,右图主要包含高频噪声,在人眼看来其图像质量比左图要好很多,其实右图的方差是12.5,大于左图的方差11.7,左图感觉噪声更大的主要原因是噪声的频率更低一些。

在这里插入图片描述
因此,关于噪声的一般规律是,幅度小的高频噪声对主观图像质量影响较小,而幅度大的低频噪声对主观图像质量影响较大。
在这里插入图片描述
噪声对图像质量造成的影响并不仅限于人眼观察时引起的主观不适,它对后续的图像使用环节也会带来很多负面的影响,比如会引起视频编码的码

### 回答1: 在Python中,可以使用OpenCV库来进行彩色图像降噪。下面是一个简单的示例代码: ```python import cv2 # 读取彩色图像 img = cv2.imread('image.jpg') # 将彩色图像转换为灰度图像 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 对灰度图像进行高斯模糊 blur = cv2.GaussianBlur(gray, (5, 5), 0) # 显示原始图像和降噪后的图像 cv2.imshow('Original', img) cv2.imshow('Denoised', blur) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在上面的示例中,首先使用`cv2.imread`函数读取彩色图像。然后使用`cv2.cvtColor`函数将彩色图像转换为灰度图像。接着使用`cv2.GaussianBlur`函数对灰度图像进行高斯模糊,以达到降噪的目的。最后使用`cv2.imshow`函数显示原始图像和降噪后的图像,并使用`cv2.waitKey`和`cv2.destroyAllWindows`函数等待用户按下任意键,以关闭窗口。 ### 回答2: 彩色图像的降噪是指去除图像中的噪声,使图像更清晰和细腻。Python中可以使用各种图像处理库来实现图像降噪的功能。 一种常用的方法是使用中值滤波器来降噪。中值滤波器的原理是将每个像素点周围的像素值排序,然后取中值作为该像素点的值。这样可以有效地去除椒盐噪声和其他随机噪声。 在Python中,可以使用OpenCV库来进行图像处理。使用OpenCV的中值滤波器函数cv2.medianBlur()可以对彩色图像进行降噪。首先,读取原始图像并将其转换为灰度图像: ```python import cv2 # 读取原始彩色图像 image = cv2.imread('image.jpg') # 将彩色图像转换为灰度图像 gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) ``` 然后,使用中值滤波器函数对灰度图像进行降噪操作: ```python # 对灰度图像进行中值滤波 denoised_image = cv2.medianBlur(gray_image, 5) ``` 最后,将降噪后的灰度图像转换回彩色图像: ```python # 将降噪后的灰度图像转换回彩色图像 denoised_image = cv2.cvtColor(denoised_image, cv2.COLOR_GRAY2BGR) ``` 通过以上步骤,我们可以得到降噪后的彩色图像denoised_image。可以将其保存为文件或进行进一步的图像处理操作。 需要注意的是,中值滤波器的滤波器大小(即窗口大小)要根据图像噪声的程度进行选择。通常来说,较大的滤波器可以更有效地去除噪声,但也可能导致图像的细节信息的损失。因此,根据具体情况进行调整以取得满意的降噪效果。 ### 回答3: 彩色图像降噪是指通过去除图像中的噪声,使图像变得更加清晰和易于处理。在Python中,有几种常用的方法可以实现彩色图像降噪。 一种常用的方法是使用中值滤波器。中值滤波器是一种非线性滤波器,它用图像中像素的中值替换该像素的值,从而去除噪声。在Python中,可以使用OpenCV库中的`cv2.medianBlur()`函数来实现中值滤波。 另一种常用的方法是使用双边滤波器。双边滤波器结合了空间域和灰度值域的信息,可以同时保持图像的边缘和平滑细节。在Python中,可以使用OpenCV库中的`cv2.bilateralFilter()`函数来实现双边滤波。 另外,还可以使用小波变换进行图像降噪。小波变换可以将图像分解为不同频率的子带,通过调整不同频率的子带系数以达到滤波的效果。在Python中,可以使用PyWavelets库来实现小波变换。 此外,还可以尝试其他一些图像降噪方法,如均值滤波器、高斯滤波器等。这些滤波器可以通过计算图像像素周围像素的平均值或加权平均值来去除噪声。 综上所述,Python中可以使用中值滤波器、双边滤波器、小波变换等方法来进行彩色图像降噪。根据实际情况选择合适的方法,并根据需要调整滤波器的参数,可以最大限度地去除图像中的噪声,使图像变得更加清晰和易于处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值