將RGB值轉換為灰度值的簡單算法

 更新時間:2019年10月09日 11:07:04   作者:garfieldtom   我要評論
這篇文章主要介紹了將RGB值轉換為灰度值的簡單算法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

RGB是如何轉換為灰度的?這是讓人困惑已久的一道難題。  

1、RGB復合通道轉灰度:轉換后的色階值只與RGB空間有關,而與作為目的地的灰度空間無關。也就是說,只要當前的RGB空間不變,不管將灰度空間設置為哪種,轉換后的色階值都是一樣的。

2、RGB中的單通道轉灰度:轉換后的色階值不僅于RGB空間有關,而且還與作為目的地的灰度空間有關。但是,其灰度值K只于RGB色階有關,而與RGB空間及灰度空間無關。其值與RGB色階X的關系為:K=1-X/255

3、在RGB模式中,修改顏色設置中的RGB工作空間,將影響復合通道的外觀和灰度K值,以及單通道的灰度值。但是,不會影響到單通道的外觀。

4、在RGB模式中,如果修改顏色設置中的灰度空間,將影響到單色通道的外觀以及單色通道、復合通道的灰度K值,但是,不會影響到復合通道的外觀。

以上見解供大家討論!

一、RGB向灰度轉換的原理

RGB向灰度轉換時,是以LAB模式為中介的(這和PS中關于LAB模式的一貫解釋是完全吻合的)。其基本的流程是:首先將RGB轉換為LAB,然后在LAB中去色,使A、B均為零,并依此生成一個RGB等值的灰階,最后再根據該灰階向灰度空間轉換。

由此可見,轉換為灰度的等值RGB只與原來的RGB空間有關,而與作為目標空間的灰度空間無關。

二、灰階的計算

不同的RGB空間,灰階的計算公式有所不同,常見的幾種RGB空間的計算灰階的公式如下:

1、簡化 sRGB IEC61966-2.1 [gamma=2.20]

Gray = (R^2.2 * 0.2126  + G^2.2  * 0.7152  + B^2.2  * 0.0722)^(1/2.2)

2、 Adobe RGB (1998) [gamma=2.20]

Gray = (R^2.2 * 0.2973  + G^2.2  * 0.6274  + B^2.2  * 0.0753)^(1/2.2)

3、Apple RGB [gamma=1.80]

Gray = (R^1.8 * 0.2446  + G^1.8  * 0.6720  + B^1.8  * 0.0833)^(1/1.8)

4、ColorMatch RGB [gamma=1.8]

Gray = (R^1.8 * 0.2750  + G^1.8  * 0.6581  + B^1.8  * 0.0670)^(1/1.8)

5、簡化 KODAK DC Series Digital Camera [gamma=2.2]

Gray = (R^2.2 * 0.2229  + G^2.2  * 0.7175  + B^2.2  * 0.0595)^(1/2.2)

三、灰度K的計算

由于RGB空間與灰度空間都有其相互獨立的灰度系數(即GAMMA,設RGB空間的GAMMA為GAMMA1,灰度空間的GAMMA為GAMMA2),因此,就有了兩種意義上的灰度K,一種是在RGB空間中相對于GAMMA1的灰度K1,另一種是轉換到灰度空間后,相對于灰度空間GAMMA2的灰度K2(K2實際上就是經過GAMMA轉換后的灰度)。灰度K與灰階L的關系為:

K1=1-L/255

K2=K1^(GAMMA1/GAMMA2)=1-(L/255)^(GAMMA1/GAMMA2)

兩點說明:

1、只要RGB空間與灰度空間的GAMMA值相等,即GAMMA1=GAMMA2,那么,K1=K2=1-L/255。

2、如何才能得知某一色彩空間的GAMMA值?先在“顏色設置”的工作空間中選定相應的工作空間,然后,再選擇“自定義(RGB空間或灰度系數)”,在彈出的對話框中,其中的“灰度系數”就是剛才設定的工作空間的相應GAMMA值。

四、RGB中不同顏色通道轉灰度的方式不同

1、復合通道轉灰度

復合通道轉灰度實際上就是整個圖象轉灰度。這種情況下,采用的是轉換配置文件的方式:即在轉換的過程中,保持顏色外觀不變,而改變顏色數據。這里的顏色數據就是灰度K,顏色外觀就是圖象的外觀顯示以及與之相應的RGB值。

因此,復合通道轉換為灰度后,其灰度值并不是K1,而是K2,這就是改變顏色數據的結果。對于一幅RGB等值的圖象,在轉換為灰度后,盡管灰度值發生了改變,但圖象的外觀顯示及相應的RGB值卻沒有改變,這正是在轉換過程中保留了顏色外觀的結果。

2、單色通道轉灰度

不僅可以將復合通道(即整幅圖象)轉換為灰度模式,也可以將某個單色通道轉換為灰度模式。其實,當復制單色通道時,就是單色通道由RGB轉為灰度的過程。與復合通道的轉換不同的是,單色通道的轉換是采用指定配置文件的方式:即在轉換的過程中保持顏色的數據不變,顏色外觀相應改變。

因此,當把單色通道復制為ALPHA通道時,通道的灰度值K1得以保留,但通道的顏色外觀(包括外觀顯示及相應的灰階值)卻發生了變化。

3、單色通道的特殊顯示

單色通道本身是一幅灰度圖,按道理來講,用灰度K來標識最為恰當不過,然而,單色通道又屬于RGB模式的顏色通道,從這個方面來講,用RGB值來表示單色通道最恰當不過了。面對這樣一種兩難的情形,PS采用了一種折中的顯示方案,即顏色數據采用RGB空間中的RGB值,而外觀則采用了轉換為灰度后的相應外觀。

4、識別信息調板中RGB顏色通道的灰度顯示值

在信息調板中顯示的各顏色通道的灰度值應該認真識別:

對于復合通道而言,顯示的灰度值就是轉換為灰度模式后的灰度K2;

對于單色通道而言,本來應該顯示不經過伽瑪轉換的灰度值K1。但是,但面對一幅RGB等值的RGB圖象時,卻出現了復合通道與單色通道不等的情形,這種情形很容易給大家造成困惑。為了不至于讓大家產生困惑,于是,PS使用了障眼術,偷偷地將本來的K1換成了經過伽瑪轉換后的K2。由此可見,信息調板中單色通道的灰度顯示值是PS自欺欺人的一個把戲,大家千萬不要被其蒙騙。

總之,對于大多數人而言,把RGB工作空間的GAMMA與灰度工作空間的GAMMA設置為等值是必要的。如果您這樣做了,那么PS中好多看起來很讓人困惑的事情根本就不會發生;否則,麻煩的事情很可能就會接踵而至,以至于讓您一頭霧水,不辯東西。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論

码报108