Всегда считал, что из 24битного RGB существует только один верный способ преобразования в 8bit grayscale:
Grayscale = (R+G+B)/(255^3)
Но притом знал, что часто используются особенности восприятия зелёного цвета человеческим глазом (например в некоторых мониторах, пиксел проще делать квадратной формы, т.е. из 4-пикселов, т.е. 1 лишний и использовался он для более точной передачи зелёной компоненты. Или аналогично в фотокамерах и цветных электронных табло, а также это свойство использовалось во многих алгоритмах сжатия с потерями: потери зелёной компоненты наименее желательны). Это всё сводится к анатомической особенности глаза.
Но: никак не считал, что в переводе в grayscale из RGB и CMYK кто-то зачем-то попытается это применить.
И так: печатаем страницу пробной печати в kubuntu. Смотрим на шкалы R, G и B. На этих шкалах самый левый интервал — это 0x000000, далее 0xFFFFFF и градации до 0xFF0000 для R, до 0x00FF00 для G и до 0x0000FF для шкалы B. Представили, да? *
Печатаем, смотрим на лист (притом не забываем как цветной принтер получает цвета, смешивая cyan, magenta, yellow и black), накладываем на лист с 2-х сторон 2 листа белой бумаги, чтобы получить только столбец с интервалом 50% для каждой из шкал. Выходит, что все 3 компоненты при 50% интенсивности (не буду говорить пока про Value или Brightness, и да, я ни в коем случае не про насыщенность говорю, именно про восприятие глазом) воспринимаются одинаково яркими. До сюда вроде всё довольно очевидно и не представляется иных путей. Т.е. как бы логичным кажется, что при чистой краске (соответствующей CMYK) для 0x008000 струйный принтер наносит капли краски в пределах пиксела с "густотой" (не вдаваясь в разницу технологий) в 2 раза меньше, чем, скажем при 0x00FF00, но увы и ах... Зависимость нелинейна. Зачем всё это нужно? Печатаем, наслаждаемся "правильными цветами", фотопринтер сам сделает всю работу по подбору "правильного" цвета.
Но: печатаем ту же самую страницу на лазерном принтере (не цветной, печатает только градации серого от белого (где тонер вообще не наносится) до насыщенного чёрного) и вот тут возникает глюк. Для перевода цветного изображения в grayscale тут следовало просто вычислить (R+G+B)/(255^3), т.к. brightness на готовом листе будет полностью соответствовать "воспринимаемому глазом brightness" (вот как-то так), но увы и ах... Накладываем аналогично 2 белых листа (чтобы повысить чистоту эксперимента т.к. есть ещё и периферическое зрение, которое тоже влияет на восприятие) и видим, что интенсивность нанесения тонера для цветов с одинаковой по задумке brightness различна. Т.е. R-50% и B-50% имеют одинаковый цвет (как и должно быть), а G-50% значительно ярче. Вся шкала G "стянута" к началу, т.е. не линейная, а ближе к экспоненциальной. Лично я мало вникал в работу с принтером, подозреваю, что в grayscale цветное изображение должно конвертироваться софтварно, чтобы избежать нерациональной нагрузки на интерфейс и избыточного расхода времени на печать (прорисовку образа контроллером принтера). Т.е. принтер получает PostScript с уже серым изображением, если в свойствах принтера явно указано, что он цветное изображение печатать ну не умеет (поправьте меня, если я не прав). Т.е. конвертируется драйвером принтера. Ну и естественно по формуле (R+G+B)/(255^3) должно бы. Но для чего тогда вместо (R+G+B)/(255^3) использовать что-то иное в данном случае? Да и если бы это делал сам принтер, то (R+G+B)/(255^3) самый очевидный способ, кмк.
Так вот к чему я это всё: если у Вас вдруг возникла необходимость печати изображения на чёрно-белом принтере (за неимением иного, допустим) необходимо изображение перевести в grayscale вручную, с помощью того же Gimp`a или средствами ПО, которым вы "выводите на печать", любой офисный пакет это умеет сам. Возможно это справедливо только для kubuntu, более детально не изучил пока. Но во всяком случае иначе у меня канал green уродуется.
*что-то типа как тут, но только наизнанку что ли от чёрного к насыщенному цвету.