2011-06-25 25 views
4

比如我有這些值的像素:以類似的方式增加圖像亮度的公式是什麼?Photoshop中的L組件如何實現?

CGFloat red = 34 // 0 - 255 
CGFloat green = 128 
CGFloat blue = 190 

,我想增加亮度,使藍色255 注:帶「亮度」我的意思是在Lab色彩空間Photoshop中的L-組件。看圖片!

必須有一個特殊的公式來計算增加亮度的RGB值,因爲R G B值是以非線性方式修改的!

證明:我做了一個測試在Photoshop和創建此相同的顏色,然後打開顏色選擇器來審視它:

Original color

然後我激活了LAB色彩空間的L分量,這控制亮度(至少這就是我所說的 - 我的意思是由L分量控制的亮度,猜測是亮度)。

所以與L-激活,我拖了滑塊向上放置直至乙達到255: Modified color

現在讀取的結果RGB值:

CGFloat newRed = 112 // 0 - 255 
CGFloat newGreen = 188 
CGFloat newBlue = 255 

這些之間的差異是:

newRed - red = +78 
newGreen - green = +60 
newBlue - blue = +65 

百分比爲:

red shift: +38.42% 
green shift: +29.55% 
blue shift: +32.01% 

這不符合用於計算亮度超出R G B的已知公式,這是接近luminance = (red * 0.3) + (green * 0.6) + (blue * 0.1)的東西。

顯然,它們已經以非線性方式轉移。

是否有一種已知的方式來計算newRed,newGreen,newBlue以類似的方式從紅色,綠色,藍色中如何使用Photoshop?

回答

4

因此,您想要將RGB顏色轉換爲Lab顏色空間嗎?當然,這是可能的。

但是有很多不同的標準都被稱爲通用名稱「Lab」顏色。編寫算法時,您需要選擇一個。 Photoshop特別是CIELAB D50標準的uses,所以如果你需要準確地模擬它的處理,你會想使用那個。

另一件事你必須記住的是,RGB模型是設備依賴,這意味着爲了從RGB轉換到實驗室,你首先需要從RGB轉換爲一些設備無關,絕對色彩空間。 Adobe用它的「Adobe RGB」格式來做這件事,但你可以使用像sRGB這樣的標準。調整過程考慮RGB顏色的設備依賴性,但將顏色轉換爲獨立於設備的顏色。一旦你有了,你可以採取最後一步將顏色轉換到Lab色彩空間。

Wikipedia article在編寫轉換算法時提供了一些背景信息和有用的公式。和here's someone that has already written such a conversion algorithm。和one for MATLAB你可能會轉換。

根據您的認真程度(可能不是),您還可以下載GIMP的源代碼並查看他們如何實施轉換算法。他們的軟件聲稱支持實驗室空間。

但要注意,將轉換回爲RGB。 Lab色彩空間可以表示遠遠超出sRGB範圍的顏色。即使在Photoshop中,一旦將圖像轉換回RGB(或CMYK),您在Lab模式下看到的大部分內容都會被丟棄。


編輯:這也是值得考慮的是,如果你唯一的目標就是要減輕在色彩空間中能夠更加接近於人類色彩感知比RGB顏色,您可能不需要在所有實驗室大驚小怪。許多應用程序通過轉換爲HSL or HSV color space來做到這一點。 (Photoshop調用HSV,HSB)。

好處是,您可以簡單地調整「亮度」或「值」值來改變顏色的強度(就像調整Lab顏色空間中的「亮度」值一樣),但轉換算法要簡單得多(並且通常內置於您選擇的語言的標準庫中)。

例如,請參見my answer to this question,其中使用了.NET語言編寫的轉換算法。

+0

嗨,似乎所有的Adobe鏈接都沒有了。你知道在哪裏獲得與Adobe爲sRGB - > LAB所做的匹配的公式嗎?謝謝。 – Royi

相關問題