ISP去噪(2)_np 噪声模型

#灵感# ISP 中的去噪,都需要依赖一个噪声模型。很多平台上使用采集的raw进行calibration,可以输出这个模型,通常称为 noise profile。

名词解释:

Noise profile 似乎可以翻译成噪声档案,其含义是某个噪声源(sensor)在不同工作条件下所表现出来的噪声特性的集合,一般将其表示成增益(gain)的函数。

噪声校准工具的目的是表征某个传感器模块的时间噪声行为。该评估产生了噪声水平函数,其描述了时间噪声标准偏差与像素强度的关系。

为啥是标准差:由于噪声是亮度变化,所以最好用标准差统计量来测量它。从现在起,当提到噪声量时,我们将讨论图像亮度变化的标准差(通常用希腊字母σ表示),标准偏差是方差的平方根,方差表示为σ²

标定方法:

方法1:

我们在进行噪声标定时,会根据不同的ISO进行分段标定;锚定几个固定的ISO50100 400 10002000....)进行噪声标定,锚点之间的ISO通过线性插值来计算噪声强度。

一般来说,我们会使用24色卡来进行噪声标定,使用三脚架固定好相机,然后连续等曝光N张图片,N的参考取值为32或者更多,对N张连续曝光的图片进行平均,这个平均后的图片被当作真实信号  ,则噪声信号可以表示为 ,对  求方差,就可以获得图(c),也就是我们的噪声模型。我们在实验室,调节灯箱的亮度,使得在固定ISO的情况下,噪声标定的像素范围能够覆盖信号的范围(10bit-->[0, 1023]),至此我们获得CMOS Sensor生成图像的噪声模型。

方法2:

在camera 视野中放置灰卡,D65或D50灯光从一侧垂直打光。改变光源亮度,使sensor 的曝光增益覆盖 1x/2x/4x/8x/16x/32x/64x等常用的ISP调试档位。分别对每个增益进行抓图,一般需要10-50张raw 图。

校准出的noise profile:

第一种-常见:

Noise profile在校准后一般不建议修改。数据长度一般为64,或者 128。第一个数值到最后一个数值分别对应亮度等级为0-255的降噪值,数值越大说明降噪强度越大。

第二种-高通:

noise profile : Chromatix工具基于在几个勒克斯级捕获的图像生成数据,较大的值导致更多的去噪,level 0,1-高频噪声,level 2,3-低频噪声,(level 2,3,4,5-低频噪声 for 8996)。-----有待考证

noise profile 作用域:

参考noise profile的生成方法,在raw denoise设计降噪算法会稍微容易一些,在不同的亮度进行不同强度的降噪,或者把噪声归一化,都有利于保护细节。

但noise profile并不是单纯用在denoise这一个模块上,还可以用在时域降噪、demosaic等模块上。(实际使用时,很多ISP也都是以YUV domain降噪为主体)。

噪声曲线——原理:

此段内容来自:微信公众号『大话成像』,图解噪声与去噪之三:噪声建模与去噪。

拍一张Grey scale chart 的照片。camera拍照可以得到如下图像1

  

可以看到,图像上有很多噪声,对这个图像做横切,然后可以得到pixel value 相对intensity的显示图

   

继续拍n张照片:把n张照片求平均得到一张照片,把所有图片的像素的值显示在一个图里可以看到

 

中间的实线是图像均值,所有被虚线包围的红色的点,是所有图像的像素值。按照图解噪声与去噪第一讲里的方法(也在“大话成像”微信公众号里),画出像素标准差对均值的曲线可以得到

 

从上左图可以看出:

  1. 噪声随着亮度的增加而增加。
  2. 标准差与均值遵循一定的函数关系。

如果把多组实验的结果叠加可以得到上右图。--------------也是校准工具会输出的一种NP曲线图。

噪声和清晰度调试:

(1)先调试画面中心平坦区,在保留一定细节的前提下,让平坦区的noise表现与target相近,这部分主要调试NR部分。-----------可以理解为保留细节的程度。

(2)调试EE或其它锐化模块,使边缘及细节表现与target接近。

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

------------------未完待续-------------------等我再补充点调试清晰度和噪声的实操流程

相关推荐

  1. 图像opencv

    2023-12-12 20:46:03       61 阅读
  2. 点云和

    2023-12-12 20:46:03       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-12 20:46:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-12 20:46:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-12 20:46:03       82 阅读
  4. Python语言-面向对象

    2023-12-12 20:46:03       91 阅读

热门阅读

  1. 设计模式之:与设计模式相处

    2023-12-12 20:46:03       60 阅读
  2. 分布式学习一

    2023-12-12 20:46:03       44 阅读
  3. 装饰器的典型行为

    2023-12-12 20:46:03       48 阅读
  4. 在Vue中 .sync作用

    2023-12-12 20:46:03       62 阅读
  5. 升级jdk1.8u391后,加解密部分报错解决

    2023-12-12 20:46:03       75 阅读
  6. 选择法排序

    2023-12-12 20:46:03       58 阅读
  7. 【Flink on k8s】 -- flink kubernetes operator 1.7.0 发布

    2023-12-12 20:46:03       60 阅读
  8. C语言——assert函数

    2023-12-12 20:46:03       62 阅读
  9. webrtc 设置不获取鼠标 启用回声消除

    2023-12-12 20:46:03       55 阅读
  10. 金蝶数据库常用表查询

    2023-12-12 20:46:03       50 阅读