自动曝光Flicker现象分析

news2024/12/25 23:27:43

1、sensor Flicker现象

相机输出画面会出现频闪,尤其是对着日光灯管场景,画面中有水波纹渐变或者阴影纹路,如下图所示。

所展示的现象为:

1、同一帧的不同行的亮度各不相同,存在亮暗变化的条纹;

2、不同帧的相同行的亮度可能不相同,出现水波纹一样的纹路跳变。

二、 帧曝光分析

2.1 交流电变化规律

交流电其实是一种正弦波,其频率有两种:50HZ和60HZ,中国、泰国、印度、大部分欧洲国家等地采用50HZ,美国、加拿大、墨西哥等地采用60HZ。

下面以50HZ为例进行解释,交流电以1/50s,即20ms的周期进行变化,其变化规律如图所示:

而对于能量来说,并没有正负之分,因此能量的周期是1/100s,即10ms。

因此,普通的以交流电为电源的白炽灯的亮度实际上在一直在以10ms为周期随着交流电变化而发生变化,只不过人眼感知不到画面亮度的变化罢了。

2.2 对同一帧内的不同行进行分析

曝光时间为10ms时

如图所示,假如第M行和第N行分别在tm​和tn​时刻开始曝光,曝光时间为都10ms,图中阴影部分的面积就表示该行的亮度

我们知道第M行的积分面积与第N行的积分面积是相同的,因为积分时间刚好是周期的整数倍,此时不同行的亮度是相同的,不会产生banding现象。

曝光时间为8ms时

如图所示,假如第M行和第N行分别在tm​和tn​时刻开始曝光,曝光时间为都8ms,图中阴影部分的面积就表示该行的亮度

我们可以知道看出来第M行的积分面积(跨越波峰)大于第N行的积分面积(跨越波谷),因此这两行的亮度就会有差异,在当前帧中就会出现不同行亮度不同的水波纹现象。

2.3 对不同帧的同一行进行分析

假设,第M帧的第N行在tm​时刻开始曝光,第M+1帧的第N行会在tm+1​开始曝光,如果此时的帧率为30FPS,每帧时间为为1/30s,即33ms。我们可以知道:

tm+1​=tm​+33ms


当曝光时间为8ms时

如图所示,第M帧的第N行的积分面积要大于第M+1帧的第N行的积分面积(经过谷底),此时不同帧的相同行亮度也会发生表现,加上上面的分析,我们可以得知,在30FPS情况下,以8ms进行曝光时不仅会出现水波纹,而且水波纹还会滚动,出现上面视频中的表现。

但是,如果此时以25FPS的帧率进行分析,每帧为1/25s,即40ms时,情况会变得不一样,此时:

tm+1​=tm​+40ms

如图所示,由于40ms为周期10ms的整数倍,因此这两行的起始时刻相位是相同的,所以两行的积分面积是相同的,因此此时不会出现画面闪烁。

三、sensor曝光模式

如果成像系统的曝光方式是“卷帘式曝光”(Rolling Shutter),由于每一行曝光时间不同,获得的曝光量也可能不同;那么在不同的感光面接收到的光能量不一样,从而产生了图像上的频闪条纹。

电子卷帘快门通过通电控制传感器,使其不同部分在不同时间下逐行进行曝光,直到所有的像素点被曝光。

但是全局曝光也不能幸免于时间调制的照明效果,它表现为一种曝光的“呼吸”,其中光脉冲可能与传感器的整合期同步(较亮),或与传感器的读出期同步(较暗)。具体现象是在视频中的帧之间会出现明暗闪烁的现象,同时这种闪烁的灯光现象也会混淆HDR多重曝光的图像融合。

3.1 全局曝光(Global Shutter)

全局曝光特点:

1、像素同时曝光;

2、适合拍摄运动物体,没有图像畸变

3、相同曝光时间,相比卷帘曝光会增加噪声读出

考虑到光源频闪的周期性,在一个周期内,光源亮度的累积值,应该是大体一致的。所以,如果控制曝光的时间是频闪周期的整倍数,那么每一帧图像的亮度就大体是一致的了,这样就可以有效地抑制呼吸闪对图像亮度的影响。

曝光时间= N ×(1/(工频×2)),N是非0正整数。比如工频是50HZ,N取2时,那么曝光时间 = 1/50,对应视频帧率就是50fps,N取4时,对应帧率是25fps。

3.2 卷帘曝光(Rolling Shutter)

卷帘曝光特点:

1、像素逐行曝光;

2、适合拍摄静态、低俗运动物体。拍摄动态物体容易图像畸变

3、帧率调节、噪声控制相对灵活

Rolling Shutter的曝光方式是逐行进行的,同一行Pixel的曝光时间是一样的,每行Pixel的曝光起始和结束的时间都是一样的。不同行之间,虽然每行的曝光时长是一样的,但时域上每行曝光的开始点是不同的,所以不同行之间pixel积聚的能量不一定相同。

以50HZ的交流电频率来说,解决频闪有两种办法:

1、控制Sensor每行的曝光时间为10ms的整数倍

2、每帧图片的时间是10ms的整数倍

四、小结

这里可以给出结论:

1、当曝光时间为光源能量周期的整数倍时,不会出现banding现象;

2、当曝光时间不为光源能量周期的整数倍时,一定会出现不同行之间的亮度差异,即水波纹一样现象;但是水波纹会不会上下滚动还要看帧率;

3、当每帧时间(1/fps)为光源能量周期的整数倍时,不同帧之间的相同行不会出现亮度变化,即哪怕有水波纹也不会滚动,反之水波纹会上下滚动;

五、LED灯情况分析

LED并不是是随着交流电的频率变化的而是自身控制的,LED灯的频率并不固定,一般来说在90HZ~200HZ,不同的LED灯有不同的频率,如图所示灯是90HZ,占空比为20%的LED亮暗示意图,当电平为高时LED灯亮起,当电平为低时,LED灯熄灭,因此这里我们也可以看到为什么LED会节能呢?因为它大部分时间都不亮。

那对于图像传感器来说,LED与普通白炽灯有什么区别呢?

1、白炽灯其实是一直亮着的,但是LED灯的大部分时间是灭的,因此采集图像时有可能会采集到LED灯灭掉的时刻,比如ADAS相机如果采集到的红绿灯是灭的,那么ADAS算法也无法判断当前应该是停车还是直接走;

2、交流电的频率是固定的,要么50HZ,要么60HZ;但是LED灯的频率没有具体标准,比如频率很低的警车上鸣笛的那个红蓝信号灯频率可以低到5HZ,而高频的LED灯可以达到200HZ,并没有一个固定的频率;

不过,分析方式是一样的每一行的亮度取决于在该行曝光时间内的外界亮度的积分。这里以90HZ,占空比为20%的LED灯为例进行分析,因为在车载领域,对LED banding有要求的也是大于90HZ的LED灯下无明显的频闪和水波纹。


参考文献:

今日分享丨频闪Flicker_时间_变化_Shutter

Camera驱动 | Sensor Flicker产生原因和解决方法-腾讯云开发者社区-腾讯云

我的个人博客主页,欢迎访问

我的CSDN主页,欢迎访问

我的GitHub主页,欢迎访问

我的知乎主页,欢迎访问

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1953339.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

睿抗题解集

睿抗 2023国赛RC-u1 睿抗,启动!RC-u2 桌游猜谜RC-u3 兰州拉面派餐系统RC-u4 拆积木RC-u5 栈与数组总结2023国赛 RC-u1 睿抗,启动! #include<bits/stdc++.h> using namespace std; const int N=1e6+10; char a[26],b[26]; string s;int change(int op,int idx){if(op…

Docker安装oracle19c

文章目录 Docker安装oracle19c1. 拉取镜像2. 创建目录并赋权3. 构建容器并启动4. 查看日志5. 登录docker容器里面6. 登录sqlplus 创建PDB用户7. 查看show pdbs7. 切换数据库8. 创建用户9. 授权10. 使用navicat连接11. 参考和感谢 Docker安装oracle19c 1. 拉取镜像 docker pul…

SQLite3(3):Qt中使用SQLite3

目录 一、前言 二、Qt相关类 2.1 QSqlDatabase 2.2 QSqlQuery 2.3 QSqlQueryModel 三、Qt基本应用实现 3.1 mainwindow.h 3.2 mainwindow.cpp 3.3 应用界面 四、总结 一、前言 本文进行在Qt中实现SQLite3的基本功能实现演示。 在Qt中不论我们连接的何种类型的关系型…

尝鲜免费文生视频!【智谱清影】

&#x1f680;&#x1f680;震撼发布&#xff01;你还在为制作短视频头疼吗&#xff1f;耗时太长&#xff1f;技术门槛高&#xff1f;别怕&#xff0c;AI生成视频神器——清影&#xff08;Ying&#xff09;来啦&#xff01;只需30秒&#xff0c;就能get到一段6秒的炫酷视频&…

vue2实现el-tab的内容框右击关闭除了首页的其他所有页面

效果图 <!-- 右键功能 --><div v-show"contextMenuVisible"><ul :style"{left:menuLeft px,top:menuToppx}" class"contextmenu"><li><el-button type"text" click"closeAll" size"mini&qu…

分类预测 | Matlab实现CNN-LSSVM多特征故障诊断/分类预测

分类预测 | Matlab实现CNN-LSSVM多特征故障诊断/分类预测 目录 分类预测 | Matlab实现CNN-LSSVM多特征故障诊断/分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现CNN-LSSVM卷积神经网络结合最小二乘支持向量机故障诊断/分类预测&#xff08;Matlab完…

springboot高等职业院校实验室信息管理-计算机毕业设计源码24015

摘 要 本文旨在设计并实现一个基于Spring Boot框架的高等职业院校实验室信息管理系统。该系统采用B/S体系结构&#xff0c;以MySQL作为数据库管理平台&#xff0c;结合前端技术如HTML、CSS和JQuery&#xff0c;为用户提供一个功能全面、操作便捷的实验室信息管理平台。 在系统设…

Keras入门:一维线性回归问题

目录 一、一维变量线性回归 1. 数据生成 2. 建立训练模型 3. 作图 4. 完整代码 一、一维变量线性回归 1. 数据生成 import keras import numpy as np import matplotlib.pyplot as plt #matplotlib inline xnp.linspace(0, 100, 30) #0~100之间&#xff0c;生成30个数 y…

xLua | xLua Framework | 2 加载

0. 基础 0.1 不同加载模式 测试用 编辑器模式&#xff1b;打包模式&#xff1b;更新模式 public enum GameMode {EditorMode,PackageBundle,UpdateMode, } 0.2 加载资源步骤与接口 private void LoadAsset(string assetName, Action<Object> action) {if (AppConst.G…

vue3使用递归组件渲染层级结构

先看看是不是你想要的&#xff1a; 当有层级去渲染的时候&#xff0c;嵌套的层级不明确&#xff0c;这时只能通过递归组件去渲染。 数据如下&#xff1a; 通过判断subCatalog这个字段的长度是否大于0来确定是否有下级。 上代码&#xff1a;(代码是使用uniapp开发的&#xff0…

visual studio 问题总结

一. Visual Studio: 使用简体中文&#xff08;GB2312&#xff09;编码加载文件, 有些字节已用Unicode替换字符更换 解决方法&#xff1a;vs 工具-》选项-》文本编辑器

24年第三届钉钉杯大学生大数据挑战赛浅析

需要完整资料&#xff0c;请关注WX&#xff1a;“小何数模”&#xff01; 本次钉钉杯大数据挑战赛的赛题已正式出炉&#xff0c;无论是赛题难度还是认可度&#xff0c;该比赛都是仅次于数模国赛的独一档&#xff0c;可以用于国赛前的练手训练。考虑到大家解题实属不易&#xf…

【BUG】已解决:ERROR: Failed building wheel for jupyter-nbextensions-configurator

ERROR: Failed building wheel for jupyter-nbextensions-configurator 目录 ERROR: Failed building wheel for jupyter-nbextensions-configurator 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我…

【深入理解SpringCloud微服务】深入理解nacos

【深入理解SpringCloud微服务】深入理解nacos Nacos服务注册内存注册表内存注册表的更新通知客户端服务变更、服务同步、健康检查2.x版本nacos的变化 Nacos服务注册 spring-cloud-alibaba-nacos-discovery通过实现spring-cloud-commons规范定义的接口&#xff0c;完成nacos接入…

西电网络空间安全综合953考研分享||西安电子科技大学

一、院校选择 如何选择适合自己的学校以及专业 1. 首先要对自己选择的学校有热情&#xff0c;选择自己最想去的学校 2. 其次选择在自己能力范围内努力能考上的学校&#xff0c;综合考虑地区&#xff08;不同地区公共课分数有一定的差别&#xff09;、学校&#xff08;建议跨…

MySQL索引、事务(数据库管理与高可用)

一、索引的概念 索引&#xff1a;排序的列表&#xff0c;对数据进行快速的查询&#xff1b; 针对不同的产品需求&#xff0c;或者不同的数据库结构&#xff0c;会创建不同的索引&#xff1b; 1&#xff1a;普通索引&#xff08;默认索引&#xff09; 2&#xff1a;唯一索引…

如何有效的进行小程序的优化

如今小程序已经成为了许多开发者开展业务&#xff0c;提供服务的重要平台 。所以如何有效的优化小程序成为了开发者关注的首要问题&#xff0c;以下是一份详细的小程序优化方案&#xff1a; 一、目标设定 明确小程序优化的主要目标&#xff0c;例如提高用户留存率、增加用户活…

writing classes ... [xxx of xxxx] 执行时间太长

一、问题展示 二、解决方法 打开设置【File - Settings…】修改堆大小

MySQL内如何改变编码格式

查找数据库的编码格式&#xff1a; show variables like character%;具体内容时这些 在创建表时设定编码格式&#xff1a; create database <要创建的数据库的名字> charset utf8; 修改数据库默认编码&#xff1a; set character_set_databaseutf8mb4; character_…

『 Linux 』信号概念与信号的产生 ( 万字 )

文章目录 信号概念前台进程与后台进程信号的本质硬件理解信号的产生Core dump 标志 信号概念 "信号"一词指用来传达信息或只是的各种形式的提示或标志; 在生活中常见的信号例如红绿灯,交通标志,短信通知等 在操作系统中,"信号"是一种用于异步通知进程发生特…