热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

全程pwm调光_深度解析OLED屏幕的低亮度DC调光是如何实现的?

随着黑鲨手机二代的发布,DC调光大热,已经成为智能手机圈内大家争相讨论的话题。各大手机厂商纷纷表示跟进,已经开始开发自家旗舰手机上的DC调
5fa3dcfbaf8594aafcfa366d928df88a.png

随着黑鲨手机二代的发布,DC调光大热,已经成为智能手机圈内大家争相讨论的话题。各大手机厂商纷纷表示跟进,已经开始开发自家旗舰手机上的DC调光内核。但其实很多人在知道DC调光和PWM调光的原理之后,还是会存在一些疑惑的。简单来说,低亮度的DC调光是如何实现的,其实一直没有明确的答案。

相信大家对于DC调光和PWM两种调光模式已经有了一些熟悉,基本信息也不用过多介绍。我们可以简单的把DC调光理解为最原始的调光技术,屏幕一直亮着,用控制屏幕通电的功率来控制屏幕亮度的高低,是非常直接的方式。而PWM则是一种后来才研发出的更加复杂的调光技术,严格来说更为先进。它利用了人眼的视觉残留,使屏幕高速闪烁,通过控制闪烁的频率来控制屏幕的亮度。其实很容易便能想到PWM调光的实现难度其实要比DC调光更大,并且解决了DC调光在低亮度情况下的一系列问题。

而DC调光在低亮度下会发生的问题,可能大家也已经了解了不少,比如可能会出现抹布屏,并且一定会出现低亮度的灰阶丢失和彩色显示异常的情况,但你可能不了解为什么会出现这种情况。这其实跟OLED屏幕的原理有关系。

9434ca6be04a5151ef25124a16f66c57.png

都知道OLED的像素点自发光,每个像素点的子像素都是独立发光。而OLED屏幕的子像素虽然有很多种排列方式,但终究还是由RGB(红绿蓝)三原色组成。而三种单色光如何产生出其他颜色的光呢?很简单,通过不同亮度的三原色光的叠加,RGB各自有256级亮度(从0到255),也就是我们说的灰度值。

09e3883eede221b31d69ac87c8726542.png

基于此,我们试想一下,屏幕所有像素点全部打开会是什么样的情况?此时的RGB的灰度值均为255,这个时候所有子像素全部最大亮度,屏幕便是一片白色。而灰色这种白色加黑色的颜色,又没有黑光这种东西,它该如何显示呢?也很简单,其实手机中的灰色就是低亮度的白色,只不过在更亮的白色衬托下看起来是灰色的。

再结合OLED自身发光的特性,也就不难理解为何OLED在低光下很难做到亮度控制了。因为严格来说,OLED屏幕的子像素亮度控制其实是为颜色服务的,当亮度足够的时候,OLED屏幕的子像素可以控制像素点的颜色的同时控制屏幕的整体亮度。当亮度降低到一定程度的时候,三原色子像素的明暗变化已经不能准确的控制色彩了,这便是如今所有OLED屏幕都不能在低亮度下硬件DC调光的本质。

这个问题其实想来是无解的,子像素用明暗变化来组成颜色,但当所有子像素亮度都非常低的时候,明暗变化形成的颜色是否又能看得出呢?并且,在低亮度情况下子像素的明暗控制必然需要更加精细的控制,相信目前也没有那个屏幕可以做到在最低亮度的情况下,还能把三原色子像素再分个256级亮度吧。

所以现在想实现屏幕最低亮度的DC调光其实都只能靠软件。

debf69e7bf4653080c3a758d19c38bed.png

而OPPO和魅族在跟进DC调光的时候也都直言不讳,如今的DC调光其实都不是硬件DC,只是软件层面的。具体怎么做呢?必然只有卡在硬件支持DC调光的临界点。什么亮度开启PWM调光其实是屏幕厂商写好了的,基本不可更改,这也是屏幕厂商为了保证自家屏幕在低亮度时的色彩表现而定下的。所以手机厂商能做的便只有从软件入手。

比如一款手机的屏幕是大约100nit的亮度以上会自动开启DC调光,低于此便会开启PWM调光,那便将手机屏幕的最低亮度定在100nit。如果用户再调低亮度,那么屏幕就不再亮度便不再变化,而是对屏幕的图像进行变暗处理。这样便全程不会开启PWM调光,这也是推动此次DC调光大火的数码博主@魔法师蛋小丁 开发内核的核心思路。(图自 @魔法师蛋小丁)

ee938fb6fe39a0df9f031788dee7222b.png

于是手机厂商们只需要解决如何让图像变暗的问题就好了,当然这个问题也并不简单,或者说,要做到不影响色彩的显示,不简单。黑鲨手机的借助了Pixelworks独立图像处理芯片对颜色进行管理,效果已经达到了可用水平。但如果没有硬件的帮助,便只有用算法降低图像的亮度了。 (图自 @魔法师蛋小丁)

869962e68420ece3c583089f3185428f.png

拿OPPO的方案来举例,他们采用的是「蒙版调光」+「dither(颜色抖动)平滑」的方式,简单来说就是在低亮度下,给屏幕上所有显示的内容加上蒙版,并且用颜色抖动的方式来保证屏幕的色阶、对比度和色偏,效果也是非常不错的。OPPO还将此算法分享了出来,大厂风范尽显,也算是送给业界的小礼物吧。

至此,DC调光可以说是任何厂家都能做出的技术跟进了,基本上没有难度。不过华为P30 Pro那样的全局PWM调光要如何解决,就不好说了,或许需要从驱动上面去改才行。

当然,虽然DC调光如此火爆,但其实这个感觉真的是因人而异。或许很多人对PWM调光并不敏感,所以DC不DC的,或许真没那么重要。因为要说到伤眼睛,长时间看任何屏幕都会有的。所以愿大家理性看待。



推荐阅读
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 自学编程与计算机专业背景者的差异分析
    本文探讨了自学编程者和计算机专业毕业生在技能、知识结构及职业发展上的不同之处,结合实际案例分析两者的优势与劣势。 ... [详细]
  • 堆是一种常见的数据结构,广泛应用于计算机科学领域。它通常表示为一棵完全二叉树,并可通过数组实现。堆的主要特性是每个节点的值与其父节点的值之间存在特定的关系,这使得堆在优先队列和排序算法中非常有用。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • 本题探讨了在大数据结构背景下,如何通过整体二分和CDQ分治等高级算法优化处理复杂的时间序列问题。题目设定包括节点数量、查询次数和权重限制,并详细分析了解决方案中的关键步骤。 ... [详细]
  • 智能车间调度研究进展
    本文综述了基于强化学习的智能车间调度策略,探讨了车间调度问题在资源有限条件下的优化方法。通过数学规划、智能算法和强化学习等手段,解决了作业车间、流水车间和加工车间中的静态与动态调度挑战。重点讨论了不同场景下的求解方法及其应用前景。 ... [详细]
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 探讨一个显示数字的故障计算器,它支持两种操作:将当前数字乘以2或减去1。本文将详细介绍如何用最少的操作次数将初始值X转换为目标值Y。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
author-avatar
醒九九爷
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有