zoukankan      html  css  js  c++  java
  • 谈谈显示器的“色域”

    问题起因

    对我来说,这是个2年前的问题了,但时间安排原因一直没好好整理。
     
    2年前我去旅游,带了台数码相机,拍了不少照片,RAW格式,经过处理之后保存为jpeg格式,但我惊奇地发现保存好的jpeg格式打开查看的时候总感觉与处理时候看到的不一致——它们都出现了一定程度的色彩饱和度不足。通俗说就是颜色变浅了,绿色不够绿。大致的效果如下图:
     

    解决

    我意识到这应该是色彩空间(也就是俗称的“色域”,英文为“Color gamut”)的问题,于是在导出生成jpeg的时候,把色彩空间由原先默认选中的Adobe RGB改为sRGB,问题就解决了。如图:
     

    新的问题

    然后我把这个发现分享给朋友,我用微信分别发送了这两张使用不同色彩的照片给朋友(当然了,肯定是原图),但朋友说看不出来差别,我用自己的手机看了一下,也看不出来差别,反复确认过之后,我确信我没发错,这是怎么回事?难道我的手机支持AdobeRGB广色域?于是我换了一部屏幕素质比较差的手机,依旧看不出差别。 

    分析

    经过研究后,我发现原因是手机能识别图片中的的色彩空间配置,然后将其映射到自己屏幕所使用的色彩空间去。其实电脑也有一样的功能的,要证明很简单,用Photoshop打开这两张不同色彩空间的图片,看到的效果是一样的,Photoshop考虑了图片的色彩空间配置,以及显示器的色彩空间配置,并进行了映射,所以没有问题。而我之前使用的看图软件默认并不开启这个功能,于是它打开了色彩空间为AdobeRGB的图片,没做转换,直接输出给显示器,我的显示器是一台支持99% sRGB色彩空间的显示器,它拿到了软件发过来的这些色彩信息,就按自己的理解显示出来,就出现了色偏的问题了。举个例子:
     
    我的照片中有一个像素的信息是以Adobe RGB 200的绿来显示,软件不经过转换,直接告诉显示器,将这个像素显示为200的绿,显示器认为这是sRGB 200的绿,于是就按自己的理解显示了出来,而sRGB 200的绿和Adobe RGB 200的绿是不同的,Adobo RGB色彩空间比sRGB更大,所以sRGB的200的绿比Adobe RGB 200的绿来得浅,宏观上来看,就是本文一开始展示的那张图片那样,显得饱和度不足。而当看图软件(如Photoshop)进行了妥当的映射之后,Adobe RGB 200的绿,也许就会被映射为 sRGB 218的绿(仅仅举例子,数值不精确),显示器按要求输出 sRGB 218的绿,看起来跟Adobe RGB 200的绿一样了。
     
     
    那接下来问题来了,如果我的显示器要显示Adobe RGB 255绿,怎么办呢?要知道,Adobe RGB 255绿是在sRGB的色彩空间之外的,也就是说sRGB没有这个颜色。
     
    分两种情况考虑:
     
    情况1:软件不考虑显示器的色彩空间,直接把255绿告诉显示器,显示器就直接按sRGB 255绿显示了
    情况2:软件考虑了显示器的色彩空间,把Adobe RGB 255绿映射为sRGB 对应的绿,发现超出了sRGB的范围,那只能将其映射为最接近的一种绿色(大概也是sRGB 255绿)
     
    所以,如果你有一幅真Adobe RGB色域的照片,且照片中有有大量超出了sRGB色域的颜色,此照片在支持Adobe RGB色域的显示器上显示出来的效果应该会明显好过sRGB色域的显示器。那是不是我们以后保存照片都使用Adobe RGB色彩空间呢?——非也,为了最大程度上确保兼容性,最保险的做法,还是保存成sRGB色彩空间,否则就很容易出现本文开头描述的那样,照片显示出来的饱和度不足。

    进一步解决

    要在我的sRGB显示器上正确显示Adobe RGB色彩空间的照片,需要软件上做一些配置,Photoshop默认是支持映射的,而我前面提到的看图软件,叫XnViewMP,需要在选项里面把这个给勾上,让它考虑当前显示器的色彩空间配置,这样它在显示图片的时候就会考虑做色彩空间映射:
     
     
    这样不管是使用什么色彩空间的图片,在我的sRGB显示器上都能比较正确地显示出来了。

    思考一下

     现在出道题目:如果显示器是支持Adobe RGB广色域的显示器,图片的色彩空间为sRGB,那么显示效果会如何呢?
     
    (思考一分钟)
     
    同样要分两种情况:
    情况1:软件不考虑显示器的色彩空间,直接把sRGB色彩空间的显示要求告诉显示器,显示器按照AdobeRGB色彩空间的方式来显示,sRGB的255绿就会显示为Adobe RGB的255绿,那么图片会显得过于鲜艳,饱和度会上升,对于普通用户来说,这也许会更“讨喜”,但无疑影响了色彩准确性。设计师们是一定不能接受的。
    情况2:软件考虑了显示器的色彩空间,把sRGB色彩空间的颜色映射为Adobe RGB色彩空间中的颜色,由于AdobeRGB 色彩空间覆盖了所有sRGB色彩空间,所以不存在显示不出来的颜色,可以完美显示。

    总结

    要使得色彩显示没问题,有几个要点:
     
    1,显示器要配置正确其icc(色彩空间配置)文件。这个文件一般Windows会根据连接的显示器正确安装上,如果没有正确配置(可能由于显示器太冷门),到显示器厂家网站去一般都能获取到。然后到“设置”中搜索“颜色配置”就能找到相关配置界面,配一下即可。
    2,各个软件要勾上类似前面提到的XnViewMP中的“对显示器使用ICC配置文件”这样的选项,表示输出颜色会充分考虑显示器的实际配置,而不是无脑地输出sRGB颜色。这个就不全在我们的掌控之中了。
     
    所以,我前面也说了,最保险的办法还是把照片保存为sRGB,因为目前支持sRGB以上广色域的显示器毕竟还不多,绝大多数显示器还是使用sRGB的色彩空间配置文件,再说了,AdobeRGB色彩空间多出来的那些颜色,我们普通人真好分辨得出来吗?
     
    不过,不差钱的,也还真可以考虑下更广色域的显示器,配置得当的话显示效果应该是会更好一些的。 

    扩展

    出了Adobe RGB和sRGB之外,其实还有好些色彩空间定义。常见的还有:NTSC 和 DCI-P3
    从上图中我们也可以看出,除了REC.2020范围最大之外,其它几个色彩空间定义并不完全是谁比谁大的关系,它们之间有交叉部分也有不交叉的部分,我们在购买显示器的时候,根据自己需要选择,不要盲目追高,多花了钱体验却没啥提升,不会用的话还适得其反。相比色域,显示器的分辨率、刷新率、亮度、色彩准确度和响应时间可能对我们普通用户来说更重要一些,尤其是分辨率和刷新率,不过友情提醒一下,分辨率刷新率也是个大坑,能够绵绵不绝地让你的钱流进去的大坑……因为你上了高分高刷后,会发现显卡不够,而显卡现在(2021年中)的价格你懂的,弄好了一台电脑,你再看看别的设备,都已经不适应了,根本回不去,于是别的设备也都要升级起来,钱就悄悄离你而去了。
     
  • 相关阅读:
    ECSHOP订单隐藏前几位字符用星号*代替
    ECshop将团购说明改成FCKeditor编辑器
    ECSHOP默认编辑器换成实用的KindEditor编辑器
    织梦DEDECMS导航下拉菜单的实现方法
    CSS中右对齐float:right换行的解决方法
    ecshop后台我的收藏显示收藏的商品图片和时间的方法
    ECSHOP程序SEO完全优化
    ECSHOP商品详情页颜色、尺码 选择仿淘宝效果
    ecshop 前台 “非特殊等级”在那修改?
    ECSHOP登录注册信息提示页面的跳转时间设置
  • 原文地址:https://www.cnblogs.com/guogangj/p/14968651.html
Copyright © 2011-2022 走看看