zoukankan      html  css  js  c++  java
  • 安防相机中的WDR技术

    转载自:聊聊安防场景中的WDR - 知乎 (zhihu.com)

    应热心网友点播,今天简单聊聊安防场景中的WDR应用。

    在典型的安防场景中,有一些共性的需求是客户们普遍关注的,考虑到有些观众可能刚刚打开电梯,这里我就简单介绍一下。

    • 实时性

    对安防客户来说,视频监控最重要的一个技术指标就是实时性,简单地说就是每秒25~30帧,越高越好。视频帧率越高则图像越流畅平滑,看起来越舒适。用(曾经)一个办公室mm的话讲,"I can sit all day long watching this video." 而反过来的情形也不难想象,大家都有过网上看电影的经历,如果电影每隔几秒就卡顿一下,那感觉就是别提多纠结了,反正再好看的大片我也看不下去,赶紧关掉走人,道理是一样的。

    • 清晰度

    清晰度也称解像力,是图像质量的一个重要组成部分,它在很大程度上取决于图像的分辨率,也就是像素数,但两者还不完全等价。在安防行业中,常用的图像分辨率有D1,720p,960p,1080p(FHD)等,少数高端项目已经开始引入4K UHD分辨率(3840x2160)。为什么说清晰度不等价于分辨率呢?主要是因为还有很多因素会导致图像质量下降,比如镜头,ISP,编码器,都会导致图像模糊,使图像在标称分辨率的基础上打很多折扣。举个极端一点的例子,如果给4K摄像机安装了一个100万像素的镜头,虽然出来的图像还是4K分辨率的,但实际解像力其实还不如一个1080p的摄像机配200万像素的镜头。

    • 视频编解码

    一帧1080p Full HD画面,如果按24bit RGB来算就是6百万字节,30帧就是180MB或1.4Gbit的数据量,差不多是家用宽度下载带宽的14倍。为了实现在线看电影的梦想,必须把这个数据量压缩100倍以上,这是通过以H.264和H.265为代表的视频压缩技术来实现的。H.264和H.265 标准是全世界科学家和工程师几十年来杰出工作的成果结晶,是人类智慧的一面旗帜,我们每个人都应该感谢曾经为之做出过贡献的人(尤其是用手机看网络电影的时候)。

    其实这段话的主要目的是想说明,视频编解码的效率是安防摄像机的一个特别关键的技术指标,它不仅决定了系统的传输带宽(成本),还决定了系统的磁盘存储(成本),所以以华为海思为代表的安防芯片供应商都会特别重视视频编码技术的研发,不断将各种新技术引入芯片解决方案,以提升产品的竞争力。

    • 夜视性能

    这个其实不难想象,古人有云,月黑杀人夜,风高放火天。自古以来各种违法犯罪活动大多都是挑晚上没人的时候才好下手,所以安防摄像机的夜视性能是一个刚得不能再刚的强需求。大概十年以前,CMOS sensor 的技术还不是特别先进,典型安防摄像机的照度指标其实是在1lux左右,但是大家都很无耻地标0.1lux,反正用户也不大懂。后来sensor技术慢慢进步了,夜视能到0.1lux了,大家都开始标0.01lux。随着背照式工艺(BSI技术)的发明,0.01lux也开始普及了,于是各个厂家开始狂吹星光级。严格意义上的星光级是0.001lux,真正能达到这一指标的安防摄像机,抱歉到2020年为止我还真的一个都没见过。事实上,市面上能测量0.001lux的照度计都是很少见的。

    这是安防摄像机和手机一个主要的区别点。虽然手机也能拍照,但很少有人会期待在0.01lux条件下拍出高质量的照片,因为这个照度一般是钻被窝睡觉的照度,而不是进行社交或自拍活动的合适场景。

    • WDR 性能

    扯了这么多,终于说到主角了。WDR就是宽动态,wide dynamic range,或者HDR,high dynamic range,本质上是一回事,没任何区别。那么,到底什么是宽呢?很简单,搞不定的,就是太宽了,比如

    摄像机装在室内,室内正常照度500lux,玻璃门外就是10000lux,室内外有20倍的照度差,这个动态范围对普通摄像机就太宽了。

    如果上面的图还不够明显,那下面这两个拍摄人脸的例子就更直观一些。

    下面是一个典型的车库场景,重点也是看人和看车的需求。

    在室外监控场景,会经常遇到高光(highlight)与阴影(shadow)并存的挑战。注意下图的大楼入口,在有阳光干扰的情况下很难取得合适的曝光。

    在夜间对着汽车大灯拍车牌时,也是一种典型的宽动态刚需场景。在下面这个图中,现场工程师们其实是选择了逃避矛盾的做法,摄像机其实并没有正面硬刚汽车大灯,而是选了一个大灯几乎照不到的拍摄角度,不然还真刚不过它。

    解决这些问题的关键就在于设备的WDR性能。

     

    WDR影响因素

    • 像素尺寸

    摄像机的核心是CMOS sensor感光元件,而sensor的核心是一个光电感应阵列,由一组像素构成。如下图所示,每个sensor像素可以类比成一个盛水的小桶,每个光子可以类比成一滴雨水,摄像机成像的过程就是用小桶盛接雨水的过程。每个小桶接到的水量将正比于降雨量(曝光量=照度*曝光时间),符合这个模型的sensor工作方式称为线性模式

    小的像素尺寸可以取得高的空间分辨率,但是会牺牲对光信号进行测量的动态范围。大的像素尺寸可以实现大的动态范围,但是会牺牲空间分辨率。

    安防行业中,典型的像素尺寸和工艺在线性模式下可以提供50~60dB的动态范围,更大的尺寸和更好的工艺相结合可以提供70~80dB的动态范围。为了实现更宽的动态范围,则需要使用两次(或多次)曝光再进行算法合成的方法。当sensor工作在多曝光合成模式时,合成后的图像不再与单次曝光量成正比,因此称为WDR模式

    • 镜头

    常见的镜头参数有靶面尺寸(或光学格式)、焦距、光圈范围,这几个是比较容易理解的。其实还有一些规格也非常重要,但并不被人们所熟悉,这里想说的有两个,一个是分辨率,一个是WDR性能。

    有些读者可能是第一次听说镜头也有分辨率的概念,其实道理是非常简单的。下图是一个普通放大镜聚焦后的光斑大小,估计每个人都玩过。

    为了保证清晰度,基本的规则是镜头的焦斑直径应该和像素尺寸匹配。在VGA和D1分辨率时代,sensor像素普遍比较大,4~6微米都很常见,所以镜头分辨率基本不成问题。2000年之后,随着百万像素sensor的普及,典型像素尺寸逐渐向2微米收敛,手机sensor的像素尺寸已经接近甚至小于1微米,所以镜头的聚焦精准度也必须同步提高,将焦斑直径控制到1微米级别。这就需要新技术、新工艺、新设备的支持,到目前为止也只有少数厂家才能稳定地批量制造200万像素以上的高分辨率镜头。

     

    除此之外,应该有不少读者第一次听说镜头也和WDR有关系,然而事实就是如此。一个理想的镜头应该是100%透射的,不吸收或者反射光线,但真实的镜头中,每个镜片都会反射一部分光线,反射光在镜筒中又经历多次反射,最终会有一部分杂散光入射到sensor上,形成干扰图像。

    在WDR场景下,杂散光不再是局部的疥癣之疾,其信号强度甚至可以和正规光路一争高下,后果就是抬升了所有像素的最小值,压缩了像素的动态范围,降低了图像对比度,形成下图所示的面纱眩光(veiling glare)效果。


    在夜间拍照时,由车灯、信号灯在镜头内反射形成的杂散光会在图像的随机位置处形成漂浮的鬼影(ghost image),还会随着摄像机的移动而飘来飘去,导致很多不明真相的群众会误以为自己拍到了灵异世界的影像。

    为了减轻WDR场景下的眩光和鬼影效应,镜头厂家需要不断开发新的材料和新的工艺,提高光线的透射率,抑制杂散光的产生和传播。

     

    WDR模式

    市场上流传着几种关于宽动态功能的称谓,典型的有数字宽动态、True WDR、帧模式宽动态、行模式宽动态等。很多用户被这些貌似专业的术语搞得云里雾里,这里有必要做一些澄清。

    下图是某品牌摄像机的WDR功能配置界面,界面上提供”宽动态“和”数字宽动态“两种选项,让用户甚是迷惑,不知该作何选择。

    所谓数字宽动态其实就是一种图像处理算法,就像用PS处理照片一样,把图像中的暗部调亮,把过亮的区域调暗,使图像整体看起来曝光更合适一些。数字宽动态既然是一种软件算法,它其实是与摄像机硬件能力无关的。如果摄像机上使用的sensor并不支持宽动态,则场景信息在sensor采集图像的阶段就已经彻底丢失了,软件无论做什么操作也不可能恢复出被sensor丢弃的信息,所以本质上“数字宽动态”并不是真正的宽动态,它无助于从源头上捕获场景的宽动态信息。

    因此,所谓“数字宽动态”其实是摄像机厂家创造出来的一个伪概念,用于给实际不支持宽动态功能的产品贴上一个与”宽动态“有关的标签,其技术本质是PS中的"曲线"功能,其效果也是非常有限的,并不能解决任何实际问题。

    由于市场上很多厂家都在卖”数字宽动态“的产品,另外一些做真正宽动态产品的厂家则发明了”True WDR“概念,用来暗示我们的产品才是真正的宽动态,亲爱的客户们可别被别人忽悠了。

    但是某品牌的情况则更复杂一些,因为他们两种产品都卖,所以他们不愿意宣传”真实宽动态“,不然他们就不好回答”数字宽动态“是否真实这个问题。既然不好解释,就干脆不解释,让用户自己去领悟好了。

    主流的宽动态技术一般使用专用的WDR sensor,对同一场景输出两帧图像,一帧长曝光,一帧短曝光,长、短曝光的时间长度采用固定的比例,即曝光比,一般允许用户根据现场条件进行设置。

    WDR等级

    中华人民共和国国家标准《建筑照明设计标准》GB 50034-2013规定了新建、改建和扩建的居住、公共和工业建筑的一般照度标准值。

    可见,一般室内的照度水平正常会在300~500lux之间。而室外照度等级则可能会在10,000 ~ 200,000lux 的广大范围内浮动。关于各种照明条件下的典型lux值可参考下文。

    下图显示了一个WDR场景的例子。室内外使用同样的白色涂料,室内外的照度之比为1:25,按照室内典型照度400lux计算,可以推算室外照度为10000lux。如果相机工作在线性模式且以室外的白墙作为曝光参考,则室内白墙的曝光亮度会是理想值的1/25。

    如果以1lux作为室内阴影区的最小照度,当室外照度为10,000lux时,场景的动态范围是20log(10000/1)=80dB。当室外照度为200,000lux时,动态范围是106dB。为了应对如此宽阔的照度变化,摄像机厂家一般都提供几个预定义的宽动态等级供用户选择,等级越高意味着WDR曝光比越大,适合室外照度高的情况。

    案例分析

    某常用sensor的技术规格书透露了如下技术指标

    sensor 动态范围一般按照如下公式计算

    DR=20log(FWC/Noise)

    其中FWC是像素的饱和阱容,即像素饱和时能容纳多少个电子。Noise是读出噪声,可以理解为多少个电子才能推动ADC变化一个比特(1DN)。

    根据厂家数据DR=69可以反推 FWC/Noise=2818

    厂家没有透露Noise值,不过我们可以用典型值5来估算,则大致有

    FWC=5*2818=14090,这是一个看起来比较合理的值。已知每个像素面积是9平方微米,平均每平方微米能够容纳1565个电子。这个值符合主流工艺的技术水平。

    FWC/Noise=2818的意义可以这样理解,假设有个白色物体的表面反射率为100%(实际一般最大90%),现在对摄像机的曝光进行配置,使该白色物体放在室内最暗处(照度1lux)时曝光为最小可能值1DN,按照这个比例推算,如果将该物体放在室外照度高于2818lux的地方,则该物体将开始过曝。

    其实1lux+白物体是比较极端的例子,更加典型的场景是100lux+灰物体(表面反射率约为20%),在同样的曝光配置下,灰物体将被曝光为20DN,在最终的图像中处于刚刚可以分辨的程度,距离合适的曝光程度还很远。

    从这个案例中我们可以知道,摄像机对宽动态场景的还原能力主要取决于sensor的动态范围。超过sensor动态范围之外的场景信息将毫无疑问地全部丢失,任何后续处理算法都不可能凭空将其恢复出来。

    如果该sensor支持WDR功能,则会提供长、短两种曝光设置(LE和SE),如果室外的实际照度是10000lux,而sensor的记录能力是2818lux,两者存在3.5倍的差距,所以WDR曝光比可以设置为4,这样可以保证同一物体在室内曝光合适时,放到室外也能得到正确的曝光。如果室外实际照度是10万lux,则曝光比需要设置为40。如果实际照度是20万lux,则曝光比需要设置为80,依次类推。

    普通用户很难理解曝光比的概念,所以摄像机厂家一般会用宽动态等级的概念,每个等级对应一个固定的曝光比,让用户根据实际效果选择。如何确定固定的比例是摄像机厂家自己定义的,一般人们会青睐一些特别的数字,如8:1、10:1、16:1、32:1、64:1、100:1等等。

    WDR Flicker

    当摄像机安装在室内环境时,或者在虽然在室外但是环境中存在人造光源时,摄像机的曝光经常会遇到闪烁(flicker)问题,就像下图所示的效果

    闪烁产生的原因是CMOS image sensor 的曝光模式(rolling shutter)与交流电频率(50Hz)共同作用的结果,其原理如下图所示。

    当摄像机工作在WDR模式时,如果采用了固定的曝光比,则很有可能会在长帧(室内场景)引入闪烁。如果是车载应用,则很有可能在短帧(人工光源)引入闪烁。现在很多汽车安装的是LED大灯,并非连续发光,而是以频闪的方式发光,因此摄像机很容易拍摄到大灯刚好熄灭的时刻,如下图所示。

    闪烁会干扰WDR图像合成算法,带来很多图像效果问题,但是这个问题属于结构性矛盾,原则上是无解的,某些摄像机厂家可能会推荐一些变通的方法来进行缓解,使用时需要注意阅读厂家指导手册。

    图像质量三角形

    图像质量是一个很宽泛的概念,捡重要的说,它包含了解像力、色差、噪声、信噪比等若干个关键技术指标(其实还有很多)。帧率、图像质量和编码带宽这三者存在相互制约的关系,可以理解为一个三角形关系

    • 在帧率一定的条件下,图像质量越高,带宽越大
    • 在图像质量一定的条件下,帧率越高,带宽越大
    • 在带宽一定的条件下,帧率越高,图像质量越差

    在有些场景下,带宽是硬性约束,比如在笔者参与过的一个城市监控项目中,警方租用电信公司提供的网络服务,每个10Mbps线路承载两个摄像机,摄像机的数据带宽只要超标3%就开始丢包,也就是说摄像机在任何条件下瞬时带宽都不能超过5Mbps。另一方面,警方的技术规范要求在任何情况下视频的帧率不能低于25fps,H.264的编码质量不能低于QP值24。这个条件对于多数普通的点位来说倒也问题不大,但是有一些人流特别密集的口岸点位则是压力山大,本质上是所有的压力都集中到了编码器上。

    编码器的挑战

    H.264/265编码器对视频数据进行压缩的理论基础存在几个关键支撑点,

    • 空间冗余:在一帧图像内,一个小区域内的像素记录的极可能是同一物体的同一材质,多数情况下这些像素是高度相似的,或者在某种尺度下相似,这种相似性即构成数据压缩的基础
    • 时间冗余:视频图像中经常存在某些位置像素值是基本无变化的,或者只在有限的小范围内发生平移,这种时间相似性即构成数据压缩的基础,事实上这是最大的压缩性来源
    • 编码冗余:经常出现的模式可以用更少的比特位编码,较少出现的模式可以用更多的比特位编码
    • 视觉冗余:人类视觉对颜色的空间分辨能力低于对亮度的分辨能力,因此可以用更低的频率对色度进行采样,降低待处理的数据量

    在安防实践中,经常会遇到一些复杂场景会破坏编码器的理论基础,降低它们的编码效率。

    复杂的纹理会破坏图像的空间冗余,使编码器不得不使用大量的比特位去描述图像的纹理信息。下图这种椅子的椅背部分就是很有代表性的复杂纹理,它会导致码率成倍增加。

    密集的人流无序的运动会破坏视频的时间冗余,使编码器无法利用前后帧之间的相似性进行信息压缩,导致码率成倍增加。

    在室外监控场景中,树木和植物随风晃动也会破坏视频的时间冗余,导致编码器不得不消耗大量的比特位去描述这种没什么意义的运动信息,白白浪费带宽。

    而最严重的情况则是发生在夜晚,夜间低照度、高增益环境会导致严重的图像噪声,噪声的出现会破坏一切视频冗余,肆意践踏编码器的全部理论基础。

    噪声在空间上是无关的,在时间上也是无关的,能量分布则是各个频率都有,编码器不得不将大量的比特位消耗在这些完全不携带任何有用信息的数据上。在特别极端情况下,编码后的H.264图像可能会比不编码的RGB图像尺寸还大,即发生负压缩率的情况。这就是为什么安防摄像机特别重视图像降噪的原因。

    应对措施

    现在我们已经知道了,编码器的最大敌人是噪声,其次是无效的运动,这两样东西是完全不产生价值只带来成本的累赘,必欲除之而后快。接下来是复杂的纹理和密集的运动,这两样是给我们带来价值的东西,在这上面投入成本属于投资行为,我们的关注点应该在于优化编码器的算法以实现更好的性价比,获得更多的投资回报。

    降低编码器压力的一个措施就是控制画面的运动,避免无意义的运动。有很多画面的运动不是场景本身引起的,而是由摄像机3A算法调整引起的,画面颜色的改变、亮度的调整都会诱发编码器动作,消耗大量的比特位去描述画面的变化,而很多情况下这些变化并没有带来什么价值,更多的原因是算法的低效而已。

    有些画面的运动是有场景本身引起的,比如植物运动,或者不相关的区域有人类活动等等。这种情况下,可以考虑调整摄像机视角,或者切掉一部分画面,或者使用摄像机提供的隐私遮罩功能将不相关的区域涂灰,从源头上剥夺这些区域参与编码的机会。

    噪声对AI的影响

    很多场景下,摄像机拍摄的图像会送给内部或外部的AI算法单元完成人、车识别等智能处理任务,比如下面这种。

    顺便提一句,根据目前的法律实践,一个可以构成处罚依据的证据链至少需要包含四张照片,一张高清局部放大照片可以准确地呈现当事人(车)的细节特征,三张照片可以体现违法行为开始、中间、完成的过程。

    AI算法在对人、车进行识别时,识别结果的准确率在很大程度上会受到图像质量尤其是图像噪声水平的影响。这个特性和人类视觉的行为模式存在较大差别。人类拥有的“智能识别算法”似乎对噪声没有特别敏感,在图像中加入一些噪声对很多人来说几乎是无感的,并不会显著降低人类的判断能力。但AI算法却做不到这一点。在下图所示的例子中,大熊猫照片叠加了一点随机噪声后,人眼几乎毫无察觉,但AI算法却(99.3%)信誓旦旦地将加了噪声的大熊猫判定为“长臂猿”。

    因此,不论是从编码器,还是从AI算法的角度考虑,降低图像噪声都是极其必要的。

    WDR 与降噪

    控制图像噪声最有效的方法是提高信号的强度,从而提高图像的信噪比。对于摄像机来说,提高信号只有两种方法,即

    • 开大光圈,让更多的光线进入sensor。光圈开打后,图像景深会变小,对于识别应用来说,有效的可识别区域会变小,所以此方法受到景深条件的制约。
    • 增加曝光时间,使sensor可以捕获更多的光信号。曝光时间增加后,运动模糊会变严重,也会影响识别算法的准确率,所以此方法受到运动模糊条件的制约。

    对于以图像识别为核心的应用来说,曝光过度带来的信息损失一般大于欠曝引起的损失,所以图像的目标亮度可以比中值稍暗一点,一般不会影响识别准确率。另一方面,欠曝意味着sensor增益偏小,有助于减少由增益电路引起的噪声,这对图像识别也是有帮助的。

    下图是某品牌摄像机的曝光设置界面,对于人脸识别应用来说,基本原则是优先保证快门尽量长,然后尽量减少电子增益。

  • 相关阅读:
    JavaScript监控当前cpu使用状况
    JavaScript面向对象编程深入分析(1)
    学习Javascript闭包(Closure)
    JavaScript面向对象编程深入分析(3)
    JavaScript面向对象编程深入分析(2)
    浏览器的标准模式和怪异模式
    js实现简单网速测试方法
    浏览器的两种模式quirks mode 和strict mode
    详解Javascript 中的this指针
    virtualbox安装centos 6.4 server 网络连接问题
  • 原文地址:https://www.cnblogs.com/qinghaowusu/p/15210181.html
Copyright © 2011-2022 走看看