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 的目的。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 快速搭建自己的直播服务器,完成属于你的直播服务。

    快速搭建自己的直播服务器,完成属于你的直播服务。通过本文您能学到以下内容:1、动手搭建直播服务器,完成一次对移动端支持的直播。2、使用OBS推流。3、使用html5网页播放m3u8流媒体文件。一、动手搭建流媒体服务器这里我们选用开源srs流媒体服务器[https://github.com/ossrs/srs],有兴趣的同学也可选用[AdobeMediaServer5],原理都是一样的。安装方法在[https://…

  • android之layout_weight体验(实现按比例显示)

    在android开发中LinearLayout很常用,LinearLayout的内控件的android:layout_weight在某些场景显得非常重要,比如我们需要按比例显示。android并没用提供table这样的控件,虽然有TableLayout,但是它并非是我们想象中的像html里面的table那么好用,我们常用ListView实现table的效果,但是列对齐确比较麻烦,现在用Linear

  • 安利一款免费、开源、实时的服务器监控工具:Netdata

    安利一款免费、开源、实时的服务器监控工具:NetdataNetdata是一个免费、开源、实时的服务器监控工具,可以可视化和监控实时数据,如CPU使用率、RAM使用率、负载、SWAP使用率、带宽使用率、磁盘使用率等。它可以帮助系统管理员了解您的系统或应用程序中正在发生的事情以及刚刚发生的事情。它可以安装在任何物理服务器、虚拟机、容器和物联网设备上。它提供了一个交互式Web界面来查看您的服务器指标,并支持用于持久存储的各种数据存储。在本教程中,我们将向您展示如何在AlmaLinux8上安装Netdata监控工具。先决条件运行Alm

  • Android setDisplayOptions 具体的使用说明

    Android setDisplayOptions 具体的使用说明

  • Oracle间隔分区

    Oracle间隔分区

  • raid 5 raid 10_u盘损坏了还能恢复吗

    raid 5 raid 10_u盘损坏了还能恢复吗介绍:RAID0技术把多块物理硬盘设备(至少两块)通过硬件或软件的方式串联在一起,组成一个大的卷组,并将数据依次写入到各个物理硬盘中。这样一来,在最理想的状态下,硬盘设备的读写性能会提升数倍

发表回复

您的电子邮箱地址不会被公开。

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