(洗出来的)楔子

黑白滤镜会把所有的色彩剔除掉,只留存下最纯粹的明暗与线条,这种表达是我所喜爱的,所以近些天调了了许多黑白色调的灰度图片

而黑白滤镜只是把原本的彩色变成了灰度,去掉了饱和度而已,画面有黑有白还有灰。色彩越鲜艳转换的就倾向于白色,越暗淡就转换成黑色。比如现在我有另一张图片,调色后色彩比较浓烈,应用黑白滤镜后变成了黑乎乎的一大片:
划龙舟的人(蓝玻璃滤镜)

黑白滤镜

这种黑乎乎效果并不是我想要的,那么如何把白的变黑、黑的变白呢?这种需求其实就是所谓的负片效果啦,为了理解负片,我们要先澄清两个概念:颜色空间与胶片冲洗。

色彩空间

何为颜色

在遥远的南太平洋上,有一座名为Pingelap Atoll的小岛,由于极高全色盲的发病率,岛上有十分之一的人看不到颜色,脑海里没有颜色的概念。

看不到白云、蓝天、不知道秋枯春荣,你能想象出来那样的世界吗?十年前一款诺基亚的游戏《蹦球传说》在第一章“薄雾清晨”中展现了一个类似的场景——鲜明的白云与绿草因为怪物制造的颜色提取器而变成了阴暗恐怖的紫色,然而全色盲的世界是更加真实的——只有明亮度不同的黑白灰。

如果你想体验一下这种感觉,可以在安卓手机上打开辅助功能-无障碍-视觉-色彩校正,然后开启全色盲/灰度(不同安卓版本色彩校正的位置有所差异)打开后你就可以体验一下那种感觉了。
让人发狂的灰度模式

感谢老天爷,感谢达尔文,感谢DNA,我能看见颜色,这是一种幸福!

至于颜色,虽绚丽缤纷,看似无穷无尽,然而实际上仅仅是

  • 380780nm380\sim 780 nm范围内短短400nm400nm波长范围内的电磁波。
    • 波长越短,能量越高,越趋向蓝紫色;
    • 波长越长,能量越低,越趋向于橙红色。

然而,我们的肉眼并不能直接测出光波的波长。光线进入眼睛后,会刺激视网膜上两种特殊的感觉细胞——杆状细胞(rod)和锥状细胞(cone)——产生生物电流刺激后方的神经细胞层,进而经大脑处理产生影像。顾名思义,下图中左图是杆状细胞在显微镜下的形态,右图为两种细胞的示意图。

  1. 杆状细胞外形像一根小木棍,负责夜间灰度视觉,它是一种灵敏度很高的接收系统,能够分辨极微小的亮度差别,协助辨识物体的层次,但是却不能分辨颜色
  2. 锥状细胞则像一头细一头粗的锥形。负责日间色彩视觉,锥状细胞较不灵敏,但是却有分辨颜色的能力

颜色的视觉基础。左图是杆状细胞在显微镜下的形态,右图为两种细胞的示意图

两种细胞的作用分别是什么呢?。例如,在亮度很弱的情况下,物体看起来都是灰灰白白的,就是由于锥状细胞在这时已不发挥作用,只有杆状细胞在起作用。这也是HSB颜色空间的原理。

计算机上的颜色表达

为了能够在计算机上描述图像,对于图像f(x,y)f(x,y)(相当于一个平面的二维矩阵),我们必须在空间和振幅两方面对其进行数字化。空间坐标(x,y)的数字化称为图像采样,振幅数字化称为灰度量化。在计算机中,通常将像素通道所对应的值表示为整数0255(0\sim 255)或浮点数01(0\sim 1)

形式最简单的图像(单通道)是一个二维函数f(x,y)f(x,y),即将坐标点映射为与点的强度/颜色相关的整数/实数。主要分为二值图像、灰度图像(又称黑白图像)

  • 将灰度图像转换为二值图像的过程,常通过依次遍历判断实现,如果像素大于 127 则设置为 255,否则设置为 0。

  • RGB颜色空间中是用(0,256)个数值来量化灰度等级,比如0代表黑色,255代表白色

更复杂一点的图像就是彩色图像了,是一个三维函数f(x,y,z)f(x,y,z) :比如常见的RGB图像,便是通过红、绿、蓝三种颜色的混合来表示。彩色RGB图像的像素点(x,y)可以表示为三元组(r(x,y),g(x,y),b(x,y))(r_{(x,y)},g_{(x,y)},b_{(x,y)} ),比如蓝色的rgb数值为(0,0,255)、五十度灰为(128,128,128)等
图象储存

颜色空间

RGB和CMYK是模拟自然界光线的加色和减色过程创立的颜色模式。

如前所述,RGB是显示器通过发射红绿蓝三种光束来创建颜色的,是一种用于显示器及其他自发光媒体的色彩模型。 RGB 是一种加色模型:颜色在相互叠加时结果变亮。它的色域在目前所有色彩模型中最为宽广;

RGB模式是一种加色法模式, 通过R、G、B数值的不同大小,可描述出任一种颜色。计算机定义颜色时R、G、B三种成 分的取值范围是0~255,可以组合出1670万(256×256×256)中颜色,0表示没有刺激 量,255表示刺激量达最大值。R、G、B均为255时就合成了白光,R、G、B均为0时就 形成了黑色。

sRGB-elle-v2-srgbtrc 色彩空间曲线

而在印刷介质上,是一种另一种颜色空间CMYK,它是以打印在纸张上油墨的光 线吸收特性为基础的,是一种减色空间,遵循减色法混合规律,当白光照射到半透明油墨 上时,部分光谱被吸收,部分被反射回眼睛。使用青、洋红、黄及黑色来创建。

CMYK分别是英文青色(Cyan)、洋红色(Magenta)、黄色(Yellow)的首字母,由于蓝(Blue)的首字母和黑色(Black)都是B,为避免混淆,采用黑色(Black)的最后一个字母K来代表黑色。

CMYK颜色空间

HSB(色相(Hue)、饱和度(Saturation)和亮度(Brightness))模式是最容易理解的模式,它是基于人类感觉颜色的方法来创建颜色的。

  • 色相:把颜色从紫色到红色划分了360度

  • 饱和度:饱和度越少,色彩浓度也不断减少,颜色从鲜艳逐渐变成灰色。

  • 亮度:亮度越低,越暗(废话),颜色逐渐变成黑色

HSB系列的色彩空间曲线图

此外:从HSB衍生出来的其他颜色模式有:HSL(亮度)、HSV(明度)、HSL(强度)以及最贴近人眼的HSY’

著名开源插画软件Krita中关于HSY'的介绍

YCbCr 是一种用于视频编码的色彩模型。它基于人类对色彩的感知原理将色彩以亮度、红绿平衡以及黄蓝平衡三个参数进行编码。此模型中的色品是饱和度的一种特殊形式,其范围的饱和端为红和蓝,不饱和端为绿和黄。在摄影后期调色的时候有用过。

Ycbcr

色彩的终结

彩色管理的目标就是在不同的彩色设备上得到一致的颜色。达到这一目标的基本原理 就是将所有与设备相关的颜色都用与设备无关的方式来描述。

色彩空间太多太杂,为此,在1993年,由苹果、微软、Adobe、柯达、爱克发等在电子成像方面处于领导地位的公司创建了国际色彩联盟(ICC)(International Color Consortium)。国际色彩委员会提出了ICC规范(现在又整了个新的ICCMAX),它是描述设备的彩色特性的国际标准。ICC选择了CIE XYZ和CIE LabL^{*}a^{*}b^{*}这两个与设各无关的色彩空问作为标准的色彩空问,称为PCS(Profile ConnectionSpace)。与设备相关的RGB和CMYK颜色都先转换到CIEXYZ或CIE LabL^{*}a^{*}b^{*}空间上,传递到不同的设备上之后,再转换为适合该设备的颜色,从而保证颜色在不同设备上的一致性[1]

为何打印出来的东西颜色会失真:用HSB描述RGB与CMYK的差别

当我们把精心挑选的美拍发给打印店老板去冲印,老板总会寄回来的照片总会穿插着一些妖魔鬼怪的颜色,让人无比气愤,想把照片一把摔在老板脸上。其实这不是老板的错,是颜色空间的转换问题,至于这种格局是如何出现的,是不是就像QWERT键盘一样先入为主,我们暂且不谈。

既然已经有了大一统的ICC规范,那么转换成CMYK不久很简单了吗?

RGBLabCMYK\text{RGB}\Longrightarrow L^{*}a^{*}b^{*}\Longrightarrow\text{CMYK}

思路很简单,但实现起来却很困难,这其中涉及到平面方程理论:当青、品和黄等3色中某一色的网点面积率一定,而其他两色的网点面积率任意变化时,所构成颜色的LabL^{*}a^{*}b^{*}值位于同一个平面上。而后人们又提出了更通用的四色(青、品、黄、黑)平面方程。具体细节参见[2],还有通过神经网络来研究色彩转换的[3] [4]

总之从理论上来讲LabL^{*}a^{*}b^{*}到CMYK颜色转换是不能保证百分百对应的。

从现实上讲,油墨的颜色也不是非常标准。

印刷使用的油墨并不是理想的油墨,也就是说理想的黄色本来应该完全反射 500~700nm的可见光,完全吸收400~500nm的可见光,但是实际使用的黄色油墨并不是 这样的,它在500~700nm这部分反射不足,在400~500m这部分吸收不足。其原因是黄色油墨显色时呈现少量的品红和青色的成分。其他油墨也存在这样的问题,在印刷或打印 输出时,如果我们不使用黑墨,100%的黄色、100%的品色、loo%的青色混合将得到一种棕褐色,表现不出真正的黑色。通常要添加黑色以保证暗色和灰色不偏色。因此要增加一个 黑色版来表现真正的黑色。故在实际印刷中,CMYK颜色空间是和设备或者是和印刷过程 相关的,即同一组C、M、Y、K数据(网点面积率)不能精确地说明它的呈色效果,其呈现 的颜色与印刷条件如工艺方法、油墨特性、纸张特性等相关,不同条件下的相同的C、M、 Y、K网点面积率会有不同的颜色效果[1:1]

简易负片效果

了解了色彩空间后,在常见的RGB色域中,实现反色负片效果其实很简单,只需红绿蓝(r(x,y),g(x,y),b(x,y))(r_{(x,y)},g_{(x,y)},b_{(x,y)} )都反过来即可,即:

(r(x,y),g(x,y),b(x,y))=(255r(x,y),255g(x,y),255b(x,y))({r^{'}_{(x,y)}},{g^{'}_{(x,y)}},{b^{'}_{(x,y)}} )=(255-{\color{red}r_{(x,y)}},255-{\color{green}g_{(x,y)}},255-{\color{blue}b_{(x,y)}} )

黑白图像只含有灰度(02550\sim 255),转化更为简单:

(b,w)=(255b,255w)(w(0,255),b(0,255))(b^{'},w^{'})=(255-b,255-w)\qquad ({\color{blue}w\in(0,255),b\in(0,255)})

二值图像只含有黑白,转化最为直观:

(b,w)=(w,b)(w={0,1},b={0,1})(b^{'},w^{'})=(w,b)\qquad ({\color{blue}w=\{0,1\},b=\{0,1\}})

通过小米的相册编辑(版本3.5.7.10)中的曲线即可实现:
曲线操作

当当当当~成功了
划龙舟的人(负片效果)

把些黑白照片反色处理后,与原图组合到一起,有一种“太极☯️”的感觉。

潮汐黑白
黑白云彩

隐约雷鸣·修图历程

月婆
隐约雷鸣

Alien-Yong(拥)
2099年,火星基地的黎明

色彩转换密码

下图是歌手Avicii的专辑《The Nights 》的封面,可以看出图形经过了一些颜色变换。经过试验,并非简单的反色(眼睛与头发的颜色没有反转),而是局部颜色转换,可能是把黄色范围的色调增加某个值变换成了蓝色,对图像某个区域内(选区)内的白色变换成黑色等等。

把这张图还原成原色还是蛮困难的,像破解密码一样。而且即使还原到了近似的真实效果,也不能确定原图到底是什么样的,可以说是不可绝对还原的。

还原的尝试(用了三个图层来调整)

如果通过这种方式来加密文件,比如定义图像(500x500px)中某个点的RGB值为一个密码(比如定义坐标(250,438)的RGB值(110,119,120)为密码),然后经过某个变换进行加密。

简单算一下,单一个像素点而言,这样的变换方式有1628万种

2553=16581375255^{3}=16581375

如果该图片中的每个像素点(共500×500=250000500\times 500=250000)都可以单独进行变换,那整个变换方式就是个天文数字了:

(22553)250000=165813752500001.3686×101804905{(2255^{3})}^{250000}=16581375^{250000}\approx 1.3686\times10^{1804905}

这样的数量级别,想必用来存数据都能存不少吧。(照片本身就是用来存数据的吧!我个笨蛋)

负片宇宙

这一部分其实是意料之外的内容,因为我写文章习惯把永久链接翻译成英文,在翻译负片的时候发觉负片的英文是negative,与无人机里导出来的DNG(Digital Negative)格式有相同的一个词:negative,便深入了解了下dng的发展与冲洗照片的过程。

妙不可言的是,在某天下班后洗澡时候,热水临头之后,灵光一现,将冲洗的概念进一步抽象化,哲学化,越想越觉得有意思的,刚好在这里分享出来。

洗照片

洗照片,在英语世界中被称做:Develop photos,Develop是发展的意思,用在这里就有一种构建影像的深意。难怪外国人会思考那么多摄影哲学(参见『影像文丛』),而中文的洗照片一词显然没有太多可讲的东西。

洗照片的过程大概可以分为三步(与把大象装进冰箱类似)

  1. 把胶片展开后放入黑暗环境中(一般是黑屋或暗袋,显影罐,建议看看『三体(TV版)』中汪淼洗倒计时照片的场景,很直观)
  2. 放入显影液,等待一定时间,水冲洗;放入定影液,等待一定时间,水冲洗
  3. 取出胶片,晾干得到底片

洗照片得到的是显影、定影后的底片,比如左图
母亲结婚时候拍的照片

某蕳的生日照

而把负片打印出来,需要用OCR扫描底片,进行电子化,反色处理,得到电子化的照片!

一些定论:

  • 洗照片是底片显影与定影得到负片的过程
  • 负片打印出来需要光学扫描
  • 光学扫描必定会失真
  • 负片具有不可完全复制性

关于洗照片,感兴趣的话(反正我写到这里是好奇死了),这里还有几篇文章推荐读读(文章标题在此皆经过祛媚处理),

负片哲学

DNG(Digital Negative)简称数字负片,是RAW格式的后一代。

RAW格式是什么?

胶片摄影的基础是光化学反应,拍摄结果在胶片上形成光的潜像 ,需经历显影 、定影和冲洗处 理才得到最终结果。若以此来比喻,则RAW(原始数据)相当于胶片上记录的光潜像,它包含了由相机传感器捕获的实际像素数据,照相机没有对这些数据进行过任何形式的处理和加工。

从原始数据文件到TIFF或JPEG的处理过程则类似于显影,可以说照相机原始数据文件代表尚未经过 “显影”处理的信息。当我们把相片保存为JPEG或 TIFF格式时,相机会从传感器捕获的不完整的彩色通道开始(大多数照相机传感器只能在每一个像素位置上捕获一种灰度值,为此需对每一个像素使用滤镜,以补偿只能捕获灰度值的限制)对传感器捕获的信号作进一步的计算,填满各主色通道的“空洞”。在这个信号处理阶段, 用户在拍摄场景前规定的照相机设置结果便加到对应像素,例如白平衡和锐化设置参数等,使拍摄参数对结果像素产生实质性的作用。

作为一种通用的原始数据(RAW)格式,DNG文件也由图像数据和元数据两部分构成,(元数据用于描述和解释图像数据)。dng包含的图像数据书写格式建立在 TlFF格 式的基础上,正如许多面向照相机的原始数据格 式那样,这种格式的设计目标在于试图保持由大 多数相机传感器捕获的不完整的图像数据。

DNG可以理解为一个原始的底片,可以经过不同的冲洗方式得到最终图片

翻车了,想法翻车了💀💀💀💀,世界并不是都可以殊途同归的。这样的话,就只好自己造词了,暗片,就你咯

摄影的过程是没有曝光的底片,经过显影、定影后得到负片(底片),负片再经过扫描电子化得到图片。

没有曝光的底片(以下简称暗片),可以抽象为事物发展过程中最原始的样子。这个观点其实并不新鲜,早在一百多年前,马克思就提出过:万事万物都在不断发展,螺旋式前进,一个扬弃的过程。

有人说:人类的本质是复读机。在负片宇宙,人类的本质就是洗负片。

DNA是负片,编译是冲洗

思想是负片,解读是冲洗

《论语》是负片,孟子是冲洗

初代奥特曼是负片,迪迦是冲洗

星战是负片,侍者是冲洗


  1. 刘士伟. L<’>a<’>b<’*>到CMYK转换方程的研究[D]. 陕西:西安理工大学,2007. DOI:10.7666/d.y1050581. ↩︎ ↩︎

  2. 李仁爱,张岩,曹云峰.基于平面方程理论实现Lab*到CMYK转换与输出[J].包装工程,2014,35(21):113-117138 ↩︎

  3. 智川,李志健,冷彩凤,石毅.CMAC辨识的CMYK到CIE Lab颜色空间转换模型的研究[J].北京理工大学学报,2014,34(9):950-954 ↩︎

  4. 刘士伟,魏庆葆.基于BP神经网络的CMYK到L*a*b~*颜色空间转换模型[J].包装工程,2011,32(11):69-71 ↩︎