計算機圖像處理入門基礎知識——色域,色彩空間和色彩管理

作者:❄️固態二氧化碳❄️ (主頁)
鏈接:(原創)計算機圖像處理入門基礎知識——色域,色彩空間和色彩管理 - 固態二氧化碳的博客 - CSDN博客
來源:CSDN博客
發表時間:2020年06月03日 18:36:36
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

閱讀指引:
📖閱讀完這篇文章後,你可以學到:
  ①色度圖的概念
  ②色域和色彩空間的概念
  ③爲什麼sRGB裏的#FF00FF不是"品紅"而是紫色,而Adobe RGB的纔是真正的品紅(相關文章)
  ④色彩管理的基本概念以及爲什麼要進行色彩管理

  色域,色彩空間和色彩管理是計算機圖像處理和攝影中的重要的基本概念,這篇文章我們就來聊聊色域,色彩空間和色彩管理的相關知識。

  玩過數碼相機的人應該知道,數碼相機照片裏面有個"色彩空間"的概念。所謂色彩空間,就是圖片或顯示器所能表現色彩的集合。人眼可以分辨出上億種顏色,這些顏色構成了一個空間,也就是最大的色彩空間。顯示器利用三原色原理,儘可能多的還原出人眼所能看到的色彩,但不一定能做到還原所有色彩,並且不同的顯示器,還原色彩的能力也不盡相同,有的色彩範圍更大,有的則較小,這樣就產生了"色域"的概念來描述顯示器或照片對色彩範圍覆蓋的能力。
  我們在購買顯示器的時候,會有許多參數,其中就包括色域一項。廠家一般會用"xx% sRGB"或"xx% NTSC"來定量描述色域大小,這裏的"xx%"就是指顯示器色彩覆蓋範圍和某一標準色域(如sRGB)的比值。但是這些數字不能反映色彩具體的覆蓋範圍,爲了更直觀地展示色域,我們需要介紹色度圖的概念。

Part 1:色度圖

  色度圖,是CIE(國際照明委員會)爲了直觀展示色彩的關係,制定的一種描述色域範圍的圖像。其中,以1931年制定的CIE 1931最爲廣泛使用。

CIE1931色度圖
CIE1931色度圖


  圖中上半部分黑色曲線上的點爲單色光,即單一頻率的光(電磁波)的顏色,也就是彩虹的顏色。下半部分從藍色到紅色之間的連線將彩虹兩端連接到一起,構成一個封閉區域。整個圖像因形狀類似馬蹄,又被稱爲"馬蹄圖"。該圖像有如下幾個特點和性質:
  ①圖像所圍成的區域覆蓋了人眼所能分辨的所有顏色
  ②圖像上每一個點唯一對應一個顏色,自然界中的每一個顏色都唯一對應圖像上一個點
  ③圖像上半部分黑色曲線上的點上的顏色可以由單頻光(如激光、LED光等)得到.其他位置的點必須由兩種或兩種以上單頻光加和得到
  ④圖像中間區域的曲線爲黑體輻射顏色和溫度關係的曲線(任何溫度的物體都有輻射一定頻率範圍電磁波的能力,當溫度足夠高時,輻射出電磁波的頻率分佈也會足夠高,變成可見光,從而有了顏色),這些電磁波均爲複合光,這條曲線被稱爲"普朗克軌跡"。顏色變化大致爲紅->橙->黃->白->藍(不經過綠色區域)。曲線上的溫度又稱"色溫",單位爲開爾文(K),它與攝氏度(℃)之間的關係的是T(K)=t(℃)+273.15
  ⑤圖像中央位置白色的部分稱爲白點,該點顏色校正中十分重要,因爲白點決定了三原色的配比和白平衡。白點因顯示設備的不同而不同,但不會偏離圖像的中間位置。白點所在位置數值稱爲該光源的色溫。一般的顯示器色溫值爲6500K,因爲自然光,或者白紙的色溫一般都在6500K左右。如果色溫值偏離6500K,則白色會有色彩傾向。色溫低於6500K時,白色會偏黃,稱爲"暖白",高於6500K時,白色則會偏藍,稱爲"冷白"。總而言之,色溫越低越暖,色溫越高越冷。比如現在手機常見的"護眼模式"的原理,就是將白點往黃色方向偏移,降低屏幕的色溫,使得屏幕中對眼睛傷害更大的高頻藍光減少,變爲更爲柔和的米黃色,達到保護眼睛的效果(但不是每個人都喜歡這種黃黃的暖屏的)。
  ⑥在圖像中任意選三個點,就得到了三原色,三個點圍成一個三角形,就形成了一個色域。這三個點可以任意選取,但是爲了追求更大的色域,通常將這三個點位置選在右下角,上方和左下角,而這三個區域對應的顏色爲紅色,綠色和藍色,所以三原色一般爲RGB。但是RGB的位置也不是唯一的一個點,而是一個範圍,所以RGB也有不同的偏向。如藍色(B)的選取位置,有的靠上,而有的靠下,如果B的位置靠上,那麼藍原色就是正藍色,如果B的位置靠下,那麼藍原色就是偏紫的藍色
  ⑦CIE 1931色度圖有一個很重要的性質,就是顏色合成的線性性質。兩個顏色加和後的顏色,必然位於這兩個顏色所在的兩點連線上,所以三原色能夠合成的顏色範圍,必然位於三原色三個點圍成的三角形內部及三邊上
  ⑧若兩個顏色對應的點與白點共線,且位於白點一側,則這兩個顏色的色相相同,只有純度的區別。顏色離白點越近,飽和度(純度)越低,離白點越遠,飽和度(純度)越高(即越鮮豔)。
  ⑨若兩個顏色按照一定比例合成後能得到白色,那麼這兩個顏色稱爲"互補色",更準確地說,是"光學互補色",以便和美術互補色區分開來。有關光學互補色和美術互補色的內容,詳見我寫的這篇文章:(原創)用紅黃藍RYB色相環(伊登色相環)代替RGB色相環
  ⑩由於某一間色(三原色中任意兩個顏色按最大值混合得到的顏色)與沒有參與該間色的那一個原色合成後,三個顏色的值均會達到最大值,即形成了白色。因此這個間色和剩下的那個原色爲光學互補色(根據性質⑨)。因此三間色,實際上也是三原色的光學互補色,簡稱三補色。根據性質⑨,三間色(三補色)一定位於三原色與白點連線的延長線與三角形某一邊的交點上。如果我們知道了三原色和白點的座標,就可以利用解析幾何知識推算出三間色的座標。
  ⑪三原色和白點選取的不同,構成了各種不同的色彩空間和色域,它們有的有自己的名字,其中比較有代表性的是sRGB和Adobe RGB,而目前計算機、手機、平板等設備上最常用的色域就是sRGB色域,它是HP與微軟於1996年開發的面向顯示器、打印機、Web等的一種色彩空間。Adobe RGB則主要用於專業圖像處理,它是Adobe於1998年開發的一種色彩空間,其色域比sRGB大。兩者的主要區別在於綠原色的選取位置不同,Adobe RGB的綠原色比sRGB的更偏向左上角。

Part 2:色域和色彩空間

  介紹完了色度圖,我們來說說色域和色彩空間的問題。色彩空間和色彩模式是兩個完全不同的概念,很多初學者在初學時容易混淆兩者。下面我們來介紹一下兩者的區別。
  色彩模式,實際上就是色彩的表現方式,比如RGB、CMYK、Lab、HSB等。RGB是光的加和,CMYK是顏料對光的吸收,Lab是人眼對顏色的感知維度,L爲明度值,a爲綠->紅互補色對偏向值,b爲藍->黃互補色對偏向值,HSB則是心理學對顏色的感知,從色相(H),飽和度(S),明度(B)三個維度來描述一個顏色。
  色彩空間,就是上面說的sRGB,Adobe RGB等,就是一個設備所能表現的所有顏色的集合。一個設備所能合成出的所有顏色必然位於該色彩空間內,用數學語言表示,就是c∈S,其中c爲任一顏色,S爲某一色彩空間。
  而所謂色域,就是色彩空間這個集合的範圍,不同的色彩空間有着不同的色域。比如剛纔說的Adobe RGB的色域比sRGB的大,而sRGB的色域又全部包含在Adobe RGB中,那麼用數學語言描述,sRGB這個色彩空間就是Adobe RGB的(真)子集,即S(sRGB)⊆(⊊)S(Adobe RGB)。

sRGB色域Adobe RGB色域
sRGB(左)和Adobe RGB色域(右)對比


  所以說簡單點,色彩空間就相當於數學上的集合,只不過這個集合是定義在顏色域上的一種集合。有意義的最大的色彩空間就是CIE 1931色彩空間,即CIE 1931色度圖圍成的最大區域,因爲它包含了人眼能看到的所有顏色,該區域外的顏色均爲無意義的顏色。所以CIE 1931色彩空間,可以理解爲色彩域的全集,數學上用U表示,所有色彩空間均爲它的子集,即S⊆U。目前的所有基於三原色的色彩空間(三角形)均無法達到覆蓋人眼可以看得到所有顏色(曲邊形)的效果。

  說完了色彩空間,我們來回答開頭提到的一個問題。爲什麼sRGB裏的#FF00FF不是"品紅"而是紫色,而Adobe RGB的纔是真正的品紅。這個問題在這之前寫的一篇文章裏提到過:#FF00FF應該是紫色,把#FF00FF稱爲"品紅"(“洋紅”)是一種誤稱。因爲我們大多數人的顯示器用的都是sRGB色彩空間,所以#FF00FF顯示的都是這種效果(有些人的顯示器可能調了色溫,或者開了護眼模式,也可能有色差,導致與預期效果不一致,所以下面所說的結論都是在顯示器顯示效果滿足標準sRGB效果的基礎上得到的),而如果使用的是Adobe RGB顯示器,則不會出現這種問題。下面我們用圖來解釋爲什麼會造成這種問題。
sRGB和Adobe RGB三原色和三間色座標圖

sRGB和Adobe RGB三原色和三間色座標圖(建議放大查看)


  這是sRGB和Adobe RGB三原色和三間色座標位置的圖像,從圖中我們可以看出,sRGB和Adobe RGB的三原色除了綠色外座標都相同,而Adobe RGB的綠原色在sRGB綠原色的左上角,更偏向於藍色。兩者的白點座標完全相同,均爲D65(6500K)白點。前面我說過,間色位置的求法,是將某個三原色與白點相連並延長,與三角形某一邊的交於一點(圖中虛線),這樣便可以得到三個點,這三個點的座標就是三間色的座標(性質⑩)。由於sRGB與Adobe RGB的紅原色和藍原色座標相同,所以紅色和藍色對應的間色(補色),即青色和黃色,與白點是共線的,即sRGB與Adobe RGB的青色和黃色色相分別相同,只是純度的區別。Adobe RGB的青色和黃色比sRGB的離白點都更遠,因此它們的飽和度也更高(性質⑧)。此外,Adobe RGB的綠原色離白點更遠,因此也更加鮮豔。所以Adobe RGB所表現的顏色,尤其是從黃色到青色之間的區域,是比sRGB要更加鮮豔的,所以用Adobe RGB拍攝照片,可以還原出更加鮮豔,更加真實的色彩,而使用通常所用的sRGB照相則會丟失這些細節信息。
  而由於sRGB與Adobe RGB的綠原色座標不同且與白點不共線,所以導致其對應的間色座標不同且與白點不共線,色相也不同。Adobe RGB綠色對應的間色更偏右上角,即更偏向於紅色。而sRGB對應的間色偏向於藍色,在觀感上並不像CMYK裏的品紅,而是更像紫色。Adobe RGB中綠色的間色由於比紫色更偏紅,所以色相上是偏紫的紅色,即品紅色,更接近於CMYK裏的品紅顏料。
  而如果在不加說明的情況下,Web裏的一個顏色代碼,默認指的是sRGB色彩空間(因爲Web上絕大多數圖像都是用sRGB進行傳輸的),因此#FF00FF這個代碼(sRGB)指的就應該是紫色而不是品紅,除非強調色彩空間是Adobe RGB。CMYK中的品紅顏料,吸收的是類似於Adobe RGB的綠原色,而不是sRGB裏的,因此呈現出玫紅色,這一點仍然是遵循補色原理的。
  總之,根據色彩空間的不同,不僅原色的位置會不同,間色也會有所差異,在綠原色的選取不同時,其對應間色可以從紫色到品紅範圍之間變化,要根據綠原色的座標來確定其對應間色到底是紫色還是品紅。

  下面兩幅圖是sRGB與Adobe RGB的三原色和三間色的對比圖(從左到右,從上到下的顏色順序是紅色、黃色、綠色、青色、藍色、紫色(品紅色))。爲了避免溢色,我將三原色和三間色的明度調整爲90%。第二幅Adobe RGB圖是將Adobe RGB顏色經過色彩空間轉換後得到的sRGB色值做成的圖,其色彩空間已經轉換爲了sRGB,因此不用擔心色彩管理的問題。有關色彩空間轉換和色彩管理的內容,將會在下一節介紹。由於sRGB無法準確顯示Adobe RGB的色彩,所以第二幅圖顯示的色彩只是模擬出的色彩,並非真正的Adobe RGB顯示器顯示出的效果。
  (看下面的圖時候最好關閉護眼模式或其他和顯示色溫相關的屬性)

sRGB的三原色和三間色
sRGB的三原色和三間色


Adobe RGB的三原色和三間色
Adobe RGB的三原色和三間色


  通過上圖,可以看出,Adobe RGB的黃色、綠色、青色比sRGB更鮮豔,Adobe RGB的右下角色塊就是品紅色(紫紅色),sRGB的右下角色塊則是紫色,而不是品紅色,與Adobe RGB的有顯著區別。

  附表:sRGB和Adobe RGB三原色和三間色座標表

顏色 色座標(sRGB) 色座標(Adobe RGB)
白色 (0.3127,0.3290) (0.3127,0.3290)
紅色 (0.6400,0.3300) (0.6400,0.3300)
黃色 (0.4193,0.5053) (0.4271,0.5181)
綠色 (0.3000,0.6000) (0.2100,0.7100)
青色 (0.2246,0.3287) (0.1748,0.3286)
藍色 (0.1500,0.0600) (0.1500,0.0600)
紫色(品紅) (0.3209,0.1542) (0.3548,0.1728)

Part 3:色彩管理

3.1 色彩管理的意義

  由於不同種類的色彩空間的存在,色彩空間之間的相互交流也就成了一個很重要的問題。比如我們用某個單反相機拍攝了一張照片,使用的是Adobe RGB色彩空間,但是電腦顯示器卻是sRGB空間的,那麼如何顯示出這張Adobe RGB空間的照片就成了一個很重要的問題。最簡單粗暴的方式,就是將原圖片中所有顏色原封不動地輸入給顯示器,給顯示器展示。但是這樣就會出現一個問題,由於原圖的某個顏色是用Adobe RGB記錄的,而給sRGB顯示器輸入了這個顏色值,顯示器展示的會是sRGB的這種色值對應的顏色,而這兩種顏色實際上是不同的,導致實際展示出來的顏色並非原圖所想展示出來的顏色。
  比如有一張Adobe RGB照片裏,某一像素的顏色爲綠色(0,170,0),這個值輸入進sRGB顯示器後,輸出的顏色雖然還是綠色,但是由於sRGB同等數值的綠色不如Adobe RGB的鮮豔,導致顯示出來的圖片效果也不如原來拍攝的鮮豔。但是如果我們進行色彩管理的工作後,程序就會將Adobe RGB的某種顏色儘可能地轉換爲sRGB中對應的最接近的顏色,那麼圖片顯示的色差就會大大減小。剛纔的Adobe RGB裏的(0,170,0),可能在sRGB中,就需要(0,204,0)才能達到等價的效果,而這兩個色值之間的轉化工作,正是需要色彩管理來做的事情。

  色彩管理,就是對不同色彩空間顏色之間的轉化工作。一個程序在處理圖片時,需要指定一個色彩空間,這個色彩空間一般默認爲sRGB,但是如果安裝了某些廣色域的顯示器驅動的話,那麼就可能會被修改爲顯示器對應的色彩空間,以保證顯示圖片的準確性,這個色彩空間,又稱程序的工作空間。而程序在打開某一張圖片時,會加載圖片的信息,大多數圖片都會有色彩空間的文件頭信息,當應用程序讀取了這個文件頭信息後,就會讀取原圖的像素信息,並將這些像素顏色轉換爲工作空間對應的顏色,並輸出到系統中,圖片所保存的色彩空間,實際上就是輸入色彩空間
  這一步轉換完成後,軟件會將圖像顯示操作用系統函數實現,系統再將軟件提供的工作空間的顏色轉換爲顯示器(硬件)對應色彩空間的顏色,輸入進顯示器中,顯示器最後將這個顏色展示出來,完成了一張圖片的顯示工作。

  所以,一張圖片在打開的時候,實際上經過了兩步色彩空間的轉換,才能最終顯示出來。其中第二步一般交給系統和驅動完成,是從軟件到硬件層面的轉換,而我們在程序中所做的色彩管理,實際上就是對第一步的操作,即軟件層面的轉換。
  當然,有的圖片可能沒有進行色彩管理,文件信息中沒有保存色彩空間的類型,這種圖片程序打開時會省略第一步,直接將原圖片的顏色值輸入軟件工作空間中,並進行第二步轉換。所以這種情況下,如果工作空間與原圖想使用的色彩空間不一致,會直接影響第2步轉換的準確性,造成色差。因此,在作圖軟件中製作圖片時,最好指定色彩空間,一般選擇默認值sRGB即可,但不可選擇"不做色彩管理"選項。

  綜上所述,色彩管理是圖像文件,軟件設置所共同需要做的事情,兩個環節缺一不可,否則都會造成轉換結果的混亂。

  由於日常生活中絕大多數圖片,如Web上傳輸的圖片,手機拍攝的照片,Photoshop設計的簡單圖片,各種壁紙等,多數均使用sRGB色彩空間,且大多數人電腦和手機顯示屏使用的色彩空間均是sRGB,所以在一般用途中,如Web傳輸,爲了保證色彩的準確性,儘可能地傳輸sRGB的圖片,這樣可以避免在沒有完善色彩管理的設備、系統和軟件(如某些舊版瀏覽器)上仍然能夠正確地展示出圖片的色彩來。只有用於某些專業用途上,如需要使用廣色域的設計領域,纔有足夠的必要傳輸Adobe RGB等色彩空間的圖片。因此我接下來所要用到的圖片,都是先轉換爲sRGB再發布上去的。


  下面的圖直觀地展示了色彩管理的步驟。

在這裏插入圖片描述

色彩管理的步驟

3.2 色彩管理的實現

  記原圖色彩空間爲S0S_0,程序所使用的工作空間爲SS,顯示器色彩空間爲SmonitorS_{monitor},從AA色彩空間轉換到BB色彩空間(即輸入空間AA,輸出空間BB)的函數記作f(A,B)f(A,B),轉換的過程記爲ABA→B。我們來討論一下從S0S_0SS轉換過程(S0SS_0→S)中所需要做的工作。

  色彩空間的具體程序實現,需要用到配置文件的概念。配置文件,是色彩空間的描述文件。原圖片和軟件工作的色彩空間,由配置文件(icc文件)描述,所以原圖片中的色彩空間的存儲,本質上是植入了一個ICC配置文件,而軟件的工作空間,則需要通過加載一個icc文件來實現。
  以最常見的Photoshop軟件爲例,Photoshop裏有一套完整的色彩管理系統和算法,色彩管理的操作只需要提供配置文件的信息即可,具體轉化則是一系列的數學運算(轉換函數ff),由軟件內部的算法完成。

  下面我來講解色彩管理的實現過程
在這裏插入圖片描述
  在Photoshop"編輯"菜單中有"指定配置文件"和"轉換爲配置文件"選項,如下圖:
在這裏插入圖片描述
在這裏插入圖片描述
  其中"指定配置文件"的作用是給圖片指定一個色彩空間,更新文件頭的色彩空間信息,但不改變其像素數據,而"轉換爲配置文件"的作用是將圖片像素數據由原始色彩空間轉換爲新色彩空間的等價顏色,同時更新圖片文件頭的色彩空間信息
  顯然,前者是我們在設置圖片的色彩空間的正確信息時會用到的,修改的只是文件頭信息。而後者則是轉換圖像顏色到另一色彩空間中最接近的顏色,使之在該空間不偏色,既修改了文件頭信息,同時也修改了像素信息。

3.3 實例

  下面我用具體的圖片示例來對比同一張圖片在sRGB和Adobe RGB空間下的顯示效果和區別。

  如下圖是一張彩虹圖片,原圖片是在Adobe RGB色彩空間下製作的,在Adobe RGB顯示器上展示效果如下。(下圖已將顏色轉換爲sRGB,便於Web瀏覽的準確性)
在這裏插入圖片描述
  在PhotoShop中選擇"指定配置文件"選項,將其文件頭信息改爲sRGB,目的是爲了模擬在沒有進行色彩管理的,顯示器爲sRGB的計算機上顯示該圖片的效果。
在這裏插入圖片描述
在這裏插入圖片描述
  可以看出,原圖的顏色發生了變化,似乎不如原來那麼鮮豔了。雖然我並沒有修改圖片的像素信息,但是修改文件頭信息意味着告訴Photoshop"這是一張sRGB的圖片",Photoshop就會將原圖的像素信息理解成sRGB顏色值傳入顯示器。而實際上同等顏色值的sRGB空間顏色不如Adobe RGB鮮豔,所以看起來的效果就是顏色飽和度降低了。
  這就說明,一張在照相機上使用Adobe RGB拍攝的照片,如果沒有好的色彩管理,那麼它在普通sRGB設備上展現出來的效果就會遜色很多,達不到最初使用Adobe RGB,追求更豐富色彩的初衷。

  如果情況剛好相反,那麼會不會產生相反的效果呢?

  下面有幾組壁紙圖片,其色彩空間均爲sRGB,我們來看一下它在sRGB顯示器和Adobe RGB顯示器上的顯示效果對比:
在這裏插入圖片描述
在這裏插入圖片描述

Windows 10自帶的壁紙(上-sRGB 下-Adobe RGB)


在這裏插入圖片描述
在這裏插入圖片描述

Windows 10娘壁紙(上-sRGB 下-Adobe RGB)


在這裏插入圖片描述
在這裏插入圖片描述

Windows 10娘和其他系統娘(上-sRGB 下-Adobe RGB)


  上面幾組圖對比後,可以發現每一組圖片中,下面的那幅圖(Adobe RGB)都比上面的那幅圖(sRGB)的要飽和一些。原圖是sRGB的圖片,在一臺沒有進行色彩管理的Adobe RGB顯示器的計算機上顯示,那麼原本不太飽和的sRGB顏色就會變得非常飽和,也就是所謂的"過飽和"現象。這種現象經常在廣色域顯示器上發生,當系統的色彩管理方面很差時,這種顯示器打開絕大多數圖片(sRGB)時都會出現這種問題,導致顯示很多圖片都會太過鮮豔,看起來很不舒服。

  綜上所述,色彩管理在不同色彩空間之間的交流過程中起到了非常重要的作用。通俗地說,沒有色彩管理的後果就是,如果我們用單反拍了一張Adobe RGB的風景照片,卻在sRGB顯示器上顯示,那麼色彩就不如拍照時那麼鮮豔,顯示效果就會欠佳;而如果我們在一個Adobe RGB的廣色域顯示器上顯示sRGB的圖片,如網上的圖片和大多數壁紙,那麼顯示效果就會過於鮮豔,而誇大了原始圖片的色彩
  總之,對於普通用戶,在絕大多數場合,爲了兼容性保證,保險起見,不到萬不得已的情況下,請只使用sRGB進行圖像處理。只有在專業攝影和專業圖像處理的情況下,纔有必要選擇Adobe RGB等色彩空間。但是,作爲程序員,在設計軟件的時候,還是需要對色彩管理的知識有着完整而系統的掌握,才能使開發出來的軟件在色彩管理方面更強大,對色彩空間的兼容性更加良好。


附:
  Windows 10娘壁紙和主題包下載地址:https://download.csdn.net/download/weixin_44938037/12503223

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章