我是靠谱客的博主 自觉蜗牛,最近开发中收集的这篇文章主要介绍Camera Sensor 的工频闪烁                                   Camera Sensor 的工频闪烁,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

                                   Camera Sensor 的工频闪烁

目录

                   Camera Sensor 的工频闪烁

一、工频干扰闪烁现象

二、工频干扰闪烁的原因

三、如何规避工频干扰导致的闪烁


一、工频干扰闪烁现象

出现工频闪烁时,从视频上看会发现有规律的明暗相间的条纹,如图1所示。

                                                                 图1 工频闪烁

二、工频干扰闪烁的原因

Sensor在日光灯作为光源下获取图像数据时会产生flicker,其根本原因是照在不同pixel上光能量不同产生的,所接受的光能量的不同也就是图像的亮度的不同。电源的频率有两种标准:50Hz(大陆)和60Hz(台湾、日本)的正弦波形,当然能量是没有方向性的,因此对应的能量是一个频率为100Hz和120Hz的波形,如下图2所示:

 

                                                            图2 60Hz电源频率及能量波形

 

由于能量在时间方向上的波形,照在sensor上就使每一个pixel产生在时间方向上的相应波形,由于CMOS sensor的曝光方式是一行一行的方式进行的,任何一个pixel的曝光时间是一样的,也就是同一行上的每个pixel的曝光开始点和曝光的时间都是一模一样的,所以同一行的所有点所接受到的能量是一样的,而在不同行之间虽然曝光时间都是一样的,但是曝光的开始点是不同的,所以不同行之间所接受到的能量是不一定相同的。由此产生sensor出来的图像可能在图像高度方向上会有相应的波形,如下图3:

 

                                                               图3 sensor图像数据能量示意图

 

为了使不同行之间所接受的能量相同,就必须找一个特定的条件,使得每一行即使曝光开始点不同,但是所接受的光能量是相同的,这样就避开了flicker,这个特定的条件就是曝光时间必须是光能量频率Hz的整数倍时间。

计算原理为:

50HZ交流电能量周期:T = 1/(50*2)

sensor曝光一帧所用的时间 T_frame = 1/FPS;

sensor曝光一行所用的时间 T_row = T_frame/Line_max  (Line_max = Exp_max);

为了避免flicker,必须满足每一行获取的能量是交流电能量周期的整数倍,否则会应为获取的能量不一致,导致水波纹现象的产生。即:

T_row * Step = n * T

故:Step = (n * T)/T_row = n*(FPS *Exp_max) /100; (n取正整数)

这个是计算Banding Flicker的依据,具体计算方法如下:

50Hz

Banding Value = Total lines * fps / 100

60Hz

Banding Value = Total lines * fps / 120

 三、如何规避工频干扰导致的闪烁

相信在很多地方都可以了解到,只要曝光时间是光能量周期(100Hz)的整数倍,即可规避工频干扰导致的闪烁问题。
       但是当曝光时间低于光能量周期(10ms)时,有应该如何规避这个问题呢?
       假设帧率为10fps,那么设置一帧的时间间隔刚好为100ms,那么,每帧开始曝光开始时间都会是一致的,在相同的曝光时间,得到的光能量也就一致了。(由于有些提示是100ms的帧间隔,但是由于误差问题,不是准确的100ms,误差累计导致闪烁)。

通过设置帧率,使得每一帧之间的间隔为10ms的整数倍,每帧对应的每一行曝光得到的光能量一样(从能量波形来看,要使得每一行曝光所对应的能量一样,只需要确保对应的每一行时间内对能量波形积分,所得到的面积一样即可满足),从视频上来看,当曝光时间低于光能量周期(10ms)时,明暗相间的条纹位置固定不动,视频上看来不会有明显的频闪现象。

 

以50Hz为例说明,实现这个有两种办法:
  1、设置曝光控制,强制为10ms整数倍变化,但是这样会浪费一部分曝光时间,导致曝光无法用满,在室内自然就会损失性能。
  2、修改桢率,使每桢图像分到的时间是10ms的整数倍,则可以用满每桢曝光时间在,室内效果更好。修改桢率可以插入Dummy Line或者Dummy Pixel。这需要一点点计算,具体计算需要看sensor输出Timing。
  例如把桢率设置为7.14fps,则每桢曝光时间是140ms。如果是15fps,则每桢曝光时间是66.66ms,如果强制曝光为10ms整数倍,最大即60ms,则有6.66ms无法参与曝光,损失性能。
  具体调整桢率方法得和sensor的FAE沟通,每个sensor都可能不一样,不能一概而论。调整桢率还有个原则要注意,预览一般不能低于 10fps,再低就很卡,常用14.28fps和12.5fps;抓拍不能低于5fps,否则用手就很难拍出清晰的照片,常用7.14fps。桢率是一个权 衡折中的选择

       高了曝光时间不够,暗光效果太差,低了没法拍照,容易虚

 

参考:

关于cmos工频干扰导致的闪烁问题

camera工频干扰问题


 

 

最后

以上就是自觉蜗牛为你收集整理的Camera Sensor 的工频闪烁                                   Camera Sensor 的工频闪烁的全部内容,希望文章能够帮你解决Camera Sensor 的工频闪烁                                   Camera Sensor 的工频闪烁所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部