日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

颜色叠加算法

發布時間:2024/1/1 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 颜色叠加算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于公司新的軟件中需要增加 一種功能。類似組態軟件中的圖庫中的圖元可以任意修改顏色 。這樣就省去添加多張圖片切換操作。在各種搜索引擎中找了好多天,測試了好多遍終于找到了。。

非常感覺作者的匯總

文章轉自疊加模式 http://www.cgspread.com/3551.html? ? ? ? ? ? ? ? ? ??

PS和Nuke的疊加模式計算算法相差甚遠,最近想在Nuke中模擬ps疊加模式。老外已經有個gizmo了么免費的功能少,得付費購買,先百度找了下PS的圖層混合模式的計算公式收藏慢慢想想怎么在Nuke中實現最好。
注釋:
1.混合模式的數學計算公式,另外還介紹了不透明度。
2.這些公式僅適用于RGB圖像,對于Lab顏色圖像而言,這些公式將不再適用。
3.在公式中
A 代表下面圖層的顏色值;
B 代表上面圖層的顏色值;
C 代表混合圖層的顏色值;
d 表示該層的透明度。

1.Opacity 不透明度

C=d×A+(1-d)×B

相對于不透明度而言,其反義就是透明度。
這兩個術語之間的關系就類似于正負之間的關系:100%的不透明度就是0%的透明度。
該混合模式相對來說比較簡單,在該混合模式下,
如果兩個圖層的疊放順序不一樣,其結果也是不一樣的(當然50%透明除外)。
該公式也應用于層蒙板,在這種情況下,d代表了蒙板圖層中給定位置圖層的亮度(d=顏色值/255),
下同,不再敘述。

2.Darken 變暗

B<=A 則 C=B B>=A 則 C=A

該模式通過比較上下層像素后取相對較暗的像素作為輸出,
注意,每個不同的顏色通道的像素都是獨立的進行比較,色彩值相對較小的作為輸出結果。
下層表示疊放次序位于下面的那個圖層,
上層表示疊放次序位于上面的那個圖層,下同,不再敘述。

3.Lighten 變亮

B<=A 則 C=A B>A 則 C=B

該模式和前面的模式是相似,不同的是取色彩值較大的(也就是較亮的)作為輸出結果。

4.Multiply 正片疊底

C=(A×B)/255

該效果將兩層像素的標準色彩值(基于0..1之間)相乘后輸出
其效果可以形容成:兩個幻燈片疊加在一起然后放映,
透射光需要分別通過這兩個幻燈片,從而被削弱了兩次。

5.Screen 濾色

C=255-(A反相×B反相)/255

該模式和上一個模式剛好相反,
上下層像素的標準色彩值反相后相乘后輸出,
輸出結果比兩者的像素值都將要亮
(就好像兩臺投影機分別對其中一個圖層進行投影后,然后投射到同一個屏幕上)。
從右邊公式中我們可以看出,如果兩個圖層反相后,采用Multiply模式混合,
則將和對這兩個圖層采用 Screen模式混合后反相的結果完全一樣。

6.Color Burn 顏色加深

C=A-(A反相×B反相)/B

該模式和上一個模式剛好相反。
如果上層越暗,則下層獲取的光越少,
如果上層為全黑色,則下層越黑,
如果上層為全白色,則根本不會影響下層。
結果最亮的地方不會高于下層的像素值。

7.Color Dodge 顏色減淡

C=A+(A×B)/B反相

該模式下,上層的亮度決定了下層的暴露程度。
如果上層越亮,下層獲取的光越多,也就是越亮。
如果上層是純黑色,也就是沒有亮度,則根本不會影響下層。
如果上層是純白色,則下層除了像素為255的地方暴露外,
其他地方全部為白色(也就是255,不暴露)。
結果最黑的地方不會低于下層的像素值。

8.Linear Burn 線形加深

C=A+B-255

如果上下層的像素值之和小于255,輸出結果將會是純黑色。
如果將上層反相,結果將是純粹的數學減。

9.Linear Dodge 線形減淡

C=A+B

將上下層的色彩值相加。結果將更亮。

10.Overlay疊加

A<=128 則 C=(A×B)/255 A>128 則 C=255-(A反相×B反相)/128

依據下層色彩值的不同,該模式可能是Multiply (正片疊底),也可能是Screen (濾色)模式。
上層決定了下層中間色調偏移的強度。
如果上層為50%灰,則結果將完全為下層像素的值。
如果上層比50%灰暗,則下層的中間色調的將向暗地方偏移,
如果上層比50%灰亮,則下層的中間色調的將向亮地方偏移。
對于上層比50%灰暗,下層中間色調以下的色帶變窄(原來為0~2×0.4×0.5,現在為0~2×0.3×0.5),
中間色調以上的色帶變寬(原來為2×0.4×0.5~1,現在為2×0.3×0.5~1)。
反之亦然。

11.Hard Light 強光

B<=128 則 C=(A×B)/128 B>128 則 C=255-(A反相×B反相)/128

該模式完全相對應于Overlay (疊加)模式下,兩個圖層進行次序交換的情況。
如過上層的顏色高于50%灰,則下層越亮,反之越暗

12.Soft Light柔光

B<=128 則 C=(A×B)/128+(A/255)^2×(255-2B) B>128 則 C=(A×B反相)/128+sqrt(A/255)×(2B-255)

該模式類似上層以Gamma值范圍為2.0到0.5的方式來調制下層的色彩值。
結果將是一個非常柔和的組合。

13.Vivid Light 亮光

B<=128 則 C=A-A反相×(255-2B)/(2B) B>128 則 C=A+A×(2B-255)/(2×B反相)

該模式非常強烈的增加了對比度,特別是在高亮和陰暗處。
可以認為是陰暗處應用Color Burn和高亮處應用Color Dodge。

14.Linear Light 線形光

C=A+2×B-255

其類似于Linear Burn,只不過是加深了上層的影響力。

15.Pin Light 點光

B<=128 則 C=Min (A,2B) B>128 則 C=Min(A,2B-255)

該模式結果就是導致中間調幾乎是不變的下層,
但是兩邊是Darken(變暗)和Lighten(變亮)模式的組合。

16.Hard Mix 實色混合

A+B>=255 則 C=255
A+B

該模式導致了最終結果僅包含6種基本顏色,每個通道要么就是0,要么就是255。

17.Difference 差值

C=|A-B|

上下層色調的絕對值。
該模式主要用于比較兩個不同版本的圖片。
如果兩者完全一樣,則結果為全黑。

18.Exclusion 排除

C=A+B-(A×B)/128

亮的圖片區域將導致另一層的反相,很暗的區域則將導致另一層完全沒有改變。

19.Hue 色相

HcScYc =HBSAYA

輸出圖像的色調為上層,飽和度和亮度保持為下層。
對于灰色上層,結果為去色的下層。

20.Saturation 飽和度

HcScYc =HASBYA

輸出圖像的飽和度為上層,色調和亮度保持為下層。

21.Color 顏色

HcScYc =HBSBYA

輸出圖像的亮度為下層,色調和飽和度保持為上層。

22.Luminosity 亮度

HcScYc =HASAYB

輸出圖像的亮度為上層,色調和飽和度保持為下層。

23.Dissolve 溶解

該模式根本不是真正的溶解,因此并不是適合Dissolve(溶解)這個稱謂,其表現僅僅和Normal(正常)類似。
其從上層中隨機抽取一些像素作為透明,使其可以看到下層,
隨著上層透明度越低,可看到的下層區域越多。
如果上層完全不透明,則效果和Normal(正常)不會有任何不同。


總結

以上是生活随笔為你收集整理的颜色叠加算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。