首先,大家來一起看張圖,圖里面是不是有一罐平時常見的紅色可口可樂?有人會說,我相信我的眼睛,千真萬確,肯定有。不過先別急,把這張圖在手機或者電腦屏幕上放大之后,再回頭來仔細看一下,是不是感覺到有些不對頭?里面似乎只有一些黑乎乎、白花花和青幽幽的線條,唯獨沒有正了八經(jīng)的紅色,可是把圖片一縮小回原形,紅色可樂罐又出現(xiàn)了。
這種亦真亦幻的詭異現(xiàn)象該如何解釋?難道真的因為心中有善,見的都是光明;心中有惡,見的都是黑暗;心中有可口可樂,見的就都是紅色易拉罐?
假如視覺欺騙了你,不要悲傷,不要心急,Light科普坊會為你在光學上答疑解惑。一張照片展現(xiàn)出無中生有的顏色其實也并不是什么稀罕事,這與照片本身表示顏色信息的方式有關。無論是相機,顯示屏,還是打印機,投影儀,各種數(shù)碼圖像設備在表示一張圖片的時候,都是以像素陣列的形式。說白了,就是整張圖是由很多個小方格作為基本單元組成的,每個小方格稱為一個像素,具有自己的顏色。
在二三十年前,早期電子游戲機的畫質(zhì)粗糙,分辨率低,每個像素尺寸大,圖像總有“方格感”,像打了馬賽克一樣。后來隨著顯示技術的發(fā)展,一張圖的像素數(shù)量變多,每個像素尺寸變小,整張圖看起來的真實感就越來越強了,單個像素好像隱身了,不過萬變不離其宗,像素陣列的形式還是一直保持著。當然在復古潮流的驅(qū)使下,現(xiàn)今流行的以CryptoPunk為代表的NFT頭像還是會讓你產(chǎn)生明顯的“像素感”(NFT專業(yè)名稱是Non-Fungible Token,非同質(zhì)化通證)。
我們平時常說黑白照片和彩色照片,黑白電影和彩色電影,其實“黑白”指的應該是“灰度”,里面雖然沒有彩色,但是具有從全黑色、深灰色,中灰色,淺灰色一直到全白色的連續(xù)過渡(具體可以用灰度值0到255來表示),也可以帶來相當程度的圖像效果和表現(xiàn)力,比如上世紀90年代的電影名作《辛德勒名單》的導演就有意在大部分的畫面中采用沒有彩色的灰度效果。但有些時候,受技術限制,真正的灰度也是做不到的,比如簡易的打印機或者顯示屏只能在每個像素顯示全黑色(0)和全白色(255),相當于只有純黑色和純白色兩只畫筆,可以稱得上是真正的“黑白“二值化顯示。巧婦難為無米之炊,要想繪制出一張不同位置灰度深淺不一的照片也要動一番腦筋。
例如我們要顯示國外某哥們的這張灰度照片,如果直接把不同像素的灰度值硬性近似為純黑色或者純白色,淺灰色就一律“四舍五入”為白色,深灰色就一律“四舍五入”為黑色,最后的結(jié)果就像第二張圖那樣慘不忍睹,整個一張“大花臉”,而第三張圖看起來就舒服了很多,似乎其中灰度深淺可變,不只有全黑全白兩種顏色,但仔細一看,其實仍然只有這兩種像素點,只是由于使用了一種名為“誤差擴散“的算法[1],合理控制了不同區(qū)域的黑白像素比例,黑點相對密集的地方表示暗的區(qū)域,白點相對密集的地方表示亮的區(qū)域,以空間分布換取了顏色深淺表示上的精度,就像變了魔法一樣,帶來了完整的灰度觀看體驗。
而使用有限數(shù)量的畫筆創(chuàng)造出千變?nèi)f化的彩色,同樣可以做到。在彩色顯示中,紅綠藍是三原色,紅光和綠光混合可以產(chǎn)生黃色光,綠光和藍光混合可以產(chǎn)生青色光,紅光和藍光混合可以產(chǎn)生紫色光,三原色都混合到一起獲得的結(jié)果則是白色光。理想情況下,一個像素可以同時產(chǎn)生紅綠藍(RGB)三原色的光,并且三個通道的強度都是可以自由調(diào)節(jié)的,可以方便地混合出各種彩色。可理想是美好的,現(xiàn)實是骨感的,如果一個像素只能單獨顯示紅色或者單獨顯示藍色,要想搭配出紫色咋辦呢?
在下面的這些棋盤格子圖案中,每個方塊都是紅色或者藍色,數(shù)量比例是1:1,從左到右,隨著格子的逐漸變小,相當于像素變得更小更密集,似乎紅色和藍色在漸漸消失,而最終整個圖案變成了紫色。這其實是錯的!所有的圖案(包括最右面的圖案)中所有像素都只有紅色和藍色,紫色是人眼融合紅藍色像素產(chǎn)生的一種錯覺,或者說憑空感知出了原本不存在的顏色。
下面左圖里,每個像素只有256種可能的顏色,在表現(xiàn)更豐富的色彩層次時就顯得力不從心,捉襟見肘,而讓像素點的位置更合理地分布之后,右邊的圖明顯變得更加令人賞心悅目。
我們可以通過有限數(shù)量顏色像素位置的空間分布獲得“無中生有”的新顏色,而時間維度則是另一種方式。舉個簡單的例子,很多人小時候一定玩過這樣的游戲,用硬紙板制作一個小圓盤,小圓盤上交替涂上紅色和黃色,然后把小圓盤中間穿上一根小支柱,讓小圓盤像陀螺一樣快速旋轉(zhuǎn),你會看到什么?沒錯,小圓盤既不是紅色,也不會黃色,而是紅黃兩色快速“輪班”在你的眼前閃過,被“調(diào)成”了中間的橙色。顯示屏在播放視頻時,事實上相當于每秒鐘幾十張的靜態(tài)畫面依次快速閃過,而人眼恰好又有視覺暫留效應,把它們混疊在一起,以這種方式快速交替顯示兩種原色,自然也可以欺騙你的眼睛看到融合后的新顏色。
其實以上提到的這些圖像處理把戲還有個專門的名稱:抖動(dithering)。這要從幾十年前第二次世界大戰(zhàn)時候說起,當時電子計算機還沒有發(fā)明,美國軍方的轟炸機在計算飛行方向和投彈曲線時也只能使用機械計算機,一臺大箱子里面包含了大量的齒輪和杠桿零件,別看計算精度不咋地,還挺嬌氣,怕碰怕摔,在轟炸機駕駛艙里忽上忽下地可不像家里坐在沙發(fā)上那么舒服,人們最擔心劇烈的晃動會把零件震落下來幾個,讓機械計算機玩不轉(zhuǎn)了,飛機迷失航向,炸彈誤扔到自己的陣地上就要出大麻煩了。不過人家這種計算機還挺爭氣,在飛機上也并沒有晃壞,而且意外的是,計算的結(jié)果反而比在地面上安安穩(wěn)穩(wěn)使用時更準確,讓人大惑不解。既然它有這個“怪脾氣”,工程師們還一度專門設計了模擬飛行狀態(tài)的振動器,讓機械計算機在地面上也能體驗飛一般的感覺,以提升計算精確度。
這些家伙為什么在飛機上晃一晃之后更好用呢?主要是由于早期機械零件不像現(xiàn)在的計算機可以精確到小數(shù)點后很多很多位,只有有限的數(shù)位,假設只能精確到十位(100,110,120,130,140,…),個位就要四舍五入了,比如123只能用120表示,而128只能用130表示,這顯然是不夠靠譜的,經(jīng)過一步步的計算,誤差會越積累越多。與其每次都把123用“缺斤少兩”的120表示,一個更聰明的辦法是123有的時候用120表示,有的時候用130表示,但是因為它更接近120,用120表示的占比要稍多一些,就像用一杯滾燙的沸騰開水和一杯零度的冰水適當比例調(diào)和,可以勾兌出中間某一冷熱程度的溫水。而把機械計算機晃一晃,相當于引入了誤差,恰好讓原本每次都能正常四舍五入的運算一部分時候失靈,四也不舍,五也不入,陰差陽錯之下在不經(jīng)意間實現(xiàn)了這種“數(shù)值勾兌”的效果。這種通過加入一些隨機的小誤差,化解掉計算時四舍五入時候大的誤差,是一個“以毒攻毒”的絕妙主意,這是抖動技術最早來源[2]。
在二戰(zhàn)結(jié)束后的1946年,世界上第一臺現(xiàn)代電子數(shù)字計算機ENIAC誕生于賓夕法尼亞大學,機械計算機逐漸淡出歷史舞臺,不過抖動技術在另一個顏色顯示技術的舞臺上卻大放異彩。各類相機和顯示器從發(fā)展早期階段甚至直到今天,在忠實地記錄和再現(xiàn)五彩斑斕的現(xiàn)實世界時,遇到的一個棘手的麻煩就是顏色種類不夠多,這在幾十年前的報紙雜志印刷和電視電腦顯示屏中表現(xiàn)尤為突出。類似于解決早期計算機表示數(shù)值位數(shù)不夠時的抖動方法,就像畫家使用調(diào)色板一樣,我們可以用多種已有顏色調(diào)和出不存在的顏色。畢竟人的“眼神兒”不那么好,可以把位置很接近的微小像素或者不同時間點快速變化的像素融合到一起進行虛擬的調(diào)色。隨著技術的發(fā)展,如今最普通的手機顯示屏也可以直接支持很多種顏色,往往不再需要無中生有創(chuàng)造新色彩,但實驗室中用于特定場景的不少專業(yè)顯示設備由于性能受限,還是很依賴相關的技術,比如用于全息三維顯示的液晶空間光調(diào)制器和數(shù)字微鏡器件[3][4][5]。
最后讓我們回到文章開頭的紅色可口可樂罐,這又是人眼對于顏色的另外一種誤判,下面的草莓圖片也有類似效果。要產(chǎn)生這樣的圖像效果,具體做法是:將原本正常顏色的照片分解為有很多微小的點或者細密的線條組成,以線條為例,分為相互交錯的兩組,其中一組中把線條像素的紅色成分設成0,于是這些線中原本有紅色的部分看起來偏黑色或者原本沒有紅色的部分看起來偏青色,另一組中保持紅色成分不變,但把綠色和藍色成分的強度值設為最大(過飽和),這些線會看起來偏白色。兩種交錯的線條中都相當于調(diào)高了綠色和藍色的強度,降低了紅色的強度,等效于通過一張把紅光去除掉的濾光片觀看原始照片,整張圖片像是蒙上了一層偏青色的面紗。由于這種情況下,即使原本實際為紅色的物體也會看起來是黑的,反過來了說,對于表面看起來像是偏黑色的物體,人眼和大腦本能上更趨向于還原它們?yōu)榧t色,于是可樂易拉罐和草莓也就是這樣被“染成了紅色”,這稱為顏色恒常性錯覺[7]。
本文來源:把科學帶回家