Camera 之水波纹和banding现象
预览画面中出现了一条明一条暗相间隔的竖条纹,这种现象叫做“水波纹”,并对原因进行了讲解,现记录如下。
其实这些“水波纹”产生是因为手机的快门频率与灯光的频率不匹配导致的。
首先,我们都知道手机拍照的时候都是有一定曝光时间的,例如假设手机的快门频率为50Hz,则其拍照时的曝光时间就是20ms。同理,屏幕或者日光灯不是一直在发光的,而是更隔一段时间就会刷新一次,我们生活中的日光灯为 50Hz,国外的是 60Hz。例如那个 50Hz,就代表每秒刷新50次,因为刷新的频率太快,人类肉眼是完全察觉不出灯光是一闪一闪的。而手机拍摄屏幕的时候,多数也会有比较快的快门速度。当快门速度比刷新频率快的时候,就能捕捉到我们肉眼看不到的屏幕刷新过程,这就会产生“水波纹”。
具体表现为,手机在记录一张照片时,不是一下子就记录了一张照片,而是从上往下,一行一行的进行曝光来记录信息。而我们的灯光是正弦电波,假设我们的灯光频率是50Hz,则其正弦周期就是20ms,这时假设我们的手机快门频率为80Hz,曝光周期就是12.5ms。
这时假设记录第一行的时候对应的日光灯的周期内是[0,12.5]ms,记录第二行对应的日光灯的周期内是[1,13.5]ms,因为日光灯为正弦电波,在记录每行的曝光量就是在对应的周期内正弦的积分(也就是这段时间内的进入传感器的电子总量),显然第一行与第二行获得的曝光量是不同的,也就造成了记录的照片一行明一行暗。
可为什么我们看到的照片是竖条纹的一明一暗呢,这是我们传感器获得的图像在手机界面上进行显示的时候进行了旋转,所以我们看到的图片是竖条纹的一明一暗。
banding的产生
模拟视频的输出制式我们统一的用PAL和NTSC来表示,pal制代表cvbs和HD的720p25/50 1080P的25/50,NTSC包括 cvbs的59.94fps输出和720P30/60 1080p30/60.banding只会在按照一定频率亮度交替变化的场景内产生。在我国交流电的频率在50HZ,我们拿1080P25的制式来举例,50HZ的交流电如果用能量曲线来表示的话就是一个100HZ的|sinx|。每个周期的时间是1/100=10ms,我们视频输出的每帧的时间为40ms,在曝光时间的算法上每一帧的最大曝光时间是~=40ms的,我们按照40ms计算的话,当达到最大的曝光时间时每一帧接收的光的能量的积分值是相同的(因为是灯光的周期的整数倍)。当小于最大的曝光时间的时候每一帧曝光接收的光能积分值不同,这就是导致产生banding的原因。
banding的消除
我们可以注意到,每一帧的曝光时间最大值是|sinx|的4倍,我们知道当能量曲线得积分值相同时banding就不会产生,这几个是我们消除banding的关键。即10ms 20ms 30ms ,那么我们思考如何才能在保证画面在消除banding的同时也能不影响曝光的准确性呢,我们用到的一种方法叫增益内插,例如当曝光在30ms和40ms之间的时候我们先把曝光的时间设在30ms上,算出实际需要的曝光时间和30ms的delta值,然后去乘以一个相应的增益。这样就做到了消除banding 的目的。
Camera 之水波纹和banding现象相关推荐
- 关于液晶显示屏水波纹现象的原因一说
关于液晶显示屏水波纹现象的原因一说 前段时间经过多家品牌对比后,买了一台BENQ的E900WN液晶显示屏,并将原来旧的梦想家CRT显示器淘汰.但多了一段时间后,我发现只要眼睛盯着液晶屏时 ...
- 关于 Sensor flicker/banding现象的解释
目录 1.基本概念 2.30fps, 1帧内banding过程演示 3.30fps, 帧与帧之间banding过程演示 4.25fps, 帧与帧之间banding过程演示 5.总结 1.基本概念 fl ...
- css实现圆球旋像水波波动_手机拍屏幕烦人的“水波纹”小米10靠它给解决掉了...
相信大家日常用手机拍电视.电脑屏幕,都遇到过"水波纹"(频闪条纹)的现象,十分恼人.那么,"水波纹"到底是啥?它是怎么出现的? 今日,小米官方发文进行了科普,并 ...
- Unity 水波纹Shader
今天来个炫酷的点击屏幕实现水波纹的特效,先上两张效果图. 放大下看下细节, 当然还有好多效果,自己发挥了... 直接上代码,注释已经写了哦 Shader "Custom/ClickStyle ...
- 相机拍出来的图片有“水波纹”的原因
今天用相机对着电脑屏幕拍照,发现照片出现了一条明一条暗相间隔的竖条纹,就好奇问了师傅,师傅告诉我这种现象叫做"水波纹",并对原因进行了讲解,现记录如下. 其实这些"水波纹 ...
- 水波纹(water ripple)
demo下载 水波纹,鼠标点击后水会四散,产生涟漪的感觉,十分真实. 实现原理: 扩散:当你投一块石头到水中,你会看到一个以石头入水点为圆心所形成的一圈圈的水波,这里,你可能会被这个现象所误导,以为水 ...
- unity捕鱼达人----炮台的旋转的实现以及水波纹动画的制作
炮台的旋转 炮台的转向由鼠标控制,当我们控制鼠标向右旋转使可以发现,炮台的position为负的 所以我们可以以炮台的正方向与鼠标位置的夹角来实现炮台的旋转 如图中所示用加粗笔所画的表示MousePo ...
- Anti_flicker(去水波纹即闪光)与HB,VB与CLK的关系
Anti_flicker(去水波纹即闪光)与HB,VB与CLK的关系. 在某sensor中,消除灯管频率导致的flicker问题,需要同时配置exposure step register(0xD6)和 ...
- 用shader做水波纹效果
用shader做水波纹效果 1.效果展示: 2.代码: shader代码: Shader "Unlit/Water" {Properties{_MainTex("Text ...
最新文章
- 架构周报| 浅析MySQL JDBC连接配置上的两个误区
- oracle表分区详解
- UISwipeGestureRecognizer 左右事件捕捉
- LeetCode上删除链表末尾第N个节点算法——Remove Nth Node From End of List
- competitor product could not be downloaded
- vue中数组长度_如何在Vue.js中获取计算数组的长度
- MIT的周博磊博士如何解释深度学习模型(附PPT)
- Mac系统如何修复MAC硬盘权限
- R语言t检验中手动计算t值和p值
- [system] Map key not configured.
- UVa 12911 Subset Sum
- 李宏毅作业十 Generative Adversarial Network生成对抗网络(代码)
- 轻音乐-Bandari(班得瑞)
- 数据导入与预处理——1.初步熟悉kettle-Spoon
- 云原生安全之RASP技术(应用运行时自我保护)
- DEFCON CTF 2017圆满收关,三支中国战队闯入全球前五
- windows10 原版 纯净版 下载
- 时空电动与成都金牛区正式签订协议,5年内将在成都落地3万辆电动汽车
- 嵌入式在军工卫星应用手持终端领域的应用
- spring boot整合security时候处理静态资源拦截问题