欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

手机拍屏幕烦人的“水波纹” 小米10靠它给解决掉了

程序员文章站 2022-07-08 10:26:00
相信大家日常用手机拍电视、电脑屏幕,都遇到过“水波纹”(频闪条纹)的现象,十分恼人。那么,“水波纹”到底是啥?它是怎么出现的?今...

相信大家日常用手机拍电视、电脑屏幕,都遇到过“水波纹”(频闪条纹)的现象,十分恼人。那么,“水波纹”到底是啥?它是怎么出现的?

今日,小米官方发文进行了科普,并揭秘了小米10通过flicker防闪烁传感器来消除“水波纹”背后的原理。

什么是频闪条纹?

频闪条纹就是我们从手机屏幕观察另一台电器的屏幕,手机拍摄画面中会有一条条亮线从屏幕底部推移至顶部,又从屏幕底部出现,无限循环,这种现象就叫频闪条纹。

手机拍屏幕烦人的“水波纹” 小米10靠它给解决掉了
拍照时常见的频闪条纹

为什么会产生频闪条纹?

要产生频闪条纹得有两个条件:

1、交流电的光源:比如电视机、电脑屏幕、家用电器发出的光源。我们国家家用电标准是220v 50hz,光强的波动是100hz,周期10ms。假如用手机在室内拍照,这时候室内的电视或者电脑屏幕发出的光源就像一个一个波浪,它们的能量每时每刻都是在变化。

2、电子卷帘式曝光:顾名思义电子卷帘快门是通过控制芯片逐行的方式实现的,它没有实际意义上的快门,而是通过通电控制传感器,使其不同部分在不同时间下对光的敏感度不同,逐行进行曝光,直到所有的像素点被曝光。

这时候如果我们使用的是“电子卷帘式曝光相机”,又以较短的曝光时间拍摄。由于每一行曝光时间不同,获得的能量也可能不同;那么在不同的感光面接收到的光能量不一样,从而产生了图像上的频闪条纹。

如何消除讨厌的频闪条纹?

既然我们明白了条纹产生的原因,我们就能“对症下药”,通过检测光源的频率,获得光源的周期再计算相机的曝光时间,从而彻底消除条纹的产生。


条纹消除流程示意图

普通手机为什么有频闪现象?

它们缺乏有效的光源检测硬件。传统的防闪烁是基于画面内容检测,缺点是:

——只支持50/60hz检测,无法适应不同国家交流电频率;

——检测精度低,容易计算出错。

小米10为什么能彻底消除频闪条纹?

为了更精准地消除频闪,小米10独立使用了一枚防闪烁传感器(flicker sensor),这是一种对环境光采样的传感器。


小米10 flicker sensor

它的特点是:

1、检测准度更高:更适合相机防闪烁设置为自动,准确检测50/60hz电源,方便各国旅行漫游。

2、检测范围更广:除了50/60hz交流电源外,60/90hz显示器,甚至理论上1~500hz光源都可以检测。

3、检测用途更多:通过识别人造光源和频率,采用定制曝光策略,在抑制频闪条纹的同时不影响其他场景曝光。

知道了光源的频率就知道了周期,我们就可以通过调节曝光时间为光源检测周期的整数倍,让曝光速度与光源“同步”,这样就彻底消除了频闪现象。

打开小米10 pro的相机,点击“设置”-“防止闪烁”-“自动”,防闪烁功能就生效了。

手机拍屏幕烦人的“水波纹” 小米10靠它给解决掉了
开启防闪烁功能

再次拍摄刚才出现条纹的画面,“频闪条纹”彻底消失了。


频闪条纹有效消除

再来看开关防闪烁前后对比图: