Как 1-битные растровые данные преобразуются в 8-битные (24 бит / с)? - PullRequest
3 голосов
/ 05 января 2010

Предположим, у меня есть 4 растровых изображения, скажем, CMYK, все из которых имеют размер 1 бит / пиксель и имеют разные цвета, и я хотел преобразовать их в растровое изображение 8 бит / цвет (24 бит / с), как бы я это сделал?

если данные выглядят так:

// the Cyan separation

CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC
...

// the magenta separation, and so on..
MMMM MMMM MMMM MMMM MMMM MMMM MMMM MMMM
...

Скажем, у Cyan было значение RGB (0,255,255), а при пикселе 0 (первый пиксель) у меня было значение 1 (включено), а у пурпурного было значение RGB (255,255,0), и в том же пикселе имел значение 1. Как бы выглядел первый пиксель RGB? Будет ли это выглядеть так?

BBBB BBBB GGGG GGGG RRRR RRRR
// would this 3-byte sequence  actually be 255,255,255
// because the cyan has (0,255,255) and the 
// magenta has (255,255,0)?

Спасибо, просто запутался, как конвертировать 1-битное разделение в 8-битное изображение .. Спасибо ..

Ответы [ 2 ]

4 голосов
/ 05 января 2010

CMYK - это субстративная цветовая система, а RGB - аддитивная.

Если значение CMY (K) равно (1,0, 1,0, 1,0), оно черное, а значение RGB (255, 255, 255) - белое.

Голубой + пурпурный = синий: (0, 255, 255) + (255, 0, 255)! = (0, 0, 255). Но не совсем, потому что мы говорим о разных цветовых системах.

Вам необходимо сначала построить пиксели в CMYK, а затем преобразовать их в RGB, который можно приблизить , выполнив (R, G, B) = (1-C, 1-M, 1-Y).

Чтобы преобразовать 1-битное значение в 8-битное, вам просто нужно преобразовать каждый 0 в 0x00 и каждый 1 в 0xFF: умножить bitValue на 0xFF .

3 голосов
/ 08 января 2010

Практически, с 1-битным кодированным CMYK у вас есть 16 возможных комбинаций (цветов), 9 из которых черные.

xxx1 -- black (8 comb's) -- 0x000000
0000 -- white -- 0xFFFFFF
1000 -- cyan -- 0x00FFFF
0100 -- magenta -- 0xFF00FF
0010 -- yellow -- 0xFFFF00
1100 -- blue -- 0x0000FF
1010 -- green -- 0x00FF00
0110 -- red -- 0xFF0000
1110 -- black -- 0x000000

Учитывая это, я бы предпочел использовать отображение (switch-case или if-elses), а не фактический алгоритм вычисления RGB из CMYK. Конечно, вернитесь рано, если установлено K.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...