sRGB色彩空間

標準紅綠藍的色彩空間

sRGB色彩空間(standard Red Green Blue,標準紅綠藍色彩空間)是惠普微軟於1996年一起開發的用於顯示器印表機以及網際網路的一種標準RGB色彩空間。這種標準得到了W3CExif英特爾PantoneCorel以及其它許多業界廠商的支援,在GIMP這樣的開放原始碼軟體也支援這種標準,另外一些專有的或者像SVG這樣的開放圖形檔案格式中也有應用。

CIE 1931 xy色彩圖表示的sRGB色彩空間的色域以及原色的位置。白點D65顯示在中間
紅色曲線是相對橫軸sRGB壓縮值的sRGB強度的函式,藍色曲線是這個函式在對數-對數空間中斜率,它是每個點上的有效gamma。在壓縮值0.04045或線性強度0.00313之下,曲線是線性的所以gamma為1。在紅色曲線之後的黑色虛線曲線展示了完全gamma = 2.2冪次定律時的曲線。

sRGB最初設計的目的是作為生成在網際網路以及全球資訊網上瀏覽的圖像的通用色彩空間,最後選擇的是使用Gamma校準係數為2.2的色彩空間,即CRT顯示器在這種情況下的平均線性電壓回應。

這裡值得重視的是sRGB的設計與當時(1996年)不算理想色彩空間的CRT顯示器相匹配。當時大量的專業或者個人電腦軟體,使用8位元深度的圖檔,並且不經轉換就在8位元/通道的顯示器上顯示。許多時髦的非CRT硬體,如LCD、數位相機以及印表機,儘管本身並不生成sRGB曲線,但是都帶有補償電路或者軟體以遵循這個標準。在一些高端的專業裝置上可能並不遵循這個標準。因此,我們可以假定任何不帶顏色組態表或者其它資訊的8位元圖檔、8位元圖像API或者裝置介面,都處於sRGB色彩空間。

綜述

sRGB定義了紅色、綠色與藍色三原色的顏色,即在其它兩種顏色值都為零時該顏色的最大值。在CIE xy顏色坐標系中紅色位於[0.6400, 0.3300]、綠色位於[0.3000, 0.6000]、藍色位於[0.1500, 0.0600]、白色是位於[0.3127,0.3290]的D65。對於任何的RGB色彩空間來說,非負的R、G、B都不可能表示超出原色定義的三角形即色域範圍,它剛好在人眼的色彩感知範圍之內。

sRGB還定義了原色強度與實際儲存的數值之間的非線性變換。這個曲線類似於CRT顯示器的gamma回應。重現這條曲線要比sRGB圖像在顯示器上正確顯示更加重要。這個非線性變換意味著sRGB非常高效地使圖檔中的整數值表示了人眼可以分辨的顏色。

sRGB由於它的色域不夠大,尤其是藍-綠顏色色域無法表示CMYK印刷中的所有顏色,所以通常印刷行業的專業人員不用這種模型。而Adobe RGB是印刷行業經常使用的色彩空間。

變換的規範

從CIE xyY或者CIE XYZ到sRGB的前向變換

從CIE xyY坐標系計算sRGB中的三原色首先需要將它變換到CIE XYZ三值模式。[1]

 
 

這樣XYZ值就可以用矩陣轉換到線性的RGB值,這些線性值並不是最終的結果。

 

   的取值範圍為[0,1]。sRGB是反映真實世界gamma為2.2的典型顯示器的效果,因此使用下面的變換公式將線性值轉換到sRGB。設   或者    或者 

  • 如果  
  • 如果  
  •  

這些經過gamma校正的值範圍為0到1。如果需要0到255的取值範圍,如用於影片顯示或者8位元圖形,通常將它乘以255然後取整。

逆向變換

假設sRGB分量的值   的取值範圍為0到1。

 

其中

對於  
否則 

變換的理論基礎

變換的非線性部分是為了逼近2.2的gamma校正而設計的,但是在K=0斜率不為0,這樣可能會產生數值計算的問題。對於sRGB變換來說這大致正確。在 處的g(K)為:

 

使用上面的標準值 ,得到 =0.04045...這就是常用的變換。如果我們要求斜率也要匹配,那麼需要:

 

這樣就得到兩個方程。假設未知變數為  ,這樣就得到 =0.03928...與 =12.9232.... sRGB規範中有時也使用這些值進行計算,但是它們並不屬於標準的一部分。

應用

作為網際網路上推薦使用的色彩空間,在編輯、儲存用於WWW的圖像的時候要sRGB標準,但是由於與其它色彩空間相比它的色域較小,因此用於專業印刷的圖像如印前輸出則可以使用Adobe RGB那樣有較大色域的色彩空間。在一些先進的硬體上的另外一種替代方法是仍然使用sRGB原色模式但是使用負值或者超過1的亮度,這樣就可以無限擴大色域。

用其它色彩空間生成的用於網際網路的圖像在使用合適的圖像編輯軟體進行編輯的時候可以將它們轉換成sRGB,這些軟體有Corel Paint Shop Pro以及Adobe Photoshop等等。儘管最初的非sRGB檔案可以儲存並轉換為sRGB,但是由於這個轉換過程可能會遺失圖像資訊,所以建議儲存為另外的檔案以儲存原始的非sRGB圖檔。

由於在網際網路上的廣泛應用,以及許多中低階的消費型數位相機掃描器都使用sRGB模型作為預設模式或者是僅有的色彩空間,同時由於噴墨印表機的應用,因此許多人認為sRGB色彩空間對於家庭應用來說已經足夠了。

兩種占據主導位置的三維圖形編程介面OpenGLDirect3D都整合有sRGB。OpenGL 2.1中包含有首次在EXT_texture_sRGB擴充中引入的sRGB紋理。OpenGL的EXT_texture_sRGB擴充支援線性或者sRGB色彩空間的彩現緩衝。DirectX 9支援sRGB紋理以及用Direct3D彩現成sRGB表面。

參考文獻

  1. ^ A Standard Default Color Space for the Internet - sRGB​(頁面存檔備份,存於網際網路檔案館),其中包含XYZ空間的轉換公式

外部連結