程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> GDI+中常見的幾個問題(8.外傳1)

GDI+中常見的幾個問題(8.外傳1)

編輯:關於.NET

8. 顏色修正

我最近一直在顏色空間中糾結,前面講的透明不透明只是一種特殊的顏色。今天我准備要 講的是真正的修正顏色。我們使用的數碼相機有不同的型號,感光的CCD性能也是不一樣的, 再加上天氣或者周圍光線的原因,我們排出來的照片可能會偏色。此外,為了做一些特殊處 理,可能需要將照片中某一個特殊的區域顏色進行修正。比如臉色可以變得更好一點,或者 頭發更黑一點等等。這個Topic很大,我會花好幾個星期來講這些內容,因為涉及到許多圖像 處理的基本知識。今天咱們不寫code,只講理論(誰讓這個星期美國大選,Heroes第八集居 然沒有出,我只好寫外傳)。

外傳1. RGB色彩空間

在之前的分析中,相信所有的人都知道R,G,B是什麼東西了。我們在描述色彩的時候,最 常用的就是用RGB色彩空間。通過描述顏色的三個不同的分量,我們可以記錄某個像素的顏色 值。我們在此不涉及設備色彩空間的概念,但是有一點需要大家記住的,(0,0,0)並不代表全 黑,(255,255,255)也並不代表全白,在不同的設備上,顯示出的內容是不完全一樣的。這個 問題的解決需要依靠我之前講的ICM(http://www.color.org/)。如果要加上透明,那就是四 維的空間,(A,R,G,B)。各個分量可以被量化為不同的級別,所以才造成了8位色,16位色 等等,這種量化級別可以區分各種不同的顏色,直到人眼無法察覺的程度。所以對一個初學 者來說,不透明的顏色就是個Cube,在一個三維空間中的一個點。如下圖

這個圖很好看吧,只是很可惜,這只是對顏色描述的一種最簡單的方式,它所能描述顏色 內容是極其有限的,也不精確。要徹底理解這個問題,我要幫大家分析什麼光的原理,顏色 的波長,材料的對不同波長光的吸收和反射或者漫反射。這裡我就不多說了,有興趣的同學 去找物理系光學專業的老師好好問問,人家一輩子都研究著這個問題。更有興趣的同學可以 去問問物理系的大教授討論一下光的波粒二象性,再研究一下人眼對光的感受,再研究不同 材料表面對光的反應,再研究……,打住了~!再研究下去您這輩子就結束了,所以只要簡 單地理解顏色就是RGB就好了。IT民工能理解到這個程度已經很不錯了。

這裡再給大家看個有趣的圖,表示的是一個色彩空間叫sRGB能描述的顏色,灰色區域是人 眼可以感知的顏色,裡面的那個三角就是sRGB色彩空間能描述的顏色。還有一點要注意的是 RGB色彩空間只是描述顏色的一種手段。具體還可以參考 wikipedia:http://en.wikipedia.org/wiki/RGB

RGB色彩空間並不是唯一的能用來描述色彩的方法,它是最簡單的一種。如果你需要修改 圖像區域的R,G,B分量,以及亮度,對比度分量。那麼使用這種色彩空間是最簡單的。但是如 果你想修正色度(hue),飽和度(Saturation),那麼這種色彩空間就不是那麼簡單了,要經過 一定的換算。色彩空間有很多種,比如RGBA,包括透明的RGB四維空間;CMYK:主要用於印刷 業;YIQ/YUV:主要用於NTSC/PAL彩色電視制式系統;YPbPr/YCrBr:主要用於視頻壓縮等領域。 HSB/HSV/HSL,這是一個非常常用的色彩空間,描述色度,飽和度和亮度,這個色彩空間我們 會在下一節詳細講,它是RGB色彩空間的一種變形。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved