Camera 之水波纹和banding现象[通俗易懂]

Camera 之水波纹和banding现象[通俗易懂]预览画面中出现了一条明一条暗相间隔的竖条纹,这种现象叫做“水波纹”,并对原因进行了讲解,现记录如下。其实这些“水波纹”产生是因为手机的快门频率与灯光的频率不匹配导致的。首先,我们都知道手机拍照的时候都是有一定曝光时间的,例如假设手机的快门频率为50Hz,则其拍照时的曝光时间就是20ms。同理,屏幕或者日光灯不是一直在发光的,而是更隔一段时间就会刷新一次,我们生活中的日光灯为50Hz,国外的是60Hz。例如那个50Hz,就代表每秒刷新50次,因为刷…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

        预览画面中出现了一条明一条暗相间隔的竖条纹,这种现象叫做“水波纹”,并对原因进行了讲解,现记录如下。

        其实这些“水波纹”产生是因为手机的快门频率与灯光的频率不匹配导致的。

        首先,我们都知道手机拍照的时候都是有一定曝光时间的,例如假设手机的快门频率为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 的目的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182308.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 小案例GitHub地址收藏「建议收藏」

    小案例GitHub地址收藏「建议收藏」小案例GitHub地址收藏说明:平时用到的小案例会收藏到此处点击标题直接进入原创者位置并会标明作者js轮播图支持移动端制作人:hishionH5页面唤起APP/移动端网页打开APP作者:ihziluoh…

    2022年7月16日
    14
  • mysql慢查询sql统计_mysql服务启动慢

    mysql慢查询sql统计_mysql服务启动慢一、概述MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值(long_query_time,单位:秒)的SQL语句。默认情况下,MySQL不启动慢查询日志。本文简单介绍如何开启慢查询日志,如何用mysqldumpslow分析慢查询。二、慢查询日志设置1、临时设置临时开启慢查询日志(重启失效)setglobalslow_query_log=on;注…

    2022年10月14日
    3
  • NTP协议详解及C语言实现

    NTP协议详解及C语言实现NTP 协议详解前言 NTP 是一种通过网络在计算机之间进行时钟同步的协议 它工作在 OSI 模型的应用层 通过一系列原理与算法 实现以极小的误差 将所有网络中的计算机与 UTC 同步 由于时钟硬件精度的限制 离线的设备不总是能时刻与 UTC 同步 误差随着时间累积使计算机的本地时钟产生较大的偏差 此外 设备初次启动 启动前时钟仍处于默认状态 也需要与现在的时间同步 因此 通过互联网与可靠的时间源同步是必要的 通过这一协议 设备将寻找合适的同步源 将自身时钟与同步源同步 以保证依赖时间的应用能正常运行

    2025年8月8日
    2
  • golang激活码2022.01.13【2022.01最新】

    (golang激活码2022.01.13)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1M2OME2TZY-eyJsaWNlb…

    2022年4月2日
    302
  • redis客户端连接工具连接docker里面redis_gbase客户端连接工具

    redis客户端连接工具连接docker里面redis_gbase客户端连接工具Redis客户端连接工具AnotherRedisDesktopManagermac想用到brew的话,地址:https://www.jianshu.com/p/b7b789a2ed2cAnotherRedisDesktopManager为redis可视化工具,真的巨好用呀!!!原文地址:https://blog.csdn.net/huizhou_achao/article/details/108467792下载及安装教程地址:https://github.com/qishibo/An

    2022年9月19日
    3
  • zencart 引用模板语句「建议收藏」

    zencart 引用模板语句「建议收藏」例如引用:head模板:<?php/***preparesanddisplaysheaderoutput**/if(CUSTOMERS_APPROVAL_AUTHORIZATION==1&&CUSTOMERS_AUTHORIZATION_HEADER_OFF==’true…

    2022年7月27日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号