【隨筆】關於顏色的一點思考

林彥興


前陣子發現了「廣義雙曲拉伸 GHS」這個影像拉伸工具,並拿 2018 LOT 的 M1 影像做了點實驗。當時發現的一個現象 [1],是我的 R 色板中,M1 的 H-alpha 纖維狀結構常會有過曝的現象。但是明明 R 色板的原始影像裡面,M1 的中心是比纖維要亮的。所以我稱為「令人頭痛的 non-monotonic 變化」。

為什麼令人頭痛呢?主要就是影像處理合理性的問題。
「多少後製是合理的?」一直都是天文攝影(也許是全部攝影)中的爭議問題。天文攝影因為學術氣更重,關於這點的討論尤其熱烈。

個人一直都覺得按「合法性」高低,最高標準是讓照片保有「線性度 Linearity」,即影像中看起來兩倍亮得像素,其對應的天體也確實是兩倍亮。但這基本上不太可能實現,主因是天文上天體的亮度差異巨大,恆星和星雲的亮度差從 10 倍到 10000 倍甚至更高者比比皆是,但那些黯淡的星雲往往才是拍攝的重點。如果要維持線性,要嘛影像中有大量過曝,要嘛除了星點啥也看不見。因此天文影像往往需要經過「拉伸 Stretch」,大幅的增加暗部的亮度以看見黯淡的細節。

退而求其次的是「單調性 Monotonality」,即原始影像中比較亮的部分,在經過後製後應當還是要維持比較亮(學過微積分的應該對這個詞很熟悉),這對影像的定性判讀很重要。因此我自己修圖、以及在教人的時候,基本上都遵守這個原則。你可以整個明度曲線一起改,也可以三個色板分別調曲線,但所有映射都應該是單調的。所以看到 GHS 給出非單調的結果,才會覺得頭痛。

為了仔細研究 GHS 的原理,還有了解這個 non-monotonic 變化的原因,我去找了 GHS 的演算法,發現式子有夠複雜,一開始讓我很困惑:不是一條特別的曲線嗎?怎麼那麼麻煩?在 GHS 的介紹中,也有提到它比起一般的拉伸,可以更好的保留顏色,聽起來像魔法。

雖然沒去好好啃 GHS 的內容(不讀說明書的壞習慣),但後來我想著想著,想到顏色應當是來自不同色板的相對亮度。一般拉伸之所以會造成顏色消失,正是因為拉伸總是非線性的,暗部倍拉亮的比例總是比較多。比如某個像素在拉伸前的 RGB 比例是 (0.1, 0.1, 0.5),是明顯的藍色。但拉伸後變成 (0.7, 0.7, 0.9),就變得相對白了許多。

換言之,如果我一開始就固定住色板間的相對亮度,然後對明度進行拉伸,是不是就能做到在拉伸時保持顏色了呢?於是經過了一些 coding 自己做了一個能保留色彩的拉伸試試。然後就能很直觀的體會到:嘿,這種色彩保留的拉伸,在明度色板是單調的,但是在 RGB 三個色板則否。舉個例子,(0.1, 0.1, 0.5) 和 (0.4, 0.2, 0.1) 的像素在經過拉伸後可能會變成 (0.7, 0.7, 0.9) 和 (1.3, 0.65, 0.33),於是在 G 色板這兩個像素的相對大小就對調了。

另一個例子就是下圖,我在拿 JWST 的 M77 做 LRGB 合成的時候,發現 B 色板上的星系出現了類似塵埃帶的結構(下圖下)。但仔細去打開原始檔案,就會發現這些塵埃帶根本就不存在,或至少看不出來(下圖上)。猜測是做 LRGB 合成的時候為了保持顏色(塵埃在 R 和 G 色板對應的中紅外是亮的),所以在對應的位置降低了 B 色板的亮度,才出現了本來不存在的「塵埃」。

所以問題來了。拉伸後的顏色不再是原本的顏色,保留顏色又容易破壞各色板亮度的單調性。本質上就是非線性的拉伸、本質上就是非線性的人眼,本質上只是比例的顏色,那修圖者最合理的做法與底線是什麼?

JWST 拍攝的 M77 星系。Credit: Lee, Janice (survey PI)

留言

熱門文章