為什麼 #FFFFFF 與 #EEEEEE 之間的差別比 #000000 與 #111111 之間的差別大?


把前面幾樓都點了反對。麻煩您能不能找個光譜儀去測下那幾個網頁顏色的亮度再來回答?
真正原因是 sRGB 不是線性的。
網頁顏色的標準色域是 sRGB。其中,#111111,或者說浮點色值1over 15的亮度是白點(D65)的 0.26%,而 #EEEEEE(色值14over 15)的亮度是白點的 85.91%。

回復 @Cascade
計算色差很簡單,測定光譜然後直接積分就能算出來。
CIE XYZ 及一票線性色域的做法是,找三個色彩匹配函數ar x_1, ar x_2, ar x_3,然後把色值定已成匹配函數與光譜功率密度函數的內積:
x_i(I)=left<ar x_i | I
ight>=int_Lambda I(lambda) ar x_i (lambda)mathrm{d}lambda
可以證明,在此定義下,光線的和left|I_1
ight> + left|I_2<br />
ight>對應的色值等同於每束光線色值之和,這就是 Grassmann 定律。線性色域的「線性」說的就是這個。
而 sRGB 的非線性在於,其數值是 CIE XYZ 經過線性變換後的結果(得到一個線性的 RGB 色域)再作 1/2.2 次方,因此 sRGB 灰度色的實際亮度可以看作色值的 2.2 次方,造成非線性。


Belleve 的回答 是很有問題的,Cascade 的回答 靠譜一些。
Belleve 的回答 說:

能不能找個光譜儀去測下那幾個網頁顏色的亮度再來回答?
真正原因是 sRGB 不是線性的。

sRGB 亮度的非線性(gamma 2.2 變換)就是為了讓人眼看上去明度是線性的。

這裡說的亮度是指:光的物理強度
這裡說的明度是指:視覺感受到光的亮度

而且用光譜儀是測的亮度(物理)是不能代表視覺感受的。
因為人眼對光的感受是非線性的,也就是說 0-10 和 90-100 的亮度(物理)雖然差別都是相等的 10,但是在明度(視覺)上的差別就不是相等的了,在視覺感受上 0-10 的亮度(物理)差距要遠遠大於 90-100 亮度(物理) 。

圖片來自《輻射度 、光度與色度及其測量》

可以看到視覺感受(縱軸) 和物理亮度(橫軸)的關係不是線性的,在物理亮度低的時候,視覺敏感,亮度變化一格也就是 0-10,明度變化了 2,而在物理亮度高的時候,視覺沒那麼敏感,亮度變化一格 90-100,明度變化在圖中已經小到看不出了。
圖中的曲線是不同研究根據實驗做出的對人視覺感受曲線的模擬。

為了適應這種亮度與明度的變化,sRGB 對值做了gamma 變換,也就是下圖的紅線,也就是與視覺感受曲線相反的曲線,來抵消視覺感受對亮度(物理)感受的非線性。

圖片來自維基百科http://zh.wikipedia.org/wiki/SRGB%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4

也就是說 sRGB 的明度(視覺)變化是接近線性的。

也就是說 #FFFFFF 與 #EEEEEE #000000 與 #111111 在視覺上是基本相同的
和 Cascade 的回答 里計算的差不多 #FFFFFF - #EEEEEE 與 #000000 -#111111 在幾乎均勻的 Lab 色彩空間中差別約是 1.5 個 L 單位,這幾乎可以忽略,所以這不是主要原因。

要比較這兩的顏色,先看看這個,如果你顯示器沒問題的化應該可以看到灰階變化是對稱的,中等明度在圖片中央,如果不是,那你顯色器有問題。

而在這幾個顏色放在一起,#FFFFFF 與 #EEEEEE 之間的差別看起來比 #000000 與 #111111 之間的差別大的原因有下面個:

  1. 顯示器對比度有限
    非自發光的顯示器由於有背光的存在黑場的不夠黑的,也就是 #FFFFFF 不夠黑,自然 #FFFFFF 與 #EEEEEE 應該有的差距沒顯示出來。
    這應該是最重要的原因,因為據我在不同顯示器上觀察,有的顯示器對黑色對比度不夠很難分辨 #FFFFFF 與 #EEEEEE 的區別...而有的顯示器就很分辨的很明顯。
  2. 人眼同一時間的亮度感受範圍是有限的
    就是 Cascade 的回答 里說的。雖然人能分辨的亮度適應範圍是10個數量級,但是統一時間能感受的範圍是有限的,所以你在白天看不見星星。而當你在網頁上瀏覽樓主的這張圖的時候,圖片背景是白的,網頁背景是白的,你的眼睛的亮度感受範圍偏亮的那一端,對暗的變化不敏感。
  3. 側抑制 - Lateral inhibition

    不同明度的灰塊的交界處,顏色深者更深,而淺色相對更淺,產生一種有交界處陰影的感覺,這種感覺會增加相鄰色塊的視覺上對比度,而這種效應在越暗越不明顯。

所以要對比 #FFFFFF- #EEEEEE 之 #000000 - #111111 的之差別,就要解決上面的問題
1.顯示器的問題沒辦法,除非換個更好的。
2.不能同時對比用顯示器的全屏模式分別對比 #FFFFFF- #EEEEEE 和 #000000 - #111111
3.避免側抑制效應,模糊交界邊緣。
就是下面2張圖,用全屏,並且鋪滿屏幕分別對比

這麼一比較,在我這看起來差別是基本相同的了(我在網頁上看時也是 #000000 - #111111 差別要大)

另外
Belleve 的回答 說的 Grassmann 定律的色綵線性指的是混合色中一顏色連續變化,混合色也會連續變化,這種變化是線性的,而不是說顏色光譜變化人感受到的顏色感覺變化是線性的。

Belleve 的回答 說的 」計算色差很簡單,測定光譜然後直接積分就能算出來「,也是不對的。視覺感受均勻的色差的計算也是得在一個視覺均勻的色彩空間中進行才可以,不是僅僅測量光譜就完了,因為人眼的色差敏感度在光譜各波段是不同的:

圖片來自《輻射度 、光度與色度及其測量》

其中閾值越低的波段越敏感(色差閾值代表改變多少波長人眼才能發現顏色有變化),可以看到,450左右紫色的範圍閾值很高,所以你看到下面紫色的光譜視覺上沒變化很小。

而 CIE XYZ 不是均勻色彩空間。

@Belleve 的回答好有誤導性啊...

{x_x|||


針對 @Belleve 的回答,補充如下內容。

首先是亮度響應。它與你說的Grassmann和對顏色的線性感知是不同的概念。我只能找到一個不太清楚的截圖。清晰的圖的可以看岡薩雷斯那本數字圖像處理,第三版P22,2.1.3 亮度的適應和辨別。

比如對於亮度Ba,人眼能感知到最低的亮度為Bb,低於此亮度感知為黑色。這條短線就是人眼的亮度感知範圍。但人眼可以通過改變靈敏度,從而感知整條曲線上的亮度。只是同一時刻只能感知一個很小範圍內的亮度。

關於色差

想要準確計算兩個顏色之間的色差是件很困難的事情。直觀上來說,在色度圖上定位兩個點,那麼兩點之間的距離可以認為是這兩種顏色的「差距」。但這要基於一個假設前提,就是色度圖是均勻的。sRGB是從CIE XYZ計算出來的,它的「非線性」性質指的是從CIE XYZ進行線性變換後,又進行了Gamma校正。這種色彩空間本身設計是為了在CRT上使用的。所以用了和當時CRT顯示器相匹配的參數。sRGB的非線性性質,導致了它在數值上和其顏色不對應。即你從XYZ空間中取等距離的一組顏色,那麼映射到sRGB空間後,其RGB值之間並非等距的。這也是因為前述的Gamma變換所致。

但到本題的環境來說,選取的顏色在XYZ上是否等距並不重要。因為題主的疑惑是,為什麼數值上差距類似的兩組顏色,感官上差距卻不一樣。因而最終要追溯到感官上的差距來。即考慮前後兩組顏色中,每組兩個顏色的色差。然後對這兩個色差進行比較。

而色差的計算,是不能依賴XYZ顏色空間的。本身CIE XYZ就是一種非均勻的顏色空間,就是說,你在CIE XYZ的色譜圖上畫一個等邊三角形,確定的三個顏色。每兩個顏色可以通過坐標值計算出一個距離,這個值肯定是相同的。但這三個顏色兩兩之間的差距,給人的感覺是不一樣的。因而如果把本題目中的sRGB換成CIE XYZ,哪怕還是這幾個值,結果還是會有人覺得其中兩個差別大。

所以目前如果計算色差,使用的都是Lab色彩空間。這種色彩空間雖說也不是絕對均勻的,但它設計的目的就是為了使色譜圖上的距離能代表顏色的差別。目前大多數色差儀使用的也是這種色彩空間進行色差計算的。

考慮到本題。如果認為兩種「黑色」之間的差距確實小於兩種「白色」。那麼要將其從sRGB換算到CIE Lab。然後計算每組內兩個顏色的距離。以此判斷是否存在這樣的差距。而不是簡單的用sRGB的非線性來解釋,因其本身未進行Gamma變換以前所依賴的母體XYZ色彩空間就是非均勻的。

將這幾組sRGB轉換為XYZ,再轉換到Lab(白點選擇D65,所有小數保留四位四捨五入。你可以用Photoshop打開上面那張圖,將調色板設為Lab然後測量其值。只是Photoshop使用的白點是D50,可能和下面的計算結果有出入):
C1:RGB(0,0,0) XYZ(0,0,0) Lab(0,0,0)
C2:RGB(11,11,11) XYZ(0.3181,0.3346,0.3644) Lab(3.0223,0.00301,-0.00185)
C3:RGB(238,238,238) XYZ(81.2670,85.4822,93.1087) Lab(94.0905,0.0366,-0.0225)
C4:RGB(255,255,255) XYZ(95.05,99.98,108.9) Lab(99.9923,0.0386,-0.0237)

不清楚你是如何計算一個向量對另一個向量的百分比,姑且直接取模。那麼計算結果約為:
C2/C4-&>0.33%
C3/C4-&>85.46%
估計你的結果是這樣計算出來的。
但你實際算一下它們在Lab空間中的色差,也就是兩個顏色向量之間的歐幾里得距離:
C1C2=3.02296
C3C4=5.90177
順便
C2C3=96.99848
差距沒有想像的那麼大。

也就是說,從顏色本身考慮,#000000和#111111之間的色差,要比#EEEEEE和#FFFFFF之間的色差小。但兩個色差之間相差並不大。


因而個人還是認為出現此種情況,是環境,感覺和顯示器帶來的影響。

====================================
人的視覺系統對於亮度的分辨能力在不同照明條件下是不一樣的。這也是為什麼不同人會給出不一樣的回答。

確定人眼的亮度分辨力,有一個經典的實驗:

  • 使用一塊大到充滿整個視野的均勻發光體,比如一大塊毛玻璃。然後用一個光源從後面以特定強度照射。這樣你的整個視野會被這個強度的光照充滿。
  • 然後在這個物體中間,用另一強度的光照點亮一小塊區域,持續一小段時間,也就是它在不斷閃爍。
  • 在每次閃爍時如果被測試者感覺到了變化,則記錄下來。
  • 最後通過比較被記錄的和沒記錄下次數對總次數的比,來確定對這種亮度變化的敏感程度。

比如下面四幅圖中的一三兩幅

也有人做過改進以後的實驗,就是把均勻光照作為背景,中間持續點亮一塊區域作為前景,然後在前景中放置閃爍區域,作為前景增量。

這個實驗描述的是一種視覺上的掩蓋效應。在不同的背景亮度下,人眼對於亮度變化的分辨力是不同的。基本上越亮的背景下,對於亮度的變化就越敏感。

你所感受到的「變化」與「差別」實際上是一種「心理學」上的描述,它與「灰度級」這種量化值上的變化是有差別的。比如你舉起來一本書,然後在書上放一個蘋果,你感覺到的重量變化遠比你抱起女友,她再拿起一個蘋果變化大。Weber定律認為物理量的變化為一定比例的時候,感覺上的差別是一個定值。也就是說引起感覺差距的變化量是與原始物理量成正比的,這個比例叫做韋伯比。比如音樂上相距一個八度的兩個音聽起來是差不多,他們從頻率上相差了一倍。

人的視覺系統上,這個比值隨著亮度的增加而不斷下降(當然不能太亮,超過視覺極限就難以感受到變化了)。所以如果按照前面實驗的方法,你會感覺到#FFFFFF 與 #EEEEEE 之間的差別比 #000000 與 #111111 之間的差別大,因為在高亮度的條件下,你的眼睛變得更加敏感。但如果你用來比對的物體與你所處的整個背景環境相比足夠小,那麼在韋伯比恆定的條件下,暗色的一組會感覺差別更大。如果你使用液晶顯示器,那麼顯示器的可視角度與你所處的位置將會對圖像效果產生極大的影響,你可以把題目中的圖放大了,然後在顯示器前面換幾個位置試一下,總會有幾個位置你完全看不出其中某兩個色帶有什麼差別。

在計算機中,所有的顏色值其實只是一種抽象描述。它只是描述了「想要一種什麼樣的顏色」。比如#000000就是純黑,#FFFFFF就是純白,中間劃分出256個等級。這種抽象值在顯示的時候需要映射為實際中的色彩。比如#FF0000究竟有多紅,#00FF00究竟有多綠。這種映射有很多標準,常用的比如sRGB和Adobe RGB,每種都涵蓋了一定範圍的顏色。除了CIE LAB等少數幾種,其他的都無法涵蓋所有可視顏色,並且每種的表示範圍都不大一樣。

所以從現實中採集的實際顏色,需要通過白平衡調整來變成這種抽象的色彩描述。而顯示器也要進行校正,以保證正確還原每種理想的顏色值。顯示器的色域是指其能表現的色彩範圍,一般與sRGB等色彩空間進行對比,以確定其色彩表現能力。但灰度圖像僅有亮度信息,因而比起顯示器本身的色域來說,它的校正對這種灰度表現力影響更大。


好像是人眼對亮光比較敏感


大家有沒有想過,會有這麼一種可能,那就是,是顯示器的問題?


我理解錯了,同意@朱煥傑的說法。


推薦閱讀:

有什麼關於繪畫構圖,視覺空間,透視等等方面比較好的書呢?求推薦。?
為什麼盯著鏡子中自己眼睛 二三十秒會有種很害怕的感覺?
為什麼我在看東西時總會看到一些微生物狀的透明東西在眼前飄動?
如何辨別盲視的病人有沒有撒謊?
兩個網格重疊時,為什麼會看到一條條波浪形?

TAG:心理學 | 視覺 | 顏色 |