摄像头ISP的关键信号处理
其实前面学习了图像和色彩相关内容,我们可以知道,ISP需要处理的内容还蛮多的,我们最常见的就是畸变校正,白平衡,去噪声、空间转换、WDR合成宽动态。
![](https://pic3.zhimg.com/80/v2-2039271a174b231214d22d283fc257ee_720w.webp)
景物通过 Lens 生成的光学图像投射到 sensor 表面上, 经过光电转换为模拟电信号, 消噪声后经过 A/D 转换后变为数字图像信号, 再送到数字信号处理芯片( DSP) 中加工处理。所以,从 sensor 端过来的图像是 Bayer 图像,经过黑电平补偿 、镜头矫正 、坏像素矫正 、颜色插值 、Bayer 噪声去除、 白平衡矫正、 色彩矫正 、 gamma 矫正、 色彩空间转换( RGB 转换为 YUV) 、 在 YUV 色彩空间上彩噪去除与边缘加强、 色彩与对比度加强,中间还要进行自动曝光控制等, 然后输出 YUV( 或者 RGB) 格式的数据, 再通过 I/O 接口传输到 CPU 中处理。
我们以海思的ISP芯片支持的功能如下:
ISP 模块支持标准的Sensor图像数据处理,包括自动白平衡、自动曝光、Demosaic、坏点矫正及镜头阴影矫正等基本功能,也支持WDR、DRC、降噪等高级处理功能。
ISP 主要支持的图像处理功能如下:
支持黑电平校正
支持静态以及动态坏点校正,坏点簇矫正
支持 bayer降噪
支持固定噪声消除
支持 demosaic处理
支持紫边校正(CAC)
支持 gamma校正
支持动态范围压缩(DRC)
支持 Sensor内部合成宽动态功能(Sensor Built-in WDR)
Hi3559AV100最大支持4合1 宽动态功能(WDR),Hi3519AV100/Hi3516CV500 最大支
持2合1 宽动态功能(WDR)
支持自动白平衡
支持自动曝光
支持自动对焦
支持 3A相关统计信息输出
支持镜头阴影校正
支持图像锐化
支持数字防抖(Hi3516CV500 不支持)
支持自动去雾处理
支持颜色三维查找表增强
支持局部对比度增强
支持亮度着色(Hi3516CV500 不支持)
支持 3D降噪
前面很多ISP处理的色彩相关内容已经有描述了,我们重点讲讲WDR 宽动态指标,这个在车载摄像头中对于自动驾驶非常非常重要的指标,譬如经常有机构反馈的太阳光太强的时候,摄像头拍出来的图片就曝光了,显示不清楚,或者由太阳很强的地方突然进入隧道,这个时候拍出来的图片就太暗,看不清楚内容,其实这个都和WDR宽动态指标密切相关。
![](https://pic2.zhimg.com/80/v2-3021e0d1c1bba383e720016241abd2b1_720w.webp)
什么是sensor 的动态范围dynamic range
sensor的动态范围就是sensor在一幅图像里能够同时体现高光和阴影部分内容的能力,实际上就指的是摄像头同时可以看清楚图像最亮和最暗部分的照度对比。
用公式表达这种能力就是:
DR = 20log10(i_max / i_min);db
i_max 是sensor的最大不饱和电流—-也可以说是sensor刚刚饱和时候的电流 i_min是sensor的底电流(blacklevel);
为什么HDR在成像领域是个大问题?
在自然界的真实情况,有些场景的动态范围要大于100dB。
人眼的动态范围可以达到100dB。
![](https://pic3.zhimg.com/80/v2-ace0245be540d04a1053ff9940b7f166_720w.webp)
上图的传感器只有16个象素,这些象素能在传感器曝光过程中迅速吸收光子。一旦这些象素满载,光子便会溢出。溢出会导致信息(细节)损失,以红色为例,高光溢出使满载红色的象素附近的其他象素的值都变成255,但其实它们的真实值并没有达到255。这样会造成高光部分的信息缺失,另一方面,用来描述昏暗环境的象素没有足够的时间接收光子量,得出的象素值为0,这样反而会导致昏暗部分的信息缺失。
Sensor 的动态范围:高端的 >78 dB; 消费级的 60 dB 上下;
所以当sensor的动态范围小于图像场景动态范围的时候就会出现HDR问题—-不是暗处看不清,就是亮处看不清,有的甚至两头都看不清。
![](https://pic2.zhimg.com/80/v2-96a3f93989ab40cb762d657375061ecd_720w.webp)
暗处看不清–前景处的广告牌和树影太暗看不清。
![](https://pic3.zhimg.com/80/v2-5ff148874c515b9730369e18b1f4f832_720w.webp)
亮处看不清–远处背景的白云变成了一团白色,完全看不清细节。
解决HDR问题的数学分析
根据前边动态范围公式
DR = 20log10(i_max / i_min); //dB
从数学本质上说要提高DR,就是提高i_max,减小 i_min;
对于10bit输出的sensor, i_max =1023,i_min =1, 动态范围DR = 60;
对于12bit输出的sensor, DR = 72;
所以从数学上来看,提高sensor 输出的bit width就可以提高动态范围,从而解决HDR问题。可是现实上却没有这么简单。提高sensor的bit width导致不仅sensor的成本提高,整个图像处理器的带宽都得相应提高,消耗的内存也都相应提高,这样导致整个系统的成本会大幅提高。所以大家想出许多办法,既能解决HDR问题,又可以不增加太多成本。
解决HDR问题的5种方法
从sensor的角度完整的DR 公式:
![](https://pic3.zhimg.com/80/v2-edc386d6b875d604df453af04dee6dc2_720w.webp)
![](https://pic4.zhimg.com/80/v2-da2f99dd313dc61189862677b406838b_720w.webp)
解决高动态HDR的方法
解决HDR问题的常规有5种方法
从sensor的角度完整的DR 公式:
![](https://pic3.zhimg.com/80/v2-edc386d6b875d604df453af04dee6dc2_720w.webp)
Qsat :Well Capacity idc: 底电流,tint:曝光时间,σ:噪声。
方法1:提高Qsat –Well capacity 。
就是提高感光井的能力,这就涉及到sensor的构造,简单说,sensor的每个像素就像一口井,光子射到井里产生光电转换效应,井的容量如果比较大,容纳的电荷就比较多,这样i_max的值就更大。普通的sensor well只reset一次,但是为了提高动态范围,就产生了多次reset的方法。通过多次reset,imax增加到i‘max,上图就是current to charge的转换曲线。但这种方法的缺点是增加FPN,而且sensor的响应变成非线性,后边的处理会增加难度。
方法2:多曝光合成
本质上这种方法就是用短曝光获取高光处的图像,用长曝光获取阴暗处的图像。有的厂家用前后两帧长短曝光图像,或者前后三针长、中、短曝光图像进行融合
If (Intensity > a) intensity = short_exposure_frame; If (Intensity < b) intensity = long_exposure_frame; If (b<Intensity <a) intensity = long_exposure_frame x p + short_exposure_frame x q;
当该像素值大于一个门限时,这个像素的数值就是来自于短曝光,小于一个数值,该像素值就来自于长曝光,在中间的话,就用长短曝光融合。这是个比较简化的方法,实际上还要考虑噪声等的影响。
![](https://pic3.zhimg.com/80/v2-e1f546ffe327e670d0f33fc181a8c22e_720w.webp)
Current to charge曲线显示:imax增加a倍。
这种多帧融合的方法需要非常快的readout time,而且即使readout时间再快,多帧图像也会有时间差,所以很难避免在图像融合时产生的鬼影问题。尤其在video HDR的时候,由于运算时间有限,无法进行复杂的去鬼影的运算,会有比较明显的问题。于是就出现了单帧的多曝光技术。
方法3:单帧空间域多曝光。
最开始的方法是在sensor的一些像素上加ND filter,让这些像素获得的光强度变弱,所以当其他正常像素饱和的时候,这些像素仍然没有饱和,不过这样做生产成本比较高,同时给后边的处理增加很多麻烦。所以下面的这种隔行多曝光方法更好些。
![](https://pic3.zhimg.com/80/v2-518ce6a64321b6661725f531532b8f12_720w.webp)
如上图所示,两行短曝光,再两行长曝光,然后做图像融合,这样可以较好的避免多帧融合的问题,从而有效的在video中实现HDR。同时由于video的分辨率比still要低很多,所以这个方法所产生的分辨率降低也不是问题。这个方法是现在video hdr sensor的主流技术。
方法4:logarithmic sensor
实际是一种数学方法,把图像从线性域压缩到log域,从而压缩了动态范围,在数字通信里也用类似的技术使用不同的函数进行压缩,在isp端用反函数再恢复到线性,再做信号处理。
缺点一方面是信号不是线性的,另一方面会增加FPN,同时由于压缩精度要求对硬件设计要求高。
方法5:局部适应 local adaption
这是种仿人眼的设计,人眼会针对局部的图像特点进行自适应,既能够增加局部的对比度,同时保留大动态范围。这种算法比较复杂,有很多论文单独讨论。目前在sensor 端还没有使用这种技术,在ISP和后处理这种方法已经得到了非常好的应用。
![](https://pic2.zhimg.com/80/v2-6101f71ae2c000c70212d865bc00575d_720w.webp)
上图就是用方法2 + 方法5处理后的HDR图像。亮处与暗处的细节都得到了很好的展现。
除了HDR sensor,HDR image processing也需要用相应的能力来支持HDR,例如:
Multi-Exposure Combining: 拿到数据之后使用合成方法合成;
High Bit-Depth Processing: 支持高带宽,比如12比特或20比特的图像数据处理
Tone Mapping to Low Big-Depth: 通过非线性的压缩算法将高bit数据压缩到低bit数据,并保留相应的图像细节。
![](https://pic3.zhimg.com/80/v2-e74015e1734ccc8f142253347f4a4b66_720w.webp)
车载图像处理芯片ISP处理模式:
这里可以看到摄像头可以通过外置的ISP来满足HDR宽动态的要求,从而让机器能够很好的识别到图像内容,但是这也是一把双刃剑,我们可以看到很多情况下需要三帧合成一帧,对于需要自动驾驶快速处理图像内容来说,HDR的弊端就是导致整个图像的延迟变长了。
我们举最常见的摄像头为例,以60HZ的摄像头为例,一帧图像到下一帧图像的时间间隔为16.67ms,假如我们忽略传输过程中的延时,那么主机接收到下一帧率的图像至少需要16ms的间隔,此时如果我们启动HDR,三帧合成一帧,那么就相当于变为 20HZ的摄像头图像了,那么传输到主机的时间变为50ms的间隔,比原来16.67ms的时间延长了约为34ms,这个时间在高速行驶的时候,至关重要,按照120km/h的高速行驶,这个距离就已经是1.12米了。
特别是后拉摄像头过来的延时,会导致驾驶人员对于后面车距判断的失误,如果是单目摄像头机器做辅助驾驶,对于距离是通过两帧去计算距离的,这个对于距离的计算也会有很大的误差,所以HDR是一把双刃剑,如果要这部分宽动态HDR图像,那么摄像头的帧率必须提高,提高到120HZ的摄像头,这个时候成本又增加了,所以要以低成本不增加摄像头帧率情况下,做出非常好效果的HDR,这个对于ISP芯片及算法厂家来说都是一个考验。
所以一般ISP芯片有两种场景处理模式:主要包括线性模式和WDR 模式两种典型应用,内部是可以选择是否启动WDR宽动态。
线性模式的图像质量关注维度主要包括图像亮度合理性,色彩还原准确、图像整体清晰度锐利以及图像的整体通透性等;
![](https://pic4.zhimg.com/80/v2-e77f6e1d0ffcc1d0d1108c26a7d7ce9f_720w.webp)
WDR模式的图像质量关注维度主要包括图像整体的动态范围合理,即亮区不过曝,暗区细节能够看得见,色彩还原尽量准确、图像整体清晰度锐利以及图像整体通透性等维度。
![](https://pic3.zhimg.com/80/v2-133e876b2de4b99ba3104bc33b02fec2_720w.webp)
ISP和图像相关内容阐述完,其实我们发现评价一个车载摄像头系统的指标,除了摄像头本身的分辨率、信噪比、灵敏度以为,还需要增加ISP处理图像的效果能力的重要指标。
白平衡处理能力、图像自动增益能力、色彩还原性、畸变和图像校正能力、FOV角度等等。
标签:HDR,ISP,图像,动态,sensor,摄像头 From: https://www.cnblogs.com/kn-zheng/p/17187011.html