Understanding ISP Pipeline - Noise Reduction

Understanding ISP Pipeline - Noise Reduction

转载于:Understanding ISP Pipeline - Noise Reduction

背景
下图是使用单反相机在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,左图感觉噪声更大的主要原因是噪声的频率更低一些。

在这里插入图片描述


因此,关于噪声的一般规律是,幅度小的高频噪声对主观图像质量影响较小,而幅度大的低频噪声对主观图像质量影响较大。

在这里插入图片描述


噪声对图像质量造成的影响并不仅限于人眼观察时引起的主观不适,它对后续的图像使用环节也会带来很多负面的影响,比如会引起视频编码的码率上升、人脸识别准确率下降等问题。

信噪比(SNR

任何实际测量到的信号都无可避免地含有噪声成分,而评价一幅图像成像质量的标准是信号幅度与噪声幅度的比值,即信噪比。

在这里插入图片描述


对于一组测量数据样本,一般用均值作为信号的幅值,而该组样本的标准差反映噪声的大小。

在这里插入图片描述

在这里插入图片描述

彩噪(Chroma Noise)

ISP内部会使用YUV空间对像素进行处理,其中Y表示像素的亮度,UV分别表示蓝色和红色的色度。
当环境照度不足时,Y、U、V信号的期望值(绝对值)都很小,此时UV分量的随机噪声就变得相当显著,在画面上表现为彩色的噪点或噪斑,如下图所示。

在这里插入图片描述

降噪原理

1.对于画面中的平坦区域(homogeneous area),认为像素变化主要是由噪声引起的,可以加大降噪力度;
2.对于画面中的纹理区域(textured area),认为像素变化主要是由纹理引起的,噪声只占较小部分,需要控制降噪力度,尽量保持图像的纹理特征。

为了区分纹理与平坦区域,我们需要设计一种算法,给定一个像素以及以该像素为中心的一个邻域,算法需要计算出该像素的纹理指标(权重)。
意法半导体的算法专家们提出了一种基于频域变换的方法,基本思想是将使用8x8大小的DCT变换将小块图像变换到频域,然后对频率分量进行分析,

1.如果DCT变换后非零系数很少,且能量集中在低频,说明是平坦区域,应加强降噪力度;
2.如果两个相邻的DCT单元具备相同或相近的直流分量,则说明是平坦区域,应加强降噪力度;
3.如果某个方向(水平、垂直、对角)上存在明显占优的系数,则说明存在强边缘,应避免降噪;
4.如果某两个方向上存在占优的系数,则说明存在弱边缘,应进行中等强度的降噪;
5.如果很多方向上都有非零的系数,但又没有明显的优势系数,此时可能是纹理与噪声并存的情况,需要一定强度的滤波,削弱高频成分;

在这里插入图片描述


其它研究表明,降彩噪的力度不仅需要考虑纹理特征,还需要考虑画面的亮度。因为彩噪在画面的暗区最明显,所以应将噪范围局限在暗区。另外,一般的规律是蓝像素的噪声最大(这可以在上图中得到印证),所以可以对蓝色通道使用更强的降噪力度。

综合来看,针对彩噪的降噪算法需要包含下列子算法,

  • 纹理强度分析(texture degree / edgeness level analysis)
  • 噪声强度估计(noise level estimation
  • 噪声阈值判定(noise threshold definition),区分信号与噪声的边界
  • 权重生成 (weight generation),决定对降噪和不降噪的倾向因子

下图显示了一种典型的算法流程。

在这里插入图片描述


下图给出了一个纹理强度分析算法的例子,左边是原图,右边是纹理检测算法输出的权重图像,白色代表纹理,黑色代表平坦。

在这里插入图片描述

空域降噪(Spatial

空域降噪是一种2D降噪方法,它只处理一帧图像内部的噪声。
降噪算法根据实现原理不同可以分成很多种类型,比如线性/非线性、空域/频域,频域又包括小波变换、傅里叶变换或其他变换。

在这里插入图片描述


camera ISP 中使用的降噪算法需要足够简单、快速、节省内存、适合硬件实现。
经典的低通滤波器如中值滤波或高斯滤波虽然足够简单但是容易破坏图像中的边缘,所以主流ISP产品一般会使用某个加强了边缘保持特性的改进版本,如引导滤波(guided filter),双边滤波(bilateral filter)等。

关于双边滤波的原理介绍可参考知友的文章
高斯滤波的基本原理是,在处理当前像素的过程中会用到当前像素附近的像素做加权平均,权重取决于当前像素和周围像素的距离,距离越远则权重越小。双边滤波是在高斯滤波原理的基础上做了扩展,它除了考虑像素距离之外,还考虑当前像素和周围像素亮度的差异,对距离近但颜色差异大的像素会分配小的权重,这样就实现了边缘保持。

小波变换的原理是将信号分解到不同的频带,每个频带保留了一定的空域信息。通过对这些小波系数做阈值处理、滤波或者基于统计建模的处理,再反变换回空域,可以实现有效的降噪效果。

小波变换和双边滤波结合使用可以取得更好的效果。对低频信号做双边滤波,对高频信号做阈值处理,结合之后生成低频信号再做双边滤波,如此反复。这个方法的优势是可以针对不同的频带调节降噪的强度,同时保持了边界,在很多 ISP中已有应用。

时域降噪(Temporal

时域降噪是一种3D降噪方法,它的主要思想是利用多帧图像在时间上的相关性实现降噪。

在这里插入图片描述


一种最简单的实现方法是时域均值滤波,即将相邻几帧图像做加权平均。由于累加后噪声的增长速度(根号关系)小于信号的增长速度(线性关系),所以图像的信噪比会提高。这种方法的主要问题在于只适合处理静态图像,如果画面中存在运动的物体则会出现伪影(ghost effect),如下图所示。

在这里插入图片描述


时域降噪技术常伴随运动伪影问题

运动适应降噪 Motion Adaptive Noise Filter

对基本的时域降噪进行一些改造就可以得到一种自适应降噪算法。
假设图像中坐标(x,y)处的像素值为P(x,y), 新一帧中同位置像素值为P'(x,y)
如果两个像素值的差异小于某阈值,即|P'-P|<threshold
则可以用P代替P'。这种方法对静止的图像效果非常明显,尤其是可以显著降低H.264/265编码码率。

在这里插入图片描述


假设g(i,j,k)代表有噪声的视频信号序列,其中(i,j)代表像素坐标,k代表时间序列,则g(i,j,k) 可以表示为真实信号f (i,j,k)和噪声信号n (i,j,k)的叠加形式
在这里插入图片描述
真实信号f (i,j,k)当然是不可能知道的,只能用某种方法对其进行估计。一种经典的估计方法是采用以下非线性滤波器,
在这里插入图片描述
其中f(k)代表第k帧图像,它的来源是在第k-1帧图像的基础上叠加了g(k)f(k-1)的差值成分,即 ∆= α(k)|g(k)-f(k-1)| ,其中α(k) 是与相关联的阻尼系数。

∆<thres0时判断为噪声,采用α(k)=0
∆>thres1时判断为真实信号,采用取α(k)=1
thres0<∆<thres1α(k)介于01之间。

在这里插入图片描述


当然,这种方法的局限也是很明显的,一方面阈值的选取需要能够有效地区分噪声与画面变化,这本身不是一件很容易的事情;另一方面当像素变化超过阈值后此方法就失效了,因此画面前景部分的噪声处于逍遥法外的状态,这也是一个问题。

因此,一个理想的滤波器应该同时满足几个特征,即

  • 能够有效地区分画面的前景(运动目标)和背景(不动目标)
  • 对画面中的前景像素进行空域降噪
  • 对画面中的背景像素进行时域降噪

于是就应运而生了STNR技术。

空域时域降噪(STNR

STNR是一种2D+3D降噪方法,它通过一套算法判别一个像素是属于前景还是背景,被判决为背景的像素将会参与时域平滑,被判决为前景的像素将会参与空域平滑,而判决条件则每一帧都在动态更新,以尽可能保证判决准确性。

在这里插入图片描述


STNR的核心算法是在对图像中的运动物体进行检测并估计出运动矢量,因此这种技术也称为Motion Compensated Noise Reduction, MCNR,它依赖于视频编解码中常用的运动估计和运动补偿技术(Motion Estimation & Motion Compensation,MEMC)。

光流法 Optical Flow

假设前一帧时间为t, 后一帧时间为t+δt。在理想情况下(δt很小,在δt时间内图像亮度保持稳定,物体运动速度不大,并且不会突然消失或被遮挡),则前一帧I的像素点I(x, y, z, t)在后一帧中的位置为I(x+δx, y+δy, z+δz, t+δt )

如果假定图像亮度恒定,即可得到光流法的约束方程(constraint equation

在这里插入图片描述


进一步假定图像中的物体运动速度不大,则后一帧图像可以用前一帧图像的泰勒展开形式表示(只保留一阶近似)

在这里插入图片描述


根据约束方程,上式中偏导数之和应为0,即

在这里插入图片描述


对于二维图像可忽略z分量,约束方程的最终形式为

在这里插入图片描述


通常在一个小窗口内进行光流计算,采用最小二乘法求得该窗口内的平均运动向量。理想情况下,小窗口内的像素应具有一致的运动向量,因此求得的平均向量就代表着物体真实的运动方向。

块匹配法 Block Matching

块匹配的思想是在参考帧(通常是上一帧)中的一个小范围内搜索与当前块(block)最匹配的块,如果确实能够找到则计算出运动向量v

在这里插入图片描述


所谓“最匹配”的块其实可以有很多种不同的评判标准。常用的标准有Mean Squared Error (MSE) 以及 Mean Absolute Error (MAE) 等算法。

搜索区域一般是根据产品的需求和设计约束而定,常用的有13x1317x17像素等。搜索区域越大能够检测的运动速度越大,但是所需的算力成本也会呈平方增长。

当图像种存在重复的纹理模式时,光流法和块匹配法都容易失效。在下图的例子中,绿框所示的块状纹理和黄框所示的边缘纹理都容易引起算法失效。而蓝框所示的含直角的块则较容易被算法正确识别。

在这里插入图片描述

形态学运算

形态学是基于形状处理图像的一组广泛的图像处理运算。在形态学运算中,图像中的每个像素都基于其邻域中其他像素的值进行调整。通过选择邻域的大小和形状可以构造对特定形状敏感的形态学运算。下表是Matlab支持的一些典型形态学运算。

在这里插入图片描述


当图像较暗时往往信噪比SNR较低,信噪在噪声中若隐若现。由于噪声的干扰,不论是阈值法还是块匹配法都很容易判断失误,错将背景当作前景,或者反过来。此时,运用形态学方法可以对帮助修正判断,提高判断的准确率,其基本思想是,

  • 一旦某个块被判断为前景,则与其相邻的8个块也被无条件判断为前景
  • 如果某个块被判断为背景,而与其相邻的8个块中至少存在4个已经被判断为前景,则该块也无条件被判断为前景

这种方法可以显著增加像素被判断为前景的概率,从而增加空域滤波的机会,能够减少运动鬼影的概率。
下面是一些 STNR 效果的例子。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Keep Natrual

如果按照拍摄对象进行分类,摄影可以简单分成风景(landscape)和人像(portrait)两类。

在这里插入图片描述


Landscape

在这里插入图片描述


Portrait

这个分类是如此经典和形象,以至于人们用LandscapePortrait的概念来定义文件和照片的布局方向(orientation)。

在这里插入图片描述

 

在这里插入图片描述


在人像摄影领域,很多人似乎挺喜欢图像中的噪声颗粒感,它们使图像看起来更真实,更有质感。因为没有降噪滤波,图像会保留更多的细节,这也令很多人非常喜欢,所以有些单反相机会特意给出“颗粒感”的模式选项来模拟胶片的图像风格。显然,数码相机上使用CMOS sensor成像,而胶片使用乳化的银盐颗粒成像,两者的物理特性是完全不同的,所以单反相机的“颗粒感”是使用软件算法添加噪声模拟出来的结果。

在这里插入图片描述

 

在这里插入图片描述


Synthetic Grain

After any noise reduction, the image is likely to look a little “off”, even if a very light level of noise reduction was used. You may even see some banding in areas like skies and shadow areas, especially if the source was heavily compressed such as H.264 \ AVCHD. However, we can add some “life” back to the image in several ways: mixing back a slight level of the original noise, adding noise via an effect, or overlaying synthetic or scanned film grain over the image, reduced in opacity until it is barely visible, usually between 15% and 45%. The intended effect is dithering of the image, which blends together areas that were banding and adds some texture and localized contrast back to skin and other areas with fine details. You can add more grain for creative effect, but only a very small amount of noise \ grain is required for this technique to be effective. For HQ grain, I highly recommend RGrain (for synthetic grain ideal for invisible dithering) and CineGrain (for more filmic grain scanned from real film). For the budget conscious, I also created free film grain that you can download here to experiment with.

在这里插入图片描述

 

在这里插入图片描述


ISP中会有一个相对独立的3DNR模块。
根据算法对滤波窗口尺寸的设计要求,这个模块会缓冲若干行像素,比如5行,17行,33行等等。一般来说缓冲的行数越多效果越好但是资源消耗也越大。
当缓冲区中的数据就位后,从DDR主内存中读取上一帧图像对应位置的像素进行比较,根据比较结果判断当前像素是前景还是背景。
如果是背景则启用时域滤波,否则启用空域滤波。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值