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空間的轉換公式

外部連結

編輯