动态范围最早是信号系统的概念,一种信号系统的动态范围定义为:最大的信号不失真的电平和噪声电平的差,在实际场景中,多用分贝(dB)为单位来衡量一个信号系统的动态范围。
以上说法可能有些抽象,来看两个例子。
1. 假设有一个系统,我们要关注其工作电压的动态范围
规定其动态范围的计算公式是:
DR代表动态范围,单位为dB
Vmax,Vmin分表代表系统最大工作电压和最小工作电压
那么当DR为80dB的时候,我们可以反推出,即代表这个系统最大工作电压是最小工作电压的10000倍。
2. 计算ADC的动态范围
这里假设动态范围计算公式和第1个例子中的公式一样。
ADC输出的动态范围计算比较简单,其动态范围和ADC的精度相关。假如ADC的精度是14bit,其最小非0输出为1,最大为2^14–1那么其输出值的动态范围是:,约为84.3dB。
ADC输入的动态范围计算相比输入来说没有这么直观,因为其输入的最小值受到模拟信号的噪声水平影响。假设参考电压上限为2.5V,本底噪声为1mV,那么其动态范围大概是68dB。
通过以上两个例子,我们应该对动态范围本身是什么有了一个初步认识。在图像处理领域,提到动态范围,一般是指图像中所包含的从"最暗"至"最亮"的范围。动态范围越大,图像的细节就越丰富。
对于image sensor来说,动态范围的定义是最大不饱和光电流和最小可检测光电流的比值。对于一个使用井容量(Well Capacity)为固定值的sensor来说,这个值限制了最高的信号水平,最低的可检测信号则由sensor的读取噪声所决定。其DR公式为:
另外,来整一道随口乱说的计算题。假设你过节回家,每天你都会测量一下你妈看到你赖床的时候的声压,假设最小值为0.02Pa,最大声压20Pa的话,各位可以算一下妈妈的声压动态范围是多少?
HDR,高动态范围,全称High Dynamic Range。比Dynamic Range多 了一个high,这个“高”结合前文的动态范围来讲,在sensor这块主要是指提高了图像的亮度范围,能够让图像里的高光和阴影的范围更宽,这样就会让图像细节更加饱满。简单描述HDR就是(不准确,便于理解):HDR能让图像亮的地方和暗的地方的细节都展现出来。
说了这么多,还是来看图最直接。
(图片地址:魅蓝S6对比红米5:谁才是千元全面屏最优解 | 凰家评测_手机凤凰网)
对于Image sensor来说,根据动态范围的计算公式,硬件上最简单的提高动态范围的方法可以将ADC的转换精度提高。下表是一个ADC精度和其支持的动态范围的对比。
ADC精度(bits) |
最大值 |
sensor的动态范围 (dB) |
8 |
256 |
48 |
10 |
1024 |
60 |
12 |
4096 |
72 |
16 |
65536 |
96 |
20 |
1048576 |
120 |
但在现实场景中,提高sensor的位宽会导致一系列问题,比如带宽的要求更高,存储空间要求变大,整体成本会更高。于是工程师们开始想办法通过其他手段来提升sensor的动态范围。因此产生了一些sensor的HDR技术,能够在实现HDR同时尽量不增加太多成本。
前面提到了HDR的一些原理。下面来看一些具体实现HDR的技术,从最传统的时域多帧HDR来看起。
从名字里的“多帧”两个字可以大致猜出这种方法的原理,就是将拍摄多张图,然后进行“融合”。我们假设有三帧(实际上不一定非得是三帧)数据:短曝光时间帧,中曝光时间帧,长曝光时间帧。
拿到这三张图后,按照一定算法进行“融合”,一般采用下面的公式:
X(i,j)表示 坐标i,j处像素最终的值
K代表总共K帧
W(ij,k)表示坐标在i,j处的像素在第k帧里的权重值
X(k(i,j))表示坐标在i,j处的像素在第k帧里的原始值
这种技术的大概运作流程如下图所示:
(原图地址:深入浅出理解各种HDR类型|极客笔记)
从上图可以看出,虽然这种方法最终合成的图能够将暗部和亮部的细节都呈现出来。但对于高速运动的物体(马),有严重的重影问题,马的腿部问题尤为明显,看起来马腿变成了螃蟹腿。同样,如果在拍摄时,如果因为手抖,导致图像中的物体位置发生了改变,也会产生鬼影。
在早期使用时域多帧HDR技术的设备中,为了解决手抖问题,会采用多帧防抖动算法,找出几幅图的特征点进行对齐,然后再做融合。对于高速运动的物体,选取出其中一张为主图,其它的图中选取相对稳定的部分进行融合。
Google的HDR+
传统的时域多帧HDR技术的特点是多张不同曝光程度的图融合为一张图片,我们假设上一节的三张图为例,拍摄三张图的时间会比较长(主要是过曝的图时间占比较大),在阴暗环境下尤其明显。Google提出了一种新的HDR+技术,通过融合多帧欠曝的图,通过一定算法降噪得到结果。
HDR+技术有两个最重要的步骤:1. 做多个原始欠曝帧的对齐Aligning;2. 将多帧合并Merging,用来降噪。
对齐的目的主要是为了消除由于抖动引起的明显的模糊或鬼影,在合并操作前得到鲁棒性更好的数据帧。通常对齐原始数据帧会使用一个高斯金字塔来操作,高斯金字塔的每层的下采样因子是4,使用16*16个tile,搜索区域为4个像素,然后去查找使得L1距离和最小的tile偏移。Google使用了稍微不同的下采样因子和搜索区域大小,并且融合了L2和L1距离计算,像素级对齐方法基本相同。Google还加了一个子像素对齐的方法,这样就使得对齐的精度更细。来看一下效果:
Six-frame Average
Six-frame Align and Merge
(图片地址HDR+ Pipeline)
合并操作目的主要是降噪,它通过从已对齐的其它帧的图像中抽取相似的信息来实现降噪。Google使用一种Wiener滤波的变体来实现。合并操作显著地改善了图像质量,没有大多数单帧模糊算法的副作用,同时还提升了色彩准确度,尤其是针对图像的比较黑暗的区域效果明显。
Single Frame Closeup
Six-frame Align and Merge Closeup
为了解决鬼影问题,诞生了隔行曝光(Interlaced)HDR。采用这种技术的sensor,以行为单位,一组做长曝光,一组做短曝光,比如奇数组短曝光,偶数组长曝光(由于bayer阵列的结构,一般是两行为一组)。这样在一帧中就同时包含了长曝光和短曝光的行。算法最后会进行融合处理。其工作原理如下图:
(原图地址:深入浅出理解各种HDR类型|极客笔记)
iHDR会使得空间分辨率损失一半,主要的iHDR的技术有Sony的BME-HDR和OV的Alternate row HDR。
采用这种技术的sensor,会按照每两行为一组,分别进行长曝光、短曝光。得到长、短曝光的数据后,进行融合,得到HDR图像。空间分辨率损失一半,就好像做了1x2 binning(binning_百度百科),因此叫做Binned Multiplexed Exposure。
OV的Alternate row HDR原理基本和Sony的BME-HDR类似,不再赘述。
iHDR技术最大的问题是空间分辨率损失的问题,zHDR基本思想源自iHDR,但做了改进。zHDR不再以行为单位做曝光时间区分,而是按照Z字形方式组织长曝光和短曝光的数据。
zHDR是由SONY提出的iHDR的升级版本, 具体的实现方案主要是SONY的SME-HDR
有多种排布长短曝光像素的布局可以达到zHDR的目的,就目前所知,SONY并没有公开具体的布局。上图是一种布局例子,在空间上Bayer阵列以4x4为单位,分别排布曝光时间长短不同的像素,上图中颜色的深浅表示了曝光时间的长短。这种布局声称能够获得单帧全分辨率HDR图像,只有约20%的空间分辨率损失(和SONY的SME-HDR所宣传能达到的)。
Quad HDR类型的sensor,相比于传统的bayer阵列,每一个像素(单色)划分为4个子像素,共用一个色彩滤波片。Quad Bayer结构如下图:
(原图地址:Quad-Bayer Camera Sensors For Better Photos | Ubergizmo)
使用QHDR的sensor有两种模式:普通模式和HDR模式。普通模式下,只有一种曝光时间,标号1,2,3,4的子像素会binning到一起作为一个像素的值输出;HDR模式下,可以让子像素之间有不同的曝光时间,标号1,2,3,4的子像素值被用来做HDR合成。下图展示了某种Quad Bayer sensor两种模式之间的差异:
Quad Bayer Sensor工作模式对比 (原图地址:Quad-Bayer Camera Sensors For Better Photos | Ubergizmo)
SONY和OV都有QHDR的方案,SONY的叫QBC(Quad Bayer Coding),OV叫4-cell (four-cell color-filter pattern HDR)
普通模式:像素1,2,3,4的值组合到一起作为一个大像素的输出值。
HDR模式:对角线上的像素1和4为一组,像素2和3为一组分别做长短曝光,然后将1和4的值,2和3的值分别融合作为大像素的长、短曝光下的值用来做HDR计算。可以参考图 - “Quad Bayer Sensor工作模式对比 ”。
工作方式和QBC类似,但它的HDR可以有两种不同的设置:
1. 按对角线方式分成两组做不同的曝光,和QBC基本无差别
2. 右下角像素曝光时间不同(像素1,2,3为一组,像素4为一组)
前面提到的iHDR,zHDR和QHDR等方法(不包括时域多帧HDR和HDR+),都属于单帧HDR,在一帧里包含亮部和暗部信息融合得到最终图像。单帧HDR相比于多帧HDR技术上相对简单,速度较快,但效果还是不如多帧HDR。时域多帧HDR和HDR+的计算量和能耗开销较大,硬件HDR有没有一种方法能够比较好地应对运动物体场景,同时又能节约计算资源和功耗呢?头部玩家SONY和OV等开始使用一种叫做行交织HDR的技术。
一般常见的CMOS sensor的快门都是滚动快门(也叫卷帘快门,Rolling Shutter),其读取像素数据时是从上至下一行行读取。
Camera和Image sensor技术基础笔记(2) -- Sensor的快门:全局快门(global shutter)和卷帘快门(rolling shutter)_亦枫Leonlew的博客-CSDN博客_global快门简介CCD和CMOS相机的图像传感器都使用电子快门,两种sensor不同的地方在于读取像素数据的方式。典型的CCD相机会同时曝光所有sensor的像素,这种方式称为全局快门(global shutter)。意思是从相机中sensor获取的图像数据中所有像素的值都在同一个时间点上获取。尽管有部分使用全局快门的CMOS技术存在,但大部分CMOS相机使用卷帘快门(rolling shutter)。使用卷帘快门时,sensor获取的图像以行为单位曝光,每行...https://blog.csdn.net/vivo01/article/details/123572713?spm=1001.2014.3001.5502 在传统的时域多帧HDR中,每一帧数据必须等到上一帧完成数据读取后才能开始。假设sensor先进行长曝光,再进行短曝光,那么短曝光的帧必须等到长曝光帧读取完成后再开始。
行交织HDR中,基本思想是,sensor读取完一行长曝光数据后,立即对这一行进行短曝光。每一行不同曝光时间的数据交错读取,因此节省了较多的等待时间。
传统多帧HDR和行交织HDR的对比如下图(个人理解绘制):
横轴为时间t,纵轴从上到下,代表sensor的第1,2,3,...,N+行。图中只考虑了两种曝光时间的情况,实际中可能还会有长曝光、中曝光、短曝光时间的情况。
(特别说明:在网上看了不少资料,个人感觉要么不好理解,要么是有误,所以自己按照个人理解画了这个图,如果理解有误请告知,谢谢)
网上有一副动图,感觉比较好,这里也放上:
下面这幅图展示了双曝光下数据读出的框图:
头部厂商SONY的实现方案为DOL-HDR(Digital Overlap HDR),OV实现方案为staggered HDR。
SONY推出的一种sensor多帧HDR技术,支持“准同时”输出多帧不同曝光时间的图像。
最多支持4:1曝光输出:long,medium,short,very short
DOL-HDR的曝光比计算
曝光比和SNR drop相关,DOL的noise profile如下:
(原图地址:HDR Imaging(2)--Digital Overlap_专栏_易百纳技术社区)
可以看到,曝光比越大,SNR drop就越大。SNR drop变得很大的时候,图像就会有明显的锐利边界出现,如下面两张示例图所示:
(两张图独立,无关联)
和DOL-HDR区别不大,但最多支持3:1输出:long,medium,short
另外,OV支持配置四种输出方式:
1. 3帧12bit:L+M+S
2. 在sensor上做L+M的stitch,融合后的16bit图像加上原始的12bit的S
3. L+M融合后的12bit图像加上原始的12bit的S
4. 两帧12bit原始图像:L+S或M+S
在CMOS感光元件中,我们可以通过配置其增益值(模拟增益和数字增益)来放大信号。一般相机都会有一个ISO(感光度)增益调节功能,能够调节ISO值来放大信号,但传统的相机在放大信号同时,噪声也一起放大了。
可不可以通过在不同曝光条件下使用不同增益改善信号质量,辅助实现HDR呢?答案是有的,目前sensor设计里有两种主要的双增益方法:一种在像素里做,叫做DCG(Dual Conversion Gain);一种在读出电路里做,叫做DGA(Dual Gain Amplifier)。
DCG是像素级的双增益方法,Dual这个单词将增益分出了两档:High Conversion Gain(HCG)和Low Conversion Gain(LCG)。
LCG应对于明亮的场景,DCG处于打开状态;HCG应对低光场景,DCG处于关闭状态,灵敏度增加。
要理解其原理,我们首先来看一个不带DCG的CMOS像素电路图
无DCG的像素电路图(原图地址:https://www.photonstophotos.net/Aptina/DR-Pix_WhitePaper.pdf)
缩写 | 说明 |
PD | photodiode,光电二极管 |
TX | transfer transistor,传输门晶体管 |
RST | reset transistor,复位晶体管 |
SF | source follower,源极跟随器 |
RS | row select transistor,行选择 |
Vaa_PIX | analog pixel power supply voltage,像素电压 |
Vout | pixel output voltage node,像素输出电压 |
FD | floating diffusion node,浮动扩散节点 |
C_FD | capacitance at the FD node,FD处的电容 |
转换增益CG和满阱容量FWC关系
CG本身可以简单理解为电路探测到了一个电子后,转换表示为电压的单位,也就是对电子的敏感程度,CG越大,表示一个电子所能转换的电压就越高(不严谨,逻辑上这么理解即可,勿较真)。CG实际上是FD节点电容的一种“反向”表达方式。我们知道电容的公式是:C=Q/V。Q是电荷,V是电压。这意味着随着FD节点的电容增大,FD节点的CG就会减少(因此灵敏度也会下降)。通常来说,像素中所允许的电压摆幅(voltage swing)由整体的sensor设计所固定。这个固定的电压范围意味着CG会对sensor的FW产生显著的影响。
举个例子,假设像素的output处允许1V的电压摆幅,SF的增益是0.8。那么FD处所允许的电压摆幅就等于1V/0.8 = 1.25V。
如果FD的电压摆幅为1.25V,假设有一个sensor,它的CG=30uV/e,那么最大的FWC就等于1.25 * 10^6 uV / (30uV/e) 约为42000个电子;如果CG=150uV/e,那么FWC久等于1.25 * 10^6 / (150uV/e)约为8000个电子。
下图是曝光和FD信号的关系曲线,可以对比一下HCG和LCG下不同的表现。
这个例子中,HCG sensor的CG=127uV/e,FW=10500 electrons;LCG sensor的CG=30.8uV/e,FW=42000 electros。两种情况下,FD处的最大电压变化量几乎相等,大约1.3V(只使用了信号响应曲线中线性变化的部分)。
从这幅图,我们可以看出,相同环境相同曝光情况下(可认为收集的电子数量基本相等),HCG的灵敏度更高,转换输出电压更高。在转换输出电压相同的情况下,LCG所收集的电子数更多。
DCG Sensor简介 - 小米10 至尊纪念版主摄技术 - 知乎
网上的这篇文章(写作中也参考了),对这幅图进行了总结,我对其中的结论有不同意见:相同曝光下,HCG的FD采集的电子数和LCG的FD采集的电子数是大致相同的,而不是HCG比LCG多得多(当然,我是非电子专业,如果理解有误欢迎指正)。
CG,FWC和DR,SNR的关系
对于相同的图像场景和曝光量来说,更高的SNR对应更好的图像质量。我们用SNR_max来表示sensor的饱和曝光量N_max与整体(total)或暂态的(temporal)噪声( 单位以电子计量)的比值来表示最大信噪比,其公式是:
类似的,动态范围DR,我们用N_max比上读取噪声来表示,其公式是
一个更大的FW会增加N_max,因此SNR上限也会增大,同时也增加了sensor的整体动态范围,但增加CG会限制FW所能达到的上限。
动态响应像素技术
有了前面的知识,我们来真正看看使用DCG技术的像素电路。和传统的像素电路对比,最大的不同是红框处。这里增加了一个DCG开关。
当处于高光照环境时,DCG开关打开,连接FD和物理电容,FD节点电容变大,这时对应LCG模式。
当处于阴暗光照环境时,DCG关闭,断开FD和物理电容,这时对应HCG模式。这种情况下,灵敏度变高,读出噪声变小。
最后来看看实际效果:
首先看阴暗环境光照下,HCG和LCG的对比
Aptina MT9H004 sensor with Aptina DR-Pix technology,
144 lux daylight illumination, 125 ms exposure, in LCG mode.
Aptina’s MT9H004 sensor with Aptina DR-Pix technology
with the HCG mode enabled, resulting in higher sensitivity and lower noise.
Seen in 144 lux daylight illumination and 125 ms exposure
然后来看明亮环境下,HCG和LCG的对比
Overexposed scene using HCG in a 2,430 lux daylight illumination scene
with 125 ms of exposure time.
: Properly exposed bright light scene, 2,430 lux daylight illuminant,
125ms, enabled by the LCG mode
of Aptina’s MT9H004 sensor with Aptina DR-Pix technology.
Neo和Zyla中使用的双增益放大器电路
DGA实际电路中有两路放大器,上图是一个sCMOS的电路框图。目的和DCG类似,只是对于DCG方式来讲,如果没有特殊处理,一帧可以选择HCG,一帧选LCG;对DGA来说,可以做成一帧内同时读出HCG和LCG数据。
OV48C上,结合了Dual Gain和行交织一起做,其原理不再赘述。
关于sensor所涉及的HDR(严格来讲HDR+和时域多帧和具体sensor硬件技术关系不大)技术很多,这篇笔记在做的时候参考了很多资料,网上的文章(包括这篇笔记)可能会有错误,在学习的时候需要多加判断。
“CMOS IMAGE SENSORS DYNAMIC RANGE AND SNR ENHANCEMENT VIA STATISTICAL SIGNAL PROCESSING”https://isl.stanford.edu/~abbas/group/papers_and_pub/chiao_thesis.pdfhttps://isl.stanford.edu/~abbas/group/papers_and_pub/chiao_thesis.pdf
HDR sensor 原理介绍 - 知乎
HDR sensor 技术 -- DCG 简介_菜鸡也很难受的博客-CSDN博客
HDR 成像技术学习(一)_沧海一升的博客-CSDN博客_hdr成像
Sony IMX378: Comprehensive Breakdown of the Google Pixel's Sensor and its Features
Technology|Image Sensor:Consumer Camera|Products|Sony Semiconductor Solutions Group
Quad-Bayer Camera Sensors For Better Photos | Ubergizmo
Sony IMX490: On-Sensor HDR and Flicker Mitigation for High Contrast Scenes | LUCID Vision Labs
HDR Imaging(2)--Digital Overlap_专栏_易百纳技术社区
https://www.photonstophotos.net/Aptina/DR-Pix_WhitePaper.pdf