当前位置: 首页 > news >正文

【camera之3a】AE

文章目录

    • sensor
    • AE

sensor

  • 分辨率
    常见分辨率的感性表述即30万、100万、200万,正确表述应为0.3M、1M、2M,其中M代表百万,是像素单位。sensor分辨率即指在单位面积上,像素的个数,数值越大 ,则代表像素点越多,捕获的图像细节越多。

AE

https://zhuanlan.zhihu.com/p/100369527

根据ISP 硬件生成的图像曝光统计数据评估当前图像的曝光质量
如果曝光质量需要调整,则根据当前的工作参数和理想曝光目标生成下一帧图像的工作参数
将新的工作参数写入各硬件设备,驱动光圈、sensor 快门及增益到达新的位置

目前主流的ISP 硬件都会提供关于图像的直方图统计数据,AE 算法可以利用直方图的均值来判断图像是否曝光适当。对于多数场景而言,当图像直方图的均值位于设备动态范围的一半位置时,画面的曝光质量通常是比较理想的。

由于体积的限制,绝大多数手机镜头模组只有固定光圈,极少数手机(三星S9)具有一个机械的切换叶片,可以实现在F1.5和F2.4两个光圈之间的切换。

光圈(aperture)的副作用主要是影响景深,这个问题已经在光圈章节中专题讨论过了。

快门(shutter)的副作用主要是影响运动模糊。一般而言,当曝光时间大于15ms时,画面中速度大于40km/h的车辆就会开始变模糊。当曝光时间大于30ms时,画面中走动的人就会变模糊。因此,拍摄对象的预期移动速度基本上决定了曝光时间的上限。

增益(ISO)的副作用主要表现为画面噪声,尤其是数字增益会引入较大的噪声,显著降低图像质量。

AE算法需要依赖ISP 硬件提供的关于图像的曝光统计数据。曝光统计需要对图像中的每一个像素进行分类和计算,涉及的计算量非常大,对时序要求非常严格,所以这个工作只能交给硬件流水线去做,不适合CPU 处理。

AE算法中根据统计数据评估图像质量、产生新的控制参数的部分则有逻辑比较复杂、算法经常需要升级、数据吞吐量一般不大等特点,因此非常适合用CPU 处理。

  • Binning是一种图像读出方式
    采用这种方式,相邻的像元中感应的电荷被加在一起,以一个像素的方式读出.B Binning分为水平方向Binning和垂直方向Binning. 水平方向Binning是将相邻的行的电荷加在一起读出,而垂直方向Binning是将相邻的列的电荷加在一起读出.有些相机只有行的Binning,而有些相机行和列都可以实现Binning. Binning这一技术的优点是能提高桢速,和增加灵敏度.当行和列同时采用Binning时,图像的纵横比并不改变.当采用2:1Binning时,图像的解析度,将减少50%. 一般在对图像解析度要求不高,而又有高的桢频率要求的项目中,可采用此技术.

  • flicker(banding)现象
    https://blog.csdn.net/Mr_ZJC/article/details/119397197

    出现flicker(banding)问题时,从视频上看会发现有规律的明暗相间的条纹,这种现象也叫做牛顿环。如下图所示。

    • 产生的原因
      Sensor在日光灯作为光源下获取图像数据时会产生flicker,其根本原因是照在不同pixel上光能量不同产生的,所接受的光能量的不同也就是图像的亮度的不同。
      由于能量在时间方向上的波形,照在sensor上就使每一个pixel产生在时间方向上的相应波形,由于CMOS sensor的曝光方式是一行一行的方式进行的,任何一个pixel的曝光时间是一样的,也就是同一行上的每个pixel的曝光开始点和曝光的时间都是一模一样的,所以同一行的所有点所接受到的能量是一样的,而在不同行之间虽然曝光时间都是一样的,但是曝光的开始点是不同的,所以不同行之间所接受到的能量是不一定相同的。由此产生sensor出来的图像可能在图像高度方向上会有相应的波形。

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

      如果上层设置下来是AUTO模式,那么代码里面默认值是5(AUTO_60HZ),实际上在我们国内,一般的灯光闪烁频率是50hz,所以如果是国内的产品,这个默认值我们需要修改为4(AUTO_50HZ)。

http://www.lryc.cn/news/5668.html

相关文章:

  • Docker-Consul概述以及集群环境搭建
  • 性能技术分享|Jmeter+InfluxDB+Grafana搭建性能平台(四)
  • 图数据建模基础
  • nodejs篇 process模块
  • JavaScript高级程序设计读书分享之3章——3.4数据类型
  • 棱形打印--进阶2(Java)
  • 清除 git 所有历史提交记录,使其为新库
  • pyTorch下载和cuda下载以及学习笔记
  • 【学习总结】IMU预积分推导
  • 天猫商城自动化python脚本(仅供初学者学习使用)
  • 代码随想录第十一天(459)
  • 线程及线程池学习
  • SpringBoot整合(四)整合Ehcache、Redis、Memcached、jetcache、j2cache缓存
  • 想要的古风女生头像让你快速get
  • 传统企业数字化转型,到底难在哪里?
  • Python:青蛙跳杯子(BFS)
  • 6.10 谱分解
  • MySQL入门篇-MySQL 行转列小结
  • 项目管理常见的十大难题及其症状
  • 技术方案模板
  • MySQL中对于单表和多表的操作
  • MFI认证
  • Vue中mixins的使用
  • 【PyQt】PyQt学习(一)框架介绍+环境搭建
  • 浅谈前端设计模式:策略模式和状态模式的异同点
  • 线性杂双功能PEG试剂OPSS-PEG-Acid,OPSS-PEG-COOH,巯基吡啶聚乙二醇羧基
  • 开发微服务电商项目演示(四)
  • 【C语言学习笔记】:静态库
  • 社科院与杜兰大学中外合作办学金融管理硕士——30+的年龄在职读研有必要吗?
  • 2.13作业【设备树解析,按自己理解】