颜色视觉——杂谈篇

3,481 阅读19分钟

写在开头

       本文主要由以下几大板块构成:

  • 一些有趣的视觉效应及其解释

  • 颜色与视觉在各学科的应用

  • 颜色视觉之于眼视光、心理学

  • 颜色视觉之于美术设计

  • 光学与计算机科学中的颜色视觉

       其中,本文将主要侧重于第五部分光学、计算机科学与颜色视觉,读者朋友可以选择自己感兴趣的内容阅读。

       本文涉及的内容存在跨学科的知识,因此称作杂谈篇。

1 有趣的视觉现象及其解释

1.1 有趣的视觉现象

A1.两边的紫色真的有不一样吗

A2.球的颜色是不同的吗

A3.仔细观察一下,如果除去条纹,这张图片其实是灰度图像,但是因为有色条纹的存在,看起来衣服却像有了颜色一样

B1.衣服的颜色自己改变了吗?

B2.下面这双鞋究竟是灰绿还是粉白?

B3.蓝黑or白金?

B4.你看见的药丸是什么颜色的

B5.你觉得下图中A和B的颜色是否不一样

C1.这个大家应该都玩过了,盲点实验,闭上左眼(或右眼),在距离屏幕15-25cm的位置,看右边的圆(或左边的十字符号)。

C2.这个盲点实验比较有趣,而且大家应该没有尝试过,闭上右眼,用左眼看十字,然后找到合适的距离,你会发现缺失的线段被"补上"了。

D1.盯着心形中心的黑点不动,至少三十秒以上。然后迅速朝一张无字的白纸或墙壁看。

D2.在你眨眼时,余光所见的白点中,是否有黑点在闪烁

1.2 揭秘与解释

A1:侧抑制

       马赫带效应、赫尔曼栅格、蒙克·怀特效应等视错觉属于看错颜色的一类,它们的产生都是因为视觉的侧抑制现象。人的视网膜由许多小的光敏神经细胞组成,激活单独的一个光敏细胞是不可能的,某个细胞的激活总会影响邻近的细胞。科学家发现,刺激某个光敏细胞得到较大反应时,再刺激它邻近的细胞,反应会减弱。也就是说,周围的细胞抑制了它的反应,这种现象被称之为“侧抑制”。它会使被更亮的背景包围的区域显得暗些,而被暗一些的背景包围的区域显得亮些。

B1-B5:颜色恒常性

       人脑有一种自动去消除光照对颜色影响的功能,因此虽然B1、B4、B5图像中的颜色是相同的,但是受大脑试图去消除光源颜色的影响,导致观察时会认为图像颜色有所不同;而B2、B3中的图像颜色存在争议,B2的图像颜色确实是灰绿,但是如果消除了绿色光源的影响,而用常规的自然光(太阳)照射,那么鞋子是粉白色的,对于B3,如果室内的光是偏蓝的,那么衣服是白金色,而如果室内的光是暖色的黄光,则衣服是蓝黑色的。

       以B1、B2、B3、B4为例,我们可以用光源估计的办法去消除有色光源带来的影响,结果如下:

       通过光源估计和消除有色光源影响,我们得到了更接近人眼色彩认知结果的图像。为了便于观察,主要颜色像素在图中进行了放大。

C1-C2:盲点与盲点"补足"

       盲点的成因是人眼内部中有一小部分位置因需要进行视觉信号的传输而导致相关视觉细胞的缺失,由于博主不是医科出身的所以这个原因无法讲解到非常充分,大致上就是这样。而C2盲点"补足"我们只能猜测与盲点周边的信息和以往的记忆自动补全图像相关。具体的机制和涉及的神经环路之类的问题,恐怕还需要更多深入的研究。

D1-D2:色适应

       D1、D2的视觉现象为负后向,与人眼视觉残留特性与于色适应特性相关。

2 颜色与视觉在各学科的应用

       人的感官有听觉、触觉、嗅觉、味觉、视觉五大感观,但实际上外部世界超过80%的信息是通过视觉提供的。因此,众多学科都与颜色信息有重要的关联。

3 眼视光和心理学中的颜色

       虽然生来我们就与视觉、颜色在打交道,但是在我们的认知中,仍会存在一些误区,如颜色是物体的属性,物体的颜色是稳定、可靠的信息,这两种见解都是不对的。

3.1 色彩的成因

       色彩的形成于三个因素相关(也可以认为是四个):即光、物体、人类视觉系统(或者分为人眼和大脑)。

       我们可以用如下模型描述颜色Q的形成并量化计算:

Q=(X,Y,Z)

其中

\left\{
\begin{aligned}
X & = & k\int^{\lambda_{max}}_{\lambda_{min}}P(\lambda )\rho(\lambda)x(\lambda)d\lambda \\
Y & = & k\int^{\lambda_{max}}_{\lambda_{min}}P(\lambda )\rho(\lambda)y(\lambda)d\lambda \\
Z & = & k\int^{\lambda_{max}}_{\lambda_{min}}P(\lambda )\rho(\lambda)z(\lambda)d\lambda
\end{aligned}
\right.

       k为使Y=100的校准常量,\lambda_{max}\lambda_{min}分别表示可见光波长的最大值和最小值,一般被认为是380nm780nm。而P(\lambda)\rho(\lambda)分别表示光源的光谱辐射强度和物体的光谱反射比, xyz为CIE1931标准色度观察者曲线。

       该模型定义了XYZ颜色空间,并且充分说明了人类认知中的颜色只与三个因素有关。(如果是鸟类的话,有四种视锥细胞,因此除了XYZ还会再多一个维度,故在鸟类看来,人类的颜色范围非常窄)

       此外,从这个二模型中我们可以知道,光源的光谱辐射强度P(\lambda)和物体光谱反射比\rho(\lambda)以及标准观察者三色刺激值x(\lambda)y(\lambda)z(\lambda)都是与波长\lambda相关的量,因此它们都是一条曲线。需要注意的是,对于标准观察者三色刺激值,这条曲线的有效范围是[380nm,780nm],而光谱辐射强度和物体光谱反应比的范围比这更宽,但在人类视觉系统接收范围之外。

       另外,xyz标准观察者曲线是通过色匹配(Color Matching)实验测量得到的:给出三种颜色的光X,Y,Z(需要留意,XYZ约略等于红、绿、蓝色,但三者并不是真的看起来是红、绿、蓝色的,而是从红、绿、蓝色中导出的参数),再给出380-780nm的单色光,让受试者通过三种光的混合得到他们认为与单色光颜色一致的结果。结果中的混合光所用三者比例,绘制出的曲线即为下图所示的曲线。

       由于标准观察者曲线由色匹配实验得到,所以又名颜色匹配函数(Color Matching Function)。

       另外需要说的是,该曲线并不非是眼视光医学的专家学者得到的,该曲线源自1931年国际照明委员会(CIE)制定的标准——1931XYZ表色空间。XYZ颜色空间是最先采用数学方式来定义的色彩空间。

       而现代的解剖学验证了人眼中存在三种视锥细胞,这是人眼颜色视觉的最直接的感色细胞,这解释了为什么用红、绿、蓝三种颜色的光可以混合出所有颜色的可见光,与之相关的颜色空间为LMS颜色空间。

3.2 色彩与心理学

       颜色在心理学中也有相关的研究。比如,红色是一种较具刺激性的颜色,它给人以燃烧和热情感,比其他颜色更加带有人际交往的色彩,性格外向的人多半也会喜欢红色。

       因为红色十分抓人眼球,所以使用红色代表要吸引人们的注意力。这个还是比较好理解的,如果有人不想引人注意,比如去考试之类的,应该是会选择白色、蓝色等具有视觉放松效果的颜色,而不会选择张扬的红色。

       有实验表明,同一个运动员在穿着红色运动服的时候,体内荷尔蒙水平会明显升高,他会更好胜也更有冲劲。英国杜伦大学的罗素·希尔、罗伯特·巴顿《自然》杂志刊登文章,称 红色不但能震慑对手,还能激发男性选手自身体内激素水平的提高,由此而增大肌肉力量。

       原田玲仁在《每天懂一点色彩心理学》中说,“讨厌红色的人多半是内心的欲望得不到满足的人,不是自己梦想中途受挫,就是工作不顺心而难以继续下去,此时,人很容易对红色产生抵触情绪。 红色象征着行动力和有活力的生活,而自己恰好处于停滞不前看不到希望的阶段,因此很容易对红色反感。 ”这就好比单身狗在情人节看情侣们秀恩爱分外不好受的心理。

       一种非常常见的心理学与色彩学相关的观念就是,当大家看电脑/看书看久了,会有长辈建议大家去外面走走,看看绿色的树、绿色的草地等。这是因为有实验证明,人眼在看绿色时,会更加的放松和惬意,此外,人眼对绿色是非常敏感的。

4 美术设计中的颜色与视觉

       设计中的颜色与视觉其实与心理学有一些相似,都是研究色彩对人的影响。心理学更侧重色彩对人的多方面的影响,侧重实验与理论。而设计学侧重于如何什么样的颜色更让人舒适或者产生设计者需要观众所产生的感受,更偏向于应用。

       协调色的搭配是设计学中非常常见的应用,如一些精良的PPT模板网站,或相关的机构,会提供一些协调色搭配,如下图就是来自Slidesgo网站的PPT协调色推荐。

5 光学、计算机科学中的颜色视觉

       在3.1节中我们降到了色彩的成因,提到了1931XYZ标准色度系统的模型与颜色匹配函数的由来,这些其实是光学领域的专家所制定的。我们已经知道了颜色与物体、光源和人类视觉系统三者相关,因此,早期的色彩学研究中,很大一部分是研究照明、研究颜色信息的一些光学、物理学的科学家展开的,因此光学中的颜色视觉虽然没有像生理学、医学一样可以给出直接的证据,但在该领域中仍然有非常多的理论框架和应用。

       而随着计算机的普及和发展,这些实用且应用广泛的技术,开始于计算机科学等学科相结合,渗透在我们日常生活中。

5.1 表色空间

       在3.1节中,我们已经提到了一种表色空间——XYZ颜色空间,而人们接触最频繁的颜色空间是RGB颜色空间,许多人会对此感到不解,明明表征颜色有一种坐标系就足够了,既然如此,为什么还会存在不同的表色空间。

       实际上,颜色空间可以划分为两种:设备无关颜色空间和设备相关颜色空间。如XYZ颜色空间、Lab颜色空间、LMS颜色空间等都是设备无关颜色空间,即该表色空间下的颜色与显示设备无关,用该类色彩空间表征的颜色唯一。

       而RGB颜色空间(实际上应该说是sRGB颜色空间,Standard RGB Color Space)是设备相关的颜色空间,这会引出一种问题,就是跨设备显示时的颜色会产生色差。某张图片的某个位置在这个型号的手机上看起来是这个颜色,但换了一个型号的手机来看,颜色却有所不同。以实例做解释,如下:

       用于对比的显示器分别是华硕飞行堡垒默认配置的京东方BOE069C、IphoneXR默认配置的LCH全面屏以及华硕的移动便捷显示器MB16AC,同一张图像在三个不同的显示器上的色差是非常显著的。这是因为显示设备发光光源与显示器的色域存在差异所导致的,此外拍摄的视场角对图像颜色有一定的影响,但是与设备显示本身的色差来说是可以忽略的。

       这里就可以解释两个问题,一个是我们在上面所说的,跨媒体、跨设备时导致的色差;另一个就是有不少苹果手机的用户会发现,一些图像从电脑传输到手机后,会变得更鲜艳。这是因为常规的显示器普遍采用的是sRGB标准,而苹果手机的一大卖点是色彩显示和色彩系统,其色域范围介于sRGB与Adobe RGB之间,大致色域如下图。

       这里为了简化,图示放的是二维色域,实际上颜色域是一个三维的几何空间。需要注意的是,上图中没有标注苹果公司设备的色域,NTSC 92是一种色域标准,但苹果的显示色域未完全覆盖这一标准,苹果显示色域是介于Adobe RGB与sRGB之间的。而外部的色域(包括了Adobe RGB与NTSC 92的马蹄形色域)则是所有设备无关颜色空间所描述的色域。受目前技术所限,设备相关的颜色空间都是无法覆盖人眼可见的色域的。

       由于颜色可以量化描述,曾有一些视觉实验在寻求一种人眼感知均匀的颜色空间(即在该空间中距离相等的两对颜色,与人眼感知的差异相等),当然,目前已经有了均匀的颜色空间,如1976CIELUV颜色空间。但因为该空间的不规则性等原因,该颜色空间没有非常广泛的被应用。

       此外,需要指出,目前有非常多的颜色空间,因不同的需求被提出,在解决不同的问题上具有各自的优势(比如图像压缩、传输等)。

5.2 色彩管理

       在5.1节所述的内容会引发一些问题。比如一幅图像在色域不同的设备中显示,那图像色彩该如何调整。这里就需要引出色域映射与色彩管理。

       以广色域向窄色域设备的色域映射为例,色域映射所需的结果如下图所示。

       不难发现,色域映射其实就是将颜色信息转换到设备无关颜色空间中进行压缩,色彩管理也是基于同样的想法。这些问题都已有硬件、软件工程师提前替用户考虑了,色彩管理是一种大部分用户并不知道,但实际上一直存在的技术。现有成熟的色彩管理模块与色彩管理框架如下图所示。

       这里需要解释一下再现意图。

       再现意图:指从整体上希望复制图像的颜色以怎样的特征再现原图像的颜色。包括超色域的颜色怎样映射,连带着色域内的颜色是否随之改变,若改变如何改变等。ICC规定了四种再现意图。

  • 绝对(色度)再现(Absolute Colorimetric)
  • 相对(色度)再现(Relative Colorimetric)
  • 感知(色度)再现(Perceptual)
  • 饱和度(色度)再现(Saturation)

       而从sRGB颜色空间转换到设备无关空间这一过程中,需要提前知道设备的一些信息进行计算处理。这一过程称为设备的特征化。因此,完整的色彩管理流程为:设备特征化->将设备相关颜色空间所描述的色彩转换到设备无关颜色空间->按照颜色再现意图实现色域映射->通过显示设备显示出色域映射后的色彩(这一步骤有一个反向设备特征化的过程,也需要提前知道显示设备的一些特性文件)。

       而色彩管理的本质,就是通过硬件信息、颜色信息去进行一系列的计算,以保证色彩的高保真复制。但是,目前的色彩管理仍然不能做到100%无失真的色彩复制。

5.3 图像信号处理

       相机成像的步骤可大致简化为三步,如图所示(图来自 楼斌,享测华为P30Pro测评下:能算出月亮的照相手机,bilibili弹幕视频网)。

  • 第一步,光进入镜头,照射在感光元件(CMOS、CCD)上。
  • 第二步,感光元件被光信号刺激后产生电信号,并转化为数字信号。
  • 第三步,图像信号处理器(Image Signal Processor)通过内置的一系列算法把数字信号处理成照片。

       在相机成像的时候,为了使相机记录下的数字图像与人眼感知的相似,需要进行一系列的图像预处理,这一系列流程被称之为图像信号处理(Image Signal Process)。一种常见配置的ISP pipieline如下图所示。

       其中,与颜色视觉相关且非常有趣的两个部分是彩色滤镜阵列技术和白平衡算法。

5.4 彩色滤镜阵列技术

       Bayer阵列是最知名的彩色滤镜阵列,如下图所示。

       其中,绿色的滤光片占了50%的比例,而红、蓝分别占了25%。这么做的原因其实同样与人眼视觉特性相关。通常情况下,人眼对绿色更加敏感,因此彩色滤镜阵列中的绿色滤镜会占更多的比例。最终获得的RAW图像需要经过插值才能得到最终我们所看到的彩色图像,如下图所示。

5.5 白平衡算法

       唔,由于我之前做过一个关于白平衡算法的课堂展示,这部分内容我就用我当时的PPT了,偷个懒~

       除了White Patch和Gray World,还有一种非常实用的白平衡算法,灰度阴影(Shadow of Gray, SoG),该方法则是在灰度世界的基础上,引入了闵可夫斯基范式。有兴趣的朋友可以查阅网上的博客,对于这三种算法的介绍非常全面。

       而代码实现部分其实非常简单,白平衡算法最重要的工作就是估计光源。消除光源的方法则是通过对估计光源的R、G、B比例,去调整源图像的R通道与B通道(不调整G通道,因为人眼对绿色更敏感),配合代码理解这句话会更容易。

% Matlab2017a
% whitebalance.m
clc 
clear
close all
input_image=double(imread('C:\Users\as\Desktop\juejin\4——\thedress.jpg'));

figure(1); 
subplot(221);
imshow(uint8(input_image));
title('原始图像');

R=input_image(:,:,1);
G=input_image(:,:,2);
B=input_image(:,:,3); 

%% maxRGB 
white_R=max(R(:));
white_G=max(G(:));
white_B=max(B(:));
output_image=input_image;
output_image(:,:,1)=output_image(:,:,1)*white_G/white_R;
output_image(:,:,2)=output_image(:,:,2)*white_G/white_G;
output_image(:,:,3)=output_image(:,:,3)*white_G/white_B;
subplot(222);
imshow(uint8(output_image));
title('maxRGB');
% imwrite(uint8(output_image),'C:\Users\as\Desktop\maxRGB1.png');

%% GRAY WORLD 
white_R1 = mean(R(:));
white_G1 = mean(G(:));
white_B1 = mean(B(:)); 
output_image1 = input_image;
output_image1(:,:,1) = output_image1(:,:,1)*white_G1/white_R1;
output_image1(:,:,2) = output_image1(:,:,2)*white_G1/white_G1; 
output_image1(:,:,3) = output_image1(:,:,3)*white_G1/white_B1; 
subplot(223);
imshow(uint8(output_image1));
title('GRAY WORLD'); 

%% SOG

p=6;
white_R2 = (mean(R(:).^p))^(1/p);
white_G2 = (mean(G(:).^p))^(1/p);
white_B2 = (mean(B(:).^p))^(1/p);
output_image2 = input_image; 

output_image2(:,:,1) = output_image2(:,:,1)*white_G2/white_R2;
output_image2(:,:,2) = output_image2(:,:,2)*white_G2/white_G2;
output_image2(:,:,3) = output_image2(:,:,3)*white_G2/white_B2; 
subplot(224);
imshow(uint8(output_image2)); 
title('SOG');

结果呈现

       由于Max RGB(White Patch)需要原图像中存在白色区域,因此当图像无白色区域时,颜色矫正的效果会非常差。如对鞋子色彩的复原效果很好,因为图像中存在白色;而对于人像图像的恢复结果并不理想,这是因为原图像在脸颊部分有高光,被认为是较白的白点,故被算法执行计算所得的光源是较接近白色的,因此效果不佳。

       而Gray World对白点不依赖,但对图像颜色的丰富性依赖较高。因为其对光源的估计是来自图像的平均颜色的。结果如图所示。

       SoG的代码部分已经给出,有兴趣的朋友可以自己调试参数p(p=6时的鲁棒性和效果都比较理想)。

写在最后

       如果你喜欢我的这篇博客的话,请点个赞吧!~如果你喜欢我的风格并且想了解更多相关的内容,可以关注我~我会不定期更新有趣的图像与视觉方面的知识并加入个人的独特理解~

       您的支持就是对我最大的肯定。