
圖 1:社交媒體上廣為轉發的 " 紅色可樂罐 " 圖片(右側為局部放大)
圖源:jimhejl(twitter)
首先,大家來一起看張圖,圖里面是不是有一罐平時常見的紅色可口可樂?有人會說,我相信我的眼睛,千真萬確,肯定有。不過先別急,把這張圖在手機或者電腦屏幕上放大之后,再回頭來仔細看一下,是不是感覺到有些不對頭?里面似乎只有一些黑乎乎、白花花和青幽幽的線條,唯獨沒有正了八經的紅色,可是把圖片一縮小回原形,紅色可樂罐又出現了。這種亦真亦幻的詭異現象該如何解釋?難道真的因為心中有善 , 見的都是光明 , 心中有惡 , 見的都是黑暗,心中有可口可樂,見的就都是紅色易拉罐?
假如視覺欺騙了你,不要悲傷,不要心急,小編會為你在光學上答疑解惑。一張照片展現出無中生有的顏色其實也并不是什么稀罕事,這與照片本身表示顏色信息的方式有關。無論是相機,顯示屏,還是打印機,投影儀,各種數碼圖像設備在表示一張圖片的時候,都是以像素陣列的形式。說白了,就是整張圖是由很多個小方格作為基本單元組成的,每個小方格稱為一個像素,具有自己的顏色。在二三十年前,早期電子游戲機的畫質粗糙,分辨率低,每個像素尺寸大,圖像總有 " 方格感 ",像打了馬賽克一樣。后來隨著顯示技術的發展,一張圖的像素數量變多,每個像素尺寸變小,整張圖看起來的真實感就越來越強了,單個像素好像隱身了,不過萬變不離其宗,像素陣列的形式還是一直保持著。當然在復古潮流的驅使下,現今流行的以 CryptoPunk 為代表的 NFT 頭像還是會讓你產生明顯的 " 像素感 " ( NFT 專業名稱是 Non-Fungible Token,非同質化通證 ) 。

圖 2:早期電子游戲機的畫面
圖源:Light 科普坊 /VEER

圖 3:NFT 頭像
圖源:Light 科普坊 /VEER
我們平時常說黑白照片和彩色照片,黑白電影和彩色電影,其實 " 黑白 " 指的應該是 " 灰度 ",里面雖然沒有彩色,但是具有從全黑色、深灰色,中灰色,淺灰色一直到全白色的連續過渡 ( 具體可以用灰度值 0 到 255 來表示 ) ,也可以帶來相當程度的圖像效果和表現力,比如上世紀 90 年代的電影名作《辛德勒名單》的導演就有意在大部分的畫面中采用沒有彩色的灰度效果。但有些時候,受技術限制,真正的灰度也是做不到的,比如簡易的打印機或者顯示屏只能在每個像素顯示全黑色 ( 0 ) 和全白色 ( 255 ) ,相當于只有純黑色和純白色兩只畫筆,可以稱得上是真正的 " 黑白 " 二值化顯示。巧婦難為無米之炊,要想繪制出一張不同位置灰度深淺不一的照片也要動一番腦筋。

圖 4:某哥們照片灰度圖 ( 左 ) ,粗暴近似獲得的黑白二值圖 ( 中 ) ,像素優化獲得的黑白二值圖 ( 右 )
圖源:Light 科普坊 /VEER
例如我們要顯示國外某哥們的這張灰度照片,如果直接把不同像素的灰度值硬性近似為純黑色或者純白色,淺灰色就一律 " 四舍五入 " 為白色,深灰色就一律 " 四舍五入 " 為黑色,最后的結果就像第二張圖那樣慘不忍睹,整個一張 " 大花臉 ",而第三張圖看起來就舒服了很多,似乎其中灰度深淺可變,不只有全黑全白兩種顏色,但仔細一看,其實仍然只有這兩種像素點,只是由于使用了一種名為 " 誤差擴散 " 的算法 [ 1 ] ,合理控制了不同區域的黑白像素比例,黑點相對密集的地方表示暗的區域,白點相對密集的地方表示亮的區域,以空間分布換取了顏色深淺表示上的精度,就像變了魔法一樣,帶來了完整的灰度觀看體驗。
而使用有限數量的畫筆創造出千變萬化的彩色,同樣可以做到。在彩色顯示中,紅綠藍是三原色,紅光和綠光混合可以產生黃色光,綠光和藍光混合可以產生青色光,紅光和藍光混合可以產生紫色光,三原色都混合到一起獲得的結果則是白色光。理想情況下,一個像素可以同時產生紅綠藍 ( RGB ) 三原色的光,并且三個通道的強度都是可以自由調節的,可以方便地混合出各種彩色。可理想是美好的,現實是骨感的,如果一個像素只能單獨顯示紅色或者單獨顯示藍色,要想搭配出紫色咋辦呢?
在下面的這些棋盤格子圖案中,每個方塊都是紅色或者藍色,數量比例是 1:1,從左到右,隨著格子的逐漸變小,相當于像素變得更小更密集,似乎紅色和藍色在漸漸消失,而最終整個圖案變成了紫色。這其實是錯的!所有的圖案 ( 包括最右面的圖案 ) 中所有像素都只有紅色和藍色,紫色是人眼融合紅藍色像素產生的一種錯覺,或者說憑空感知出了原本不存在的顏色。

圖 5:紅藍方塊尺寸逐漸減小而融合為紫色
圖源:焦述銘
下面左圖里,每個像素只有 256 種可能的顏色,在表現更豐富的色彩層次時就顯得力不從心,捉襟見肘,而讓像素點的位置更合理地分布之后,右邊的圖明顯變得更加令人賞心悅目。

圖 6:原本 256 色的圖片(左)經過優化處理后的效果(右)
圖源:維基共享資源
我們可以通過有限數量顏色像素位置的空間分布獲得 " 無中生有 " 的新顏色,而時間維度則是另一種方式。舉個簡單的例子,很多人小時候一定玩過這樣的游戲,用硬紙板制作一個小圓盤,小圓盤上交替涂上紅色和黃色,然后把小圓盤中間穿上一根小支柱,讓小圓盤像陀螺一樣快速旋轉,你會看到什么?沒錯,小圓盤既不是紅色,也不會黃色,而是紅黃兩色快速 " 輪班 " 在你的眼前閃過,被 " 調成 " 了中間的橙色。顯示屏在播放視頻時,事實上相當于每秒鐘幾十張的靜態畫面依次快速閃過,而人眼恰好又有視覺暫留效應,把它們混疊在一起,以這種方式快速交替顯示兩種原色,自然也可以欺騙你的眼睛看到融合后的新顏色。
其實以上提到的這些圖像處理把戲還有個專門的名稱:抖動 ( dithering ) 。這要從幾十年前第二次世界大戰時候說起,當時電子計算機還沒有發明,美國軍方的轟炸機在計算飛行方向和投彈曲線時也只能使用機械計算機,一臺大箱子里面包含了大量的齒輪和杠桿零件,別看計算精度不咋地,還挺嬌氣,怕碰怕摔,在轟炸機駕駛艙里忽上忽下地可不像家里坐在沙發上那么舒服,人們最擔心劇烈的晃動會把零件震落下來幾個,讓機械計算機玩不轉了,飛機迷失航向,炸彈誤扔到自己的陣地上就要出大麻煩了。不過人家這種計算機還挺爭氣,在飛機上也并沒有晃壞,而且意外的是,計算的結果反而比在地面上安安穩穩使用時更準確,讓人大惑不解。既然它有這個 " 怪脾氣 ",工程師們還一度專門設計了模擬飛行狀態的振動器,讓機械計算機在地面上也能體驗飛一般的感覺,以提升計算精確度。
這些家伙為什么在飛機上晃一晃之后更好用呢?主要是由于早期機械零件不像現在的計算機可以精確到小數點后很多很多位,只有有限的數位,假設只能精確到十位 ( 100,110,120,130,140,… ) ,個位就要四舍五入了,比如 123 只能用 120 表示,而 128 只能用 130 表示,這顯然是不夠靠譜的,經過一步步的計算,誤差會越積累越多。與其每次都把 123 用 " 缺斤少兩 " 的 120 表示,一個更聰明的辦法是 123 有的時候用 120 表示,有的時候用 130 表示,但是因為它更接近 120,用 120 表示的占比要稍多一些,就像用一杯滾燙的沸騰開水和一杯零度的冰水適當比例調和,可以勾兌出中間某一冷熱程度的溫水。而把機械計算機晃一晃,相當于引入了誤差,恰好讓原本每次都能正常四舍五入的運算一部分時候失靈,四也不舍,五也不入,陰差陽錯之下在不經意間實現了這種 " 數值勾兌 " 的效果。這種通過加入一些隨機的小誤差,化解掉計算時四舍五入時候大的誤差,是一個 " 以毒攻毒 " 的絕妙主意,這是抖動技術最早來源 [ 2 ] 。
在二戰結束后的 1946 年,世界上第一臺現代電子數字計算機 ENIAC 誕生于賓夕法尼亞大學,機械計算機逐漸淡出歷史舞臺,不過抖動技術在另一個顏色顯示技術的舞臺上卻大放異彩。各類相機和顯示器從發展早期階段甚至直到今天,在忠實地記錄和再現五彩斑斕的現實世界時,遇到的一個棘手的麻煩就是顏色種類不夠多,這在幾十年前的報紙雜志印刷和電視電腦顯示屏中表現尤為突出。類似于解決早期計算機表示數值位數不夠時的抖動方法,就像畫家使用調色板一樣,我們可以用多種已有顏色調和出不存在的顏色。畢竟人的 " 眼神兒 " 不那么好,可以把位置很接近的微小像素或者不同時間點快速變化的像素融合到一起進行虛擬的調色。隨著技術的發展,如今最普通的手機顯示屏也可以直接支持很多種顏色,往往不再需要無中生有創造新色彩,但實驗室中用于特定場景的不少專業顯示設備由于性能受限,還是很依賴相關的技術,比如用于全息三維顯示的液晶空間光調制器和數字微鏡器件 [ 3 ] [ 4 ] [ 5 ] 。
在對于顏色的感知上,人類視覺還有其他很多不可思議的奇妙現象,比如下面這張圖,你第一眼印象覺著它是彩色照片嗎?

圖 7:顏色同化網格視錯覺圖片
圖源:stuarthumphryes(twitter)
真相是這張圖里大部分像素都是灰度的,無法區分顏色,只有覆蓋在灰度照片上的網格線中的像素是彩色的,當然這些像素顏色不是隨意設置的,而是相比于照片中對應像素原本正確的顏色進行了過飽和處理,可以簡單理解為網格上的像素顏色比正常情況更鮮艷很多,飽和度很高,相比較之下,背景的灰度像素完全沒有彩色,飽和度為 0,兩種 " 極端 " 的像素在人眼的融合之下,使得整張照片看起來具有正常的彩色。以上這種效應被稱為顏色同化網格視錯覺 [ 6 ] ,當然我們也可以把網格設計的更加密集,到單個像素的尺度," 偽彩色 " 照片中大多數像素是灰度的事實會更難被發現。
最后讓我們回到文章開頭的紅色可口可樂罐,這又是人眼對于顏色的另外一種誤判,下面的草莓圖片也有類似效果。要產生這樣的圖像效果,具體做法是:將原本正常顏色的照片分解為有很多微小的點或者細密的線條組成,以線條為例,分為相互交錯的兩組,其中一組中把線條像素的紅色成分設成 0,于是這些線中原本有紅色的部分看起來偏黑色或者原本沒有紅色的部分看起來偏青色,另一組中保持紅色成分不變,但把綠色和藍色成分的強度值設為最大 ( 過飽和 ) ,這些線會看起來偏白色。兩種交錯的線條中都相當于調高了綠色和藍色的強度,降低了紅色的強度,等效于通過一張把紅光去除掉的濾光片觀看原始照片,整張圖片像是蒙上了一層偏青色的面紗。由于這種情況下,即使原本實際為紅色的物體也會看起來是黑的,反過來了說,對于表面看起來像是偏黑色的物體,人眼和大腦本能上更趨向于還原它們為紅色,于是可樂易拉罐和草莓也就是這樣被 " 染成了紅色 ",這稱為顏色恒常性錯覺 [ 7 ] 。

圖 8:原始彩色圖片
圖源:Light 科普坊 /VEER

圖 9:通過兩組交錯線條來產生紅色錯覺 ( 右側為線條的放大:紅色在哪里? )
圖源:Light 科普坊 /VEER

圖 10:通過兩組交錯方格來產生紅色錯覺 ( 右側為網格的放大:紅色在哪里? )
圖源:Light 科普坊 /VEER
以上的種種 " 騙局 " 足以證明人類視覺在某些時候辨別顏色的能力簡直弱爆了,不過一個更加離譜的例子 [ 8 ] 還在下面,我們本能地會覺著上下兩個物體的顏色明顯不一樣,一個深灰色,一個白色。但是你只要用一根手指擋住兩者之間的交界區域,會發現兩個物體的顏色竟然是一摸一樣的!這個結果一定會讓你抓狂。


圖 11:一張顛覆你顏色深淺判斷能力的圖片
圖源:American Scientist .org
讀完了本文之后,你還相信自己的雙眼嗎?它們確實會經常犯各種莫名其妙的錯誤,每次的錯誤 " 犯了就改,改了再犯 ",不過也正是這種善意的欺騙,促使你 " 腦補 " 出真實物體不存在的顏色,讓你感知到的世界更加絢麗多彩。
原文地址:http://www.myzaker.com/article/62ff5df0b15ec054de4cb8be