Adobe色彩系統(tǒng)RGB和CMYK相互轉(zhuǎn)換原理

2010-09-03 23:05:52來(lái)源:西部e網(wǎng)作者:

為了說(shuō)明 adobe 的 RGB 轉(zhuǎn)換 CMYK 的過(guò)程,不得不先涉及到一些色彩轉(zhuǎn)換程序方面的東西。

為了說(shuō)明 adobe 的 RGB 轉(zhuǎn)換 CMYK 的過(guò)程,不得不先涉及到一些色彩轉(zhuǎn)換程序方面的東西。

CMYK_ADOBE_COLORSPACE:
r = (k*c)/maxval;
g = (k*m)/maxval;
b = (k*y)/maxval;

以上是 adobe 的 CMYK 到 RGB轉(zhuǎn)換公式,下面再來(lái)看看 RGB 如何 轉(zhuǎn)換為 CMYK

下面的語(yǔ)句是經(jīng)過(guò)改寫的適用于 Flash 的 actionscript


// RGB to CMY 色彩轉(zhuǎn)換
function rgbtocmy () {
mycyan = 255 - myred;
mymagenta = 255 - mygreen;
myyellow = 255 - myblue;
correctCMYK();
}

// CMY to RGB 色彩轉(zhuǎn)換
function cmytorgb () {
myred = 255 - mycyan;
mygreen = 255 - mymagenta;
myblue = 255 - myyellow;
correctCMYK();
}

// CMYK 色彩修正
function correctCMYK () {
if (rep_v != "ERR") {
var temp = Math.min(Math.min(mycyan, mymagenta), myyellow);
if (temp != 0) {
temp2 = Math.round((rep_v / 100) * temp);
rep_k = Math.round((temp2 / 255) * 100);
rep_c = Math.round(((mycyan - temp2) / 255) * 100);
rep_m = Math.round(((mymagenta - temp2) / 255) * 100);
rep_y = Math.round(((myyellow - temp2) / 255) * 100);
} else {
rep_c = Math.round((mycyan / 255) * 100);
rep_m = Math.round((mymagenta / 255) * 100);
rep_y = Math.round((myyellow / 255) * 100);
rep_k = 0;
}
}
}

我們知道, RGB 和 CMYK 并不能一一對(duì)應(yīng),這里面存在的問(wèn)題是黑色部分的替換值的取值問(wèn)題。

但是, RGB 所可以全部對(duì)應(yīng)的,是CMY 格式,其最取值范圍是0-255。從色輪上我們可以很容易的了解到這其中的補(bǔ)色計(jì)算關(guān)系。因此,CMY 和 RGB 的對(duì)換 可以說(shuō)是“無(wú)損,可逆轉(zhuǎn)”的。

當(dāng)從RGB 得到相應(yīng)的CMY 之后,我們?nèi)粢玫?CMYK 值,就必須定義一個(gè)“黑色替換值”,也就是說(shuō)提取各色通道中的若干成分來(lái)形成黑色通道。CMYK 的取值是 0-100。

這個(gè)“黑色替換值”的取值不同,得到的CMYK分量分布也就不同。也就是我們?cè)趐hotoshop里面可以選擇 CMYK 的分色方案為 “UCR”或者“GCR”的不同。

“黑色替換值”越大,CMYK圖像在印刷時(shí)的偏色幾率就越小,但相應(yīng)的狀況是圖片彩墨分量在暗黑部位顯薄,不夠飽和。這種分色方式適用于印刷材質(zhì)較薄或較粗糙,印刷精度不高的場(chǎng)合。

附注:為什么直接去色和直接轉(zhuǎn)換灰度比 Lab 的 L 通道得到的灰度層次顯得差?

我們還是來(lái)用色彩轉(zhuǎn)換公式說(shuō)話來(lái)比較:
L = 0.3R+0.59G+0.11B
Gray = (R+G+B)/3

我們很容易就看出區(qū)別,平均取值的灰度和根據(jù)色彩明度增益比例混合的值是完全不同的。

關(guān)鍵詞:RGBCMYK

贊助商鏈接: