#灵感# 因为理解的2DNR、3DNR 和当前调试平台标注的2DNR、3DNR 作用有很大差异,所以在网上广撒网,搜集知识。
目前收集出来一个这样的文章,有点像大学生的论文“取其精华,合成糟粕”。------权当一个记录册
目录
运动阈值,拖尾:
空域和时域降噪区别:
空域时域降噪(STNR)
高频和低频噪声:
中值滤波和双边滤波:
降噪位置:
运动阈值,拖尾:
动作阈值就是你判断你画面中大概有百分之多少的像素,来判断出我们大概使用多少范围的运动。超出这个阈值的像素是运动的,低于这个阈值的像素是静态的。
当前平台:
运动阈值越大越容易(画面更多)被判断为静止(理解为小于阈值判断为静止,)副作用为拖尾,
理解---------【判断为静止,则使用3d 时域降噪,时域降噪过大,运动物体就拖尾明显。 】
阈值越小则越容易(画面更多)被判断为运动(副作用3D降噪效果弱,噪声大)
理解---------【运动区域用2D 降噪,2D空域降噪不考虑帧与帧之间关系,会发生一些噪点的抖动】
空域和时域降噪区别:
空域降噪 是针对单帧画面进行处理 ;空域降噪是一种2D降噪方法,它只处理一帧图像内部的噪声。降噪算法根据实现原理不同可以分成很多种类型,比如线性/非线性、空域/频域,频域又包括小波变换、傅里叶变换或其他变换。2D降噪缺点是会造成画面模糊,特别是物体边缘部分。 因此对这种算法的改进主要是进行边缘检测,边缘部分的像素不用来进行模糊。 -------当前平台 说 2D 降噪会导致运动模糊
时域降噪 是结合前后帧进行计算处理的出来的 。时域降噪是一种3D降噪方法,它的主要思想是利用多帧图像在时间上的相关性实现降噪, 即考虑帧与帧之间的时域关系。----(有人称为2dnr,怪不得我老是搞混,因为用在静态区域,2DNR理解的出发点是在2D图像上做NR)。
一种最简单的实现方法是时域均值滤波,即将相邻几帧图像在时域上做加权平均。由于累加后噪声的增长速度(根号关系)小于信号的增长速度(线性关系),所以图像的信噪比会提高。这种方法的主要问题在于只适合处理静态图像,如果画面中存在运动的物体则会出现伪影(ghost effect)-------------和当前平台 说的静态区域用3DNR 相符合。
一般来说,降噪我们都会在最前面的节点对原始素材进行降噪。------raw?
如果我们只用空域降噪的话,假如我们连续播放的话,由于它的算法都是基于当前帧,不考虑前后帧,所以这样很有可能会发生一些噪点的抖动。------这个抖动在运动区域应该不明显,所以运动用2D空域降噪。
时域降噪会把整个时间段的噪点统一进行处理,消除帧与帧之间的噪点抖动。-----所以在静止区域用3D 时域去噪。使画面更安静。
一般都是先利用空域降噪对单帧进行一个基础的降噪,(比如在raw 域?),然后在利用时域降噪把与帧之间的噪点抖动消除,这样的效果可能会比较好。(比如在YUV域?)
空域时域降噪(STNR)
此段来自Understanding ISP Pipeline - Noise Reduction - 知乎 (zhihu.com),作者刘斯宁
STNR是一种2D+3D降噪方法,它通过一套算法判别一个像素是属于前景还是背景,被判决为背景的像素将会参与时域平滑,被判决为前景的像素将会参与空域平滑,而判决条件则每一帧都在动态更新,以尽可能保证判决准确性。-------有人称STNR 为3DNR, 应该是理解为在3D图像上做NR。此处和 “当前平台” 描述的算法作用机制一样。
运动检测,运动的物体认为是前景,不动的是背景。但是由于噪声影响会有很多失效的时候,把背景误判为运动,或者由于运动物体存在大面积单色,被误判为没动。至今尚没有特别有效的方法。使用ai技术能表现好一些。
在手机端的调试经验: 为避免拖影,可以加大YNR去噪,使用较小的3DNR 去噪。
“当前平台”经验:
运动模糊,减小2DNR。适当调整2DNR中的 对运动区域NR的值。
静止平坦区噪声,检查运动阈值是否正确,若是,则(静止平坦区不会有跳动噪声)。
灯的位置(高亮处)噪声跳动,修改校准的NP 参数。
高频和低频噪声:
此段来自 Understanding ISP Pipeline - Noise Reduction - 知乎 (zhihu.com)
噪声的空间频率高低会影响关于图像质量的主观感受,而且这种影响与人的直觉不一定相符。在下图的例子中,右图主要包含高频噪声,在人眼看来其图像质量比左图要好很多,其实右图的方差是12.5,大于左图的方差11.7,左图感觉噪声更大的主要原因是噪声的频率更低一些。
因此,关于噪声的一般规律是,幅度小的高频噪声对主观图像质量影响较小,而幅度大的低频噪声对主观图像质量影响较大。
中值滤波和双边滤波:
中值滤波适用于去除椒盐噪声等随机噪声,而双边滤波在平滑图像的同时保留边缘信息。
中值滤波在一定的条件下可以克服常见线性滤波器如方框滤波器、均值滤波等带来的图像细节模糊,而且对滤除脉冲干扰及图像扫描噪声非常有效,也常用于保护边缘信息, 保存边缘的特性使它在不希望出现边缘模糊的场合也很有用,是非常经典的平滑噪声处理方法。
但是中值滤波的缺点也很明显,因为要进行排序操作,所以处理的时间长,是均值滤波的5倍以上。
图片来自:Understanding ISP Pipeline - 知乎 (zhihu.com)
双边滤波器的好处是可以做边缘保存(edge preserving),一般用高斯滤波去降噪,会较明显地模糊边缘,对于高频细节的保护效果并不明显。双边滤波器顾名思义比高斯滤波多了一个高斯方差sigma-d,它是基于空间分布的高斯滤波函数,所以在边缘附近,离的较远的像素不会太多影响到边缘上的像素值,这样就保证了边缘附近像素值的保存。但是由于保存了过多的高频信息,对于彩色图像里的高频噪声,双边滤波器不能够干净的滤掉,只能够对于低频信息进行较好的滤波。
在双边滤波器中,输出像素的值依赖于邻域像素值的加权值组合。
高斯滤波的实现方式有时域方式和频域方式两种,一种是时域高斯低通滤波,一种是频域高斯低通滤波。
时域高斯低通滤波的实质是定义一个奇数大小的模板(3 X 3 ;5 X 5 ;7 X 7 ……),然后让该模板遍历整副图像,模板中的加权平均值就是模板中心的值。
当领域窗口固定时,标准差越大,去除高斯噪声能力越强,图像越模糊,当标准差为2以上时,去噪能力几乎不再增加,只有当增加领域的大小时,去噪能力才会进一步增强。
频域高通滤波器:
降噪位置:
raw域的好处是接近噪声的源头,rgb域和yuv域的好处是可以抑制在isp处理中间引入的噪声,如果不考虑成本,降噪处理理论上是多多益善的,实际也确实是这样,越高端的isp降噪节点越多(比如高通、MTK 平台),有些codec在编码之前也会做一次降噪,因为isp噪声对codec码率影响非常大。
降噪:目前主流的ISP产品中一般会选择在RAW域、RGB域、YUV域等多个环节设置降噪模块以控制不同类型和特性的噪声。在YUV域降噪的方法已经得到了广泛的研究并且出现了很多非常有效的算法,但是在RAW域进行降噪则因为RAW数据本身的一些特点而受到不少限制。主要的限制是RAW图像中相邻的像素点分别隶属于不同的颜色通道,所以相邻像素之间的相关性较弱,不具备传统意义上的像素平滑性,所以很多基于灰度图像的降噪算法都不能直接使用。