Что такое режим истинного цвета true color. Кодирование цвета. Кодирование с палитрой

Что делать, если рисунок цветной? В этом случае для кодирования цвета пикселя уже не обойтись одним битом. Например, в показанном на рисунке изображении российского флага 4 цвета: черный, синий, красный и белый. Для кодирования одного из четырех вариантов нужно 2 бита, поэтому код каждого цвета (и код каждого пикселя) будет состоять из двух бит. Пусть 00 обозначает черный цвет, 01 - красный, 10 - синий и 11 - белый. Тогда получаем такую таблицу:

Проблема только в том, что при выводе на экран нужно как?то определить, какой цвет соответствует тому или другому коду. То есть информацию о цвете нужно выразить в виде числа (или набора чисел).

Человек воспринимает свет как множество электромагнитных волн. Определенная длина волны соответствуют некоторому цвету. Например, волны длиной 500?565 м - это зеленый цвет. Так называемый «белый» свет на самом деле представляет собой смесь волн, длины которых охватывают весь видимый диапазон.

В модели RBG яркость каждой составляющей

(или, как говорят, каждого канала) чаще всего

кодируется целым числом от 0 до 255. При этом

код цвета - это тройка чисел (R,G,B), яркости

отдельных каналов. Цвет (0,0,0) - это черный

цвет, а (255,255,255) - белый. Если все составляющие Рис.5

имеют равную яркость, получаются оттенки серого цвета, от черного до белого. При кодировании цвета на веб-страницах также используется модель RGB, но яркости каналов записываются в шестнадцатеричной системе счисления (от 00 16 до FF 16), а перед кодом цвета ставится знак #. Например, код красного цвета записывается как #FF0000, а код синего - как #0000FF.

Вот коды некоторых цветов:

Таблица 1

Всего есть по 256 вариантов яркости каждого из трех цветов. Это позволяет закодировать 256 3 = 16 777 216 оттенков, что более чем достаточно для человека. Так как 256 = 2 8 , каждая из трех составляющих занимает в памяти 8 бит или 1 байт, а вся информация о каком-то цвете - 24 бита (или 3 байта). Эта величина называется глубиной цвета.

Глубина цвета - это количество бит, используемое для кодирования цвета пикселя. кодирование графический информация

24-битное кодирование цвета часто называют режимом истинного цвета (англ. TrueColor - истинный цвет). Для вычисления объема рисунка в байтах при таком кодировании нужно определить общее количество пикселей (перемножить ширину и высоту) и умножить результат на 3, так как цвет каждого пикселя кодируется тремя байтами. Например, рисунок размером 20Ч30 пикселей, закодированный в режиме истинного цвета, будет занимать 20Ч30Ч3 = 1800 байт. Конечно, здесь не учитывается сжатие, которое применяется во всех современных форматах графических файлов. Кроме того, в реальных файлах есть заголовок, в котором записана служебная информация (например, размеры рисунка). Кроме режима истинного цвета используется также 16-битное кодирование (англ. HighColor - «высокий» цвет), когда на красную и синюю составляющую отводится по 5 бит, а на зеленую, к которой человеческий глаз более чувствителен - 6 бит. В режиме HighColor можно закодировать 2 16 = 65 536 различных цветов. В мобильных телефон 12-битное кодирование цвета (4 бита на канал, 4096 цветов). Как правило, чем меньше цветов используется, тем больше будет искажаться цветное изображение. Таким образом, при кодировании цвета тоже есть неизбежная потеря информации, которая «добавляется» к потерям, вызванным дискретизацией. Однако при увеличении количества используемых цветов одновременно растет объем файла. Например, в режиме истинного цвета файл получится в два раза больше, чем при 12-битном кодировании. Очень часто (например, в схемах, диаграммах и чертежах) количество цветов в изображении невелико (не более 256). В этом случае применяют кодирование с палитрой.

Цветовая палитра - это таблица, в которой каждому цвету, заданному в виде составляющих в модели RGB, сопоставляется числовой код.

Кодирование с палитрой выполняется следующим образом:

  • · выбираем количество цветов N (как правило, не более 256);
  • · из палитры истинного цвета (16 777 216 цветов) выбираем любые N цветов и для каждого
  • · из них находим составляющие в модели RGB;
  • · каждому из цветов присваиваем номер (код) от 0 до N-1;
  • · составляем палитру, записывая сначала RGB-составляющие цвета, имеющего код 0, затем составляющие цвета с кодом 1 и т.д.
  • · цвет каждого пикселя кодируется не в виде значений RGB-составляющих, а как номер цвета в палитре.

Например, при кодировании изображения российского флага (см. выше) были выбраны 4 цвета:

  • · черный: RGB-код (0,0,0); двоичный код 002;
  • · красный: RGB-код (255,0,0); двоичный код 012
  • · синий: RGB-код (0,0,255); двоичный код 102;
  • · белый: RGB-код (255,255,255); двоичный код 112.

Поэтому палитра, которая обычно записывается в специальную служебную область в начале файла, представляет собой четыре трехбайтных блока:

Код каждого пикселя занимает всего два бита. Чтобы примерно оценить объем рисунка с палитрой, включающей N цветов (без учета сжатия), нужно:

  • · определить размер палитры, 3ЧN байт или 24ЧN бит;
  • · определить глубину цвета (количество бит на пиксель), то есть найти наименьшее натуральное число k, такое что 2 k ? N;
  • · вычислить общее количество пикселей M, перемножив размеры рисунка;
  • · определить информационный объем основной части MЧk бит.

В таблице приведены данные по некоторым вариантам кодирования с палитрой:

Таблица 2

Палитры с количеством цветом более 256 на практике не используются. RGB-кодирование лучше всего описывает цвет, который излучается некоторым устройством, например, монитором или экраном ноутбука. Когда же мы смотрим на изображение, отпечатанное на бумаге, ситуация совершенно другая. Мы видим не прямые лучи источника, попадающие в глаз, а отраженные от поверхности. «Белый свет» от какого-то источника (солнца, лампочки), содержащий волны во всем видимом диапазоне, попадает на бумагу, на которой нанесена краска. Краска поглощает часть лучей (их энергия уходит на нагрев), а оставшиеся попадают в глаз, это и есть тот цвет, который мы видим.


Например, если краска поглощает красные лучи, остаются только синие и зеленые - мы видим голубой цвет. В этом смысле красный и голубой цвета дополняют друг друга, так же, как и пары зеленый - фиолетовый и синий - желтый.

Действительно, если из белого цвета (его RGB - код #FFFFFF) «вычесть» зеленый, то получится цвет #FF00FF (фиолетовый, пурпурный), а если «вычесть» синий, то получится цвет #FFFF00 (желтый).

На трех дополнительных цветах - голубом,

фиолетовом и желтом -строится цветовая

модель CMY (англ. Cyan - голубой, Magenta -

фиолетовый, Yellow - желтый), которая применяется

для вывода на печать. Рис.8

Значения C=M=Y=0 говорят о том, что на белую бумагу не наносится никакая краска, поэтому все лучи отражаются, это белый цвет. Если добавить голубого цвета, красные лучи поглощаются, остаются только синие и зеленые. Если сверху нанести еще желтую краску, которая поглощает синие лучи, остается только зеленый.

При наложении голубой, фиолетовой и желтой красок теоретически должен получиться черный цвет, все лучи поглощаются. Однако на практике все не так просто. Краски не идеальны, поэтому вместо черного цвета получается грязно-коричневый. Кроме того, при печати черных областей приходится «выливать» тройную порцию краски в одно место. Нужно также учитывать, что обычно на принтерах часто распечатывают черный текст, а цветные чернила значительно дороже черных.

Чтобы решить эту проблему, в набор красок добавляют черную, это так называемый ключевой цвет (англ. Keycolor), поэтому получившуюся модель обозначают CMYK. Изображение, которое печатает большинство принтеров, состоит из точек этих четырех цветов, которые расположены в виде узора очень близко друг к другу. Это создает иллюзию того, что в рисунке есть разные цвета. Кроме цветовых моделей RGB и CMY (CMYK), существуют и другие. Наиболее интересная из них - модель HSB (англ. Hue - тон, оттенок; Saturation - насыщенность,Brightness - яркость), которая ближе всего к естественному восприятию человека. Тон - это, например, синий, зеленый, желтый. Насыщенность - это чистота тона, при уменьшении насыщенности до нуля получается серый цвет. Яркость определяет, насколько цвет светлый или темный. Любой цвет при снижении яркости до нуля превращается в черный.

Строго говоря, цвет, кодируемый в моделях RGB, CMYK и HSV, зависит от устройства, на котором этот цвет будет изображаться. Для кодирования «абсолютного» цвета применяют модель Lab (англ. Lighntess - светлота, a и b - параметры, определяющие тон и насыщенность цвета), которая является международным стандартом. Эта модель используется, например, для перевода цвета из RGB в CMYK и обратно.

Обычно изображения, предназначенные для печати, готовятся на компьютере (в режиме RGB), а потом переводятся в цветовую модель CMYK. При этом стоит задача получить при печати такой же цвет, что и на мониторе. И вот тут возникают проблемы. Дело в том, что при выводе пикселей на экран монитор получает некоторые числа (RGB-коды), на основании которых нужно «выкрасить» пиксели тем или иным цветом. Отсюда следует важный вывод.

Цвет, который мы видим на мониторе, зависит от характеристик и настроек монитора.

Это значит, что, например, красный цвет (R=255, G=B=0) на разных мониторах будет разным. Наверняка вы видели этот эффект в магазине где продают телевизоры и мониторы - одна и та же картинка на каждом из них выглядит по-разному. Что же делать?

Во-первых, выполняется калибровка монитора - настройка яркости, контрастности, белого, черного и серого цветов. Во-вторых, профессионалы, работающие с цветными изображениями, используют цветовые профили мониторов, сканеров, принтеров и других устройств. В профилях хранится информация о том, каким реальным цветам соответствуют различные RGB-коды или CMYK-коды. Для создания профиля используют специальные приборы - калибраторы (колориметры), которые «измеряют» цвет с помощью трех датчиков, принимающих лучи в красном, зеленом и синем диапазонах. Современные форматы графических файлов (например, формат.PSDпрограммы AdobePhotoshop) вместе с кодами пикселей содержат и профиль монитора, на котором создавался рисунок. Для того, чтобы результат печати на принтере был максимально похож на изображение на мониторе, нужно (используя профиль монитора) определить «абсолютный» цвет (например, в модели Lab), который видел пользователь, а потом (используя профиль принтера) найти CMYK-код, который даст при печати наиболее близкий цвет.

Проблема состоит в том, что не все цвета RGB-модели могут быть напечатаны. В первую очередь это относится к ярким и насыщенным цветам. Например, ярко-красный цвет (R=255, G=B=0) нельзя напечатать, ближайший к нему цвет в модели CMYK (C=0, M=Y=255, K=0) при обратном переводе в RGB может дать значения в районе R=237, G=28, B=26. Поэтому при преобразовании ярких цветов в модель CMYK (и при печати ярких рисунков) они становятся тусклее. Это обязательно должны учитывать профессиональные дизайнеры.

Итак, при растровом кодировании рисунок разбивается на пиксели (дискретизируется). Для каждого пикселя определяется единый цвет, который чаще всего кодируется с помощью RGB-кода. На практике эти операции выполняет сканер(устройство для ввода изображений) и цифровой фотоаппарат.

Растровое кодирование имеет достоинства:

  • · универсальный метод (можно закодировать любое изображение);
  • · единственный метод для кодирования и обработки размытых изображений, не имеющих;
  • · четких границ, например, фотографий.

Растровое кодирование имеет недостатки:

  • · при дискретизации всегда есть потеря информации;
  • · при изменении размеров изображения искажается цвет и форма объектов на рисунке, поскольку при увеличении размеров надо как-то восстановить недостающие пиксели, а при уменьшении - заменить несколько пикселей одним;
  • · размер файла не зависит от сложности изображения, а определяется только разрешением и глубиной цвета;
  • · как правило, растровые рисунки имеют большой объем.

Существует много разных форматов растровых рисунков. Чаще всего встречаются следующие:

BMP (англ. bitmap - битовая карта, файлы с расширением.bmp) - стандартный формат в операционной системе Windows; поддерживает кодирование с палитрой и в режиме истинного цвета;

JPEG (англ. JointPhotographicExpertsGroup - объединенная группа фотографов-экспертов, файлы с расширением.jpg или.jpeg) - формат, разработанный специально для кодирования фотографий; поддерживает только режим истинного цвета; для уменьшения объема файла используется сильное сжатие, при котором изображение немного искажается, поэтому не рекомендуется использовать его для рисунков с четкими границами;

GIF (англ. GraphicsInterchangeFormat - формат для обмена изображениями, файлы с расширением.gif) - формат, поддерживающий только кодирование с палитрой (от 2 до 256 цветов); в отличие от предыдущих форматов, части рисунка могут быть прозрачными, то есть на веб-странице через них будет «просвечивать» фон; в современном варианте формата GIF можно хранить анимированные изображения; используется сжатие без потерь, то есть при сжатии изображение не искажается;

PNG (англ. PortableNetworkGraphics - переносимые сетевые изображения, файлы с расширением.png) - формат, поддерживающий как режим истинного цвета, так и кодирование с палитрой; части изображения могут быть прозрачными и даже полупрозрачными (32-битное кодирование RGBA, где четвертый байт задает прозрачность); изображение сжимается без искажения; анимация не поддерживается.

Свойства рассмотренных форматов сведены в таблицу:

Таблица 3

Вы уже знаете, что все виды информации хранятся в памяти компьютера в виде двоичных кодов, то есть цепочек из нулей и единиц. Получив такую цепочку, абсолютно невозможно сказать, что это - текст, рисунок, звук или видео. Например, код 11001000 2 может обозначать число 200, букву "И", одну из составляющих цвета пикселя в режиме истинного цвета, номер цвета в палитре для рисунка с палитрой 256 цветов, цвета 8 пикселей черно-белого рисунка и т.п. Как же компьютер разбирается в двоичных данных? В первую очередь нужно ориентироваться на расширение имени файла. Например, чаще всего файлы с расширением.txt содержат текст, а файлы с расширениями.bmp, .gif, .jpg, .png - рисунки.

Однако расширение файла можно менять как угодно. Например, можно сделать так, что текстовый файл будет иметь расширение.bmp, а рисунок в формате JPEG - расширение.txt. Поэтому в начало всех файлов специальных форматов (кроме простого текста, .txt) записывается заголовок, по которому можно «узнать» тип файла и его характеристики. Например, файлы в формате BMP начинаются с символов «BM», а файлы в формате GIF - с символов «GIF». Кроме того, в заголовке указывается размер рисунка и его характеристики, например, количество цветов в палитре, способ сжатия и т.п.

Используя эту информацию, программа «расшифровывает» основную часть файла и выводит его на экран.

Растры, пиксели, дискретизация, разрешение

Как и все виды информации, изображения в компьютере закодированы в виде двоичных последовательностей. Используют два принципиально разных метода кодирования, каждый из которых имеет свои достоинства и недостатки.

И линия, и область состоят из бесконечного числа точек. Цвет каждой из этих точек нам нужно закодировать. Если их бесконечно много, мы сразу приходим к выводу, что для этого нужно бесконечно много памяти. Поэтому «поточечным» способом изображение закодировать не удастся. Однако, эту все-таки идею можно использовать.

Начнем с черно-белого рисунка. Представим себе, что на изображение ромба наложена сетка, которая разбивает его на квадратики. Такая сетка называется растром. Теперь для каждого квадратика определим цвет (черный или белый). Для тех квадратиков, в которых часть оказалась закрашена черным цветом, а часть белым, выберем цвет в зависимости от того, какая часть (черная или белая) больше.

Рисунок 1.

У нас получился так называемый растровый рисунок, состоящий из квадратиков-пикселей.

Определение 1

Пиксель (англ. pixel = picture element, элемент рисунка) – это наименьший элемент рисунка, для которого можно задать свой цвет. Разбив «обычный» рисунок на квадратики, мы выполнили его дискретизацию – разбили единый объект на отдельные элементы. Действительно, у нас был единый и неделимый рисунок – изображение ромба. В результаты мы получили дискретный объект – набор пикселей.

Двоичный код для черно-белого рисунка, полученного в результате дискретизации можно построить следующим образом:

  • заменяем белые пиксели нулями, а черные – единицами;
  • выписываем строки полученной таблицы одну за другой.

Пример 1

Покажем это на простом примере:

Рисунок 2.

Ширина этого рисунка – $8$ пикселей, поэтому каждая строчка таблицы состоит из $8$ двоичных разрядов – битов. Чтобы не писать очень длинную цепочку нулей и единиц, удобно использовать шестнадцатеричную систему счисления, закодировав $4$ соседних бита (тетраду) одной шестнадцатеричной цифрой.

Рисунок 3.

Например, для первой строки получаем код $1A_{16}$:

а для всего рисунка: $1A2642FF425A5A7E_{16}$.

Замечание 1

Очень важно понять, что мы приобрели и что потеряли в результате дискретизации. Самое важное – мы смогли закодировать рисунок в двоичном коде. Однако при этом рисунок исказился - вместо ромба мы получили набор квадратиков. Причина искажения в том, что в некоторых квадратиках части исходного рисунка были закрашены разными цветами, а в закодированном изображении каждый пиксель обязательно имеет один цвет. Таким образом, часть исходной информации при кодировании была потеряна. Это проявится, например, при увеличении рисунка - квадратики увеличиваются, и рисунок еще больше искажается. Чтобы уменьшить потери информации, нужно уменьшать размер пикселя, то есть увеличивать разрешение.

Определение 2

Разрешение – это количество пикселей, приходящихся на дюйм размера изображения.

Разрешение обычно измеряется в пикселях на дюйм (используется английское обозначение $ppi$ = pixels per inch). Например, разрешение $254$ $ppi$ означает, что на дюйм ($25,4$ мм) приходится $254$ пикселя, так что каждый пиксель «содержит» квадрат исходного изображения размером $0,1×0,1$ мм. Чем больше разрешение, тем точнее кодируется рисунок (меньше информации теряется), однако одновременно растет и объем файла .

Кодирование цвета

Что делать, если рисунок цветной? В этом случае для кодирования цвета пикселя уже не обойтись одним битом. Например, в показанном на рисунке изображении российского флага $4$ цвета: черный, синий, красный и белый. Для кодирования одного из четырех вариантов нужно $2$ бита, поэтому код каждого цвета (и код каждого пикселя) будет состоять из двух бит. Пусть $00$ обозначает черный цвет, $01$ – красный, $10$ – синий и $11$ – белый. Тогда получаем такую таблицу:

Рисунок 4.

Проблема только в том, что при выводе на экран нужно как-то определить, какой цвет соответствует тому или другому коду. То есть информацию о цвете нужно выразить в виде числа (или набора чисел).

Человек воспринимает свет как множество электромагнитных волн. Определенная длина волны соответствуют некоторому цвету. Например, волны длиной $500-565$ нм – это зеленый цвет. Так называемый «белый» свет на самом деле представляет собой смесь волн, длины которых охватывают весь видимый диапазон.

Согласно современному представлению о цветном зрении (теории Юнга-Гельмгольца), глаз человека содержит чувствительные элементы трех типов. Каждый из них воспринимает весь поток света, но первые наиболее чувствительны в области красного цвета, вторые – области зеленого, а третьи – в области синего цвета. Цвет – это результат возбуждения всех трех типов рецепторов. Поэтому считается, что любой цвет (то есть ощущения человека, воспринимающего волны определенной длины) можно имитировать, используя только три световых луча (красный, зеленый и синий) разной яркости. Следовательно, любой цвет приближенно раскладывается на три составляющих – красную, зеленую и синюю. Меняя силу этих составляющих, можно составить любые цвета. Эта модель цвета получила название RGB по начальным буквам английских слов red (красный), green (зеленый) и blue (синий).

В модели RBG яркость каждой составляющей (или, как говорят, каждого канала) чаще всего кодируется целым числом от $0$ до $255$. При этом код цвета – это тройка чисел (R,G,B), яркости отдельных каналов. Цвет ($0,0,0$) – это черный цвет, а ($255,255,255$) – белый. Если все составляющие имеют равную яркость, получаются оттенки серого цвета, от черного до белого.

Рисунок 5.

Чтобы сделать светло-красный (розовый) цвет, нужно в красном цвете ($255,0,0$) одинаково увеличить яркость зеленого и синего каналов, например, цвет ($255, 150, 150$) – это розовый. Равномерное уменьшение яркости всех каналов делает темный цвет, например, цвет с кодом ($100,0,0$) – тёмно-красный.

Всего есть по $256$ вариантов яркости каждого из трех цветов. Это позволяет закодировать $256^3= 16 777 216$ оттенков, что более чем достаточно для человека. Так как $256 = 2^8$, каждая из трех составляющих занимает в памяти $8$ бит или $1$ байт, а вся информация о каком-то цвете – $24$ бита (или $3$ байта). Эта величина называется глубиной цвета.

Определение 3

Глубина цвета – это количество бит, используемое для кодирования цвета пикселя.

$24$-битное кодирование цвета часто называют режимом истинного цвета (англ. True Color – истинный цвет). Для вычисления объема рисунка в байтах при таком кодировании нужно определить общее количество пикселей (перемножить ширину и высоту) и умножить результат на $3$, так как цвет каждого пикселя кодируется тремя байтами. Например, рисунок размером $20×30$ пикселей, закодированный в режиме истинного цвета, будет занимать $20×30×3 = 1800$ байт.

Кроме режима истинного цвета используется также $16$-битное кодирование (англ. High Color – «высокий» цвет), когда на красную и синюю составляющую отводится по $5$ бит, а на зеленую, к которой человеческий глаз более чувствителен – $6$ бит. В режиме High Color можно закодировать $2^{16} = 65 536$ различных цветов. В мобильных телефонах $12$-битное кодирование цвета ($4$ бита на канал, $4096$ цветов).

Кодирование с палитрой

Как правило, чем меньше цветов используется, тем больше будет искажаться цветное изображение. Таким образом, при кодировании цвета тоже есть неизбежная потеря информации, которая «добавляется» к потерям, вызванным дискретизацией. Очень часто (например, в схемах, диаграммах и чертежах) количество цветов в изображении невелико (не более $256$). В этом случае применяют кодирование с палитрой.

Определение 4

Цветовая палитра – это таблица, в которой каждому цвету, заданному в виде составляющих в модели RGB, сопоставляется числовой код.

Кодирование с палитрой выполняется следующим образом:

  • выбираем количество цветов $N$ (как правило, не более $256$);
  • из палитры истинного цвета ($16 777 216$ цветов) выбираем любые $N$ цветов и для каждого из них находим составляющие в модели RGB;
  • каждому из цветов присваиваем номер (код) от $0$ до $N–1$;
  • составляем палитру, записывая сначала RGB-составляющие цвета, имеющего код $0$, затем составляющие цвета с кодом $1$ и т.д.

Цвет каждого пикселя кодируется не в виде значений RGB-составляющих, а как номер цвета в палитре. Например, при кодировании изображения российского флага (см. выше) были выбраны $4$ цвета:

  • черный: RGB-код ($0,0,0$); двоичный код $002$;
  • красный: RGB-код ($255,0,0$); двоичный код $012$;
  • синий: RGB-код ($0,0,255$); двоичный код $102$;
  • белый: RGB-код ($255,255,255$); двоичный код $112$.

Поэтому палитра, которая обычно записывается в специальную служебную область в начале файла (ее называют заголовком файла), представляет собой четыре трехбайтных блока:

Рисунок 6.

Код каждого пикселя занимает всего два бита.

Палитры с количеством цветом более $256$ на практике не используются.

Достоинства и недостатки растрового кодирования

Растровое кодирование имеет достоинства :

  • универсальный метод (можно закодировать любое изображение);
  • единственный метод для кодирования и обработки размытых изображений, не имеющих четких границ, например, фотографий.

И недостатки :

  • при дискретизации всегда есть потеря информации;
  • при изменении размеров изображения искажается цвет и форма объектов на рисунке, поскольку при увеличении размеров надо как-то восстановить недостающие пиксели, а при уменьшении – заменить несколько пикселей одним;
  • размер файла не зависит от сложности изображения, а определяется только разрешением и глубиной цвета.

Как правило, растровые рисунки имеют большой объем.

Важным этапом кодирования графического изображения является разбиение его на дискретные элементы (дискретизация).

Основными способами представления графики для ее хранения и обработки с помощью компьютера являются растровые и векторные изображения.

Векторное изображение представляет собой графический объект, состоящий из элементарных геометрических фигур (чаще всего отрезков и дуг). Положение этих элементарных отрезков определяется координатами точек и величиной радиуса. Для каждой линии указывается двоичные коды типа линии (сплошная, пунктирная, штрихпунктирная), толщины и цвета.

Растровое изображение представляет собой совокупность точек (пикселей), полученных в результате дискретизации изображения в соответствии с матричным принципом.

Матричный принцип кодирования графических изображений заключается в том, что изображение разбивается на заданное количество строк и столбцов. Затем каждый элемент полученной сетки кодируется по выбранному правилу.

Pixel (picture element - элемент рисунка) - минимальная единица изображения, цвет и яркость которой можно задать независимо от остального изображения.

В соответствии с матричным принципом строятся изображения, выводимые на принтер, отображаемые на экране дисплея, получаемые с помощью сканера.

Качество изображения будет тем выше, чем "плотнее" расположены пиксели, то есть чем больше разрешающая способность устройства, и чем точнее закодирован цвет каждого из них.

Для черно-белого изображения код цвета каждого пикселя задается одним битом.

Если рисунок цветной, то для каждой точки задается двоичный код ее цвета.

Поскольку и цвета кодируются в двоичном коде, то если, например, вы хотите использовать 16-цветный рисунок, то для кодирования каждого пикселя вам потребуется 4 бита (16=24), а если есть возможность использовать 16 бит (2 байта) для кодирования цвета одного пикселя, то вы можете передать тогда 216 = 65536 различных цветов. Использование трех байтов (24 битов) для кодирования цвета одной точки позволяет отразить 16777216 (или около 17 миллионов) различных оттенков цвета - так называемый режим “истинного цвета” (True Color). Заметим, что это используемые в настоящее время, но далеко не предельные возможности современных компьютеров.

Графическая информация, как и информация любого другого типа, хранятся в памяти компьютера в виде двоичных кодов. Изображение, состоящее из отдельных точек, каждая из которых имеет свой цвет, называется растровым изображением . Минимальный элемент такого изображения в полиграфии называется растр , а при отображении графики на мониторе минимальный элемент изображения называют пиксель (pix) .

Рис. 4.1. Минимальная единица изображения: пиксель и растр.

Если пиксель изображения может быть раскрашен только в один из 2х цветов, допустим, либо в черный (0), либо в белый (1), то для хранения информации о цвете пикселя достаточно 1 бита памяти (log 2 (2)=1 бит). Соответственно, объем, занимаемый в памяти компьютера всем изображением, будет равен числу пикселей в этом изображении (рис. 20а).

Если под хранение информации о цвете пикселя выделить 2 бита, то число цветов, допустимых для раскраски каждого пикселя, увеличится до 4х (N=2 2 =4), а объем файла изображения в битах будет вдвое больше, чем количество составляющих его пикселей (рис. 20b).

При печати на не цветном принтере обычно допускает 256 градаций серого цвета (от черного (0) до белого (255)) для раскраски каждой точки изображения. Под хранение информации о цвете точки в этом случае отводится 1 байт, т.е. 8 бит (log 2 (256)=8 бит).

Восприятие цвета

Цвет - это ощущение, которое возникает в сознании человека при воздействии на его зрительный аппарат электромагнитного излучения с длиной волны в диапазоне от 380 до 760 нм. Эти ощущения могут быть вызваны и другими причинами: болезнь, удар, мысленная ассоциация, галлюцинации, и др.

Способность к цветоощущению возникла в процессе эволюции как реакция адаптации, как способ получения сведений об окружающем мире и способ ориентирования в нем. Каждый человек воспринимает цвета индивидуально, отлично от других людей. Однако у большей части людей цветовые ощущения очень схожи.

Физической основой цветовосприятия является наличие специфических светочувствительных клеток в центральном участке сетчатки глаза, так называемых палочек и колбочек.

Различают три вида колбочек, по чувствительности к разным длинам волн света (цветам). Колбочки S-типа чувствительны в фиолетово-синей, M-типа - в зелено-желтой, и L-типа - в желто-красной частях спектра.

Наличие этих трех видов колбочек (и палочек, чувствительных в изумрудно-зеленой части спектра) даёт человеку цветное зрение.

В ночное время зрение обеспечивают только палочки, поэтому ночью человек не может различать цвета.

Каждое животное видит мир по-своему. Сидя в засаде, лягушка видит только движущиеся предметы: насекомых, на которых она охотится, или своих врагов. Чтобы увидеть всё остальное, она должна сама начать двигаться.

Сумеречные и ночные животные (например, волки и другие хищные звери), как правило, почти не различают цветов.

Стрекоза хорошо различает цвета только нижней половиной глаз, верхняя половина смотрит в небо, на фоне которого добыча и так хорошо заметна.

О хорошем зрении насекомых мы можем судить хотя бы по красоте цветков растений - ведь эта красота предназначена природой именно для насекомых - опылителей. Но мир, каким они его видят, сильно отличается от привычного для нас. Цветки, которые опыляют пчелы, обычно не окрашены в красный цвет: пчела этот цвет воспринимает, как мы - черный. Зато, вероятно, многие невзрачные на наш взгляд цветы приобретают неожиданные великолепие в ультрафиолетовом спектре, в котором видят насекомые. На крыльях некоторых бабочек (например, лимонницы, боярышницы) имеются узоры, скрытые от человеческого глаза и видимые только в ультрафиолетовых лучах. Когда муравьев в ходе опыта стали облучать сильными ультрафиолетовыми лучами, они побежали укрываться "в тень" не под защиту пропускавшей ультрафиолет темной дощечки, а под прозрачное, на наш взгляд, стекло, задерживавшее эти лучи.

Цветовые модели

Все объекты окружающего мира можно разделить на: излучающие (светящиеся: солнце, лампа, монитор), отражающие излучение (бумага) и пропускающие (стекло).

Рис. 4.4. Излучающие, отражающие и пропускающие объекты.

В зависимости от того, является объект излучающим или отражающим для представления описания его цвета в виде числового кода используются две обратных друг другу цветовые модели: RGB или CMYK.

RGB. Модель RGB используется в телевизорах, мониторах, проекторах, сканерах, цифровых фотоаппаратах… Эта модель является аддитивной (суммарной), что означает, что цвета в этой модели добавляются к черному (blacK) цвету.

Основные цвета в этой модели: красный (Red), зеленый (Green), синий (Blue) . Их парное сочетание в равных долях дает дополнительные цвета: желтый (Yellow), голубой (Cyan) и пурпурный (Magenta) .

R+G=Y; G+B=C; B+R=M.

Сумма всех трех основных цветов в равных долях дает белый (White) цвет: R+G+B=W .

CMYK. Цветовая модель CMYK используется в полиграфии при формировании изображений, предназначенных для печати на бумаге. Основными цветами в ней являются те, которые являются дополнительными в модели RGB, т.к. они получаются вычитанием цветов RGB из белого цвета. Поэтому модель CMYK называется субтрактивной .

C=W-R; M=W-G; Y=W-B.

В свою очередь парное сочетание в равных долях цветов модели CMY дает цвета модели RGB. Всем известно, что если смешать на бумаге желтую и голубую краску, получится зеленый цвет. На языке цветовых моделей, это описывается выражением: Y+C=G , кроме того, C+M=B и M+Y=R .

В теории, сумма C+M+Y=K , т.е. дает черный (blacK) цвет, но поскольку реальные типографские краски имеют примеси, их цвет не совпадает в точности с теоретически рассчитанным голубым, желтым и пурпурным. Особенно трудно получить из этих красок черный цвет. Поэтому в модели CMYK к триаде CMY добавляют черный цвет K. От слова blacK для обозначения черного цвета взята последняя буква, и т.к. буква B уже используется в модели RGB для обозначения синего цвета.

Если кодировать цвет одной точки изображения тремя битами, каждый из которых будет являться признаком присутствия (1) или отсутствия (0) соответствующей компоненты системы RGB, то мы получим все восемь различных цветов описанных выше моделей.

Таблица 4.2. Кодировка цветов

На практике же, для сохранения информации о цвете каждой точки цветного изображения в модели RGB обычно отводится 3 байта (т.е. 24 бита) - по 1 байту (т.е. по 8 бит) под значение цвета каждой составляющей. Таким образом, каждая RGB-составляющая может принимать значение в диапазоне от 0 до 255 (всего 2 8 =256 значений), а каждая точка изображения, при такой системе кодирования может быть окрашена в один из 2 3*8 =2 24 =16 777 216 цветов. Такой набор цветов принято называть True Color (правдивые цвета), потому что человеческий глаз все равно не в состоянии различить большего разнообразия.

Рис. 4.6. Цветовой куб.

Изменяющиеся в диапазоне от 0 до 255 координаты RGB образуют цветовой куб. Любой цвет расположен внутри этого куба и описывается своим набором координат, показывающем в каких долях смешаны в нем красная, зеленая и синяя составляющие.

Таблица 4.3. Справочная таблица

HSB. Две описанные выше модели удобны скорее для компьютеров, чем для нас с вами. Человеку гораздо проще не синтезировать цвет из отдельных составляющих, а выбирать его, ориентируясь на более естественные параметры: тон, насыщенность, яркость. Именно эти три параметра и стали основой для модели HSB (Hue, Saturation, Brightness), она же HSL (Hue, Saturation, Lightness).

Параметр тона Hue (читается «хью») - это чистый цвет сам по себе - один из цветов спектра (радуги). В модели HSB он представлен как замкнутый круг, положение конкретного оттенка на котором указывается в градусах от 0 до 359.

Параметр Saturation - это насыщенность. Чем меньше насыщенность, тем ближе цвет к серому и наоборот: с увеличением насыщенности цвет становится сочнее. Lightness, соответственно, определяет долю белого в итоговом цвете.

Lab. В попытке совместить цветовой охват моделей RGB и CMYK была создана модель Lab, не привязанная к среде вывода. Параметр модели L показывает общую яркость пикселов, параметром a передаются цвета от темно-зеленого до ярко-розового с разными вариациями насыщенности и яркости, а параметром b - от светло-синего до ярко-желтого. Модель Lab обеспечивает наибольшую совместимость, цветовой охват и скорость. Из-за своей универсальности Lab широко используется способными в ней разобраться профессионалами.

Какие сложности у вас возникли? Как их можно преодолеть?

2. Постройте черно-белый рисунок шириной 8 пикселей, закодированный шестнадцатеричной последовательностью 2466FF6624 16 .

3. Постройте черно-белый рисунок шириной 5 пикселей, закодированный шестнадцатеричной последовательностью 3A53F88 16 .

4. Рисунок размером 10×15 см кодируется с разрешением 300 ppi. Оцените количество пикселей в этом рисунке. (Ответ: около 2 мегапикселей)

5. Постройте шестнадцатеричный код для цветов, имеющих RGB-коды (100,200,200), (30,50,200), (60,180, 20), (220, 150, 30). (Ответ: #64C8C8, #1E32C8, #3CB414, #DC961E)

6. Как бы вы назвали цвет, заданный на веб-странице в виде кода: #CCCCCC, #FFCCCC, #CCCCFF, #000066, #FF66FF, #CCFFFF, #992299, #999900, #99FF99? Найдите десятичные значения составляющих RGB- кода. (Ответ: (204,204,204), (255,204,204), (204,204,255), (0,0,102), (255.255,102), (104,255,255), (153,34,153), (153,153,0), (153,255,153))

7. Что такое глубина цвета? Как связаны глубина цвета и объем файла?

8. Какова глубина цвета, если в рисунке используется 65536 цветов? 256 цветов? 16 цветов? (Ответ: 16 бит; 8 бит; 4 бита)

9. Для желтого цвета найдите красную, зеленую и синюю составляющие при 12-битном кодировании. (Ответ: R=G=15, B=0)

10. Сколько места занимает палитра в файле, где используются 64 цвета? 128 цветов?

11. Сколько байт будет занимать код рисунка размером 40×50 пикселей в режиме истинного цвета? при кодировании с палитрой 256 цветов? при кодировании с палитрой 16 цветов? в черно-белом варианте (два цвета)? (Ответ: 6000, 2000, 1000, 250)

12. Сколько байт будет занимать код рисунка размером 80×100 пикселей в кодировании с глубиной цвета 12 бит на пиксель? (Ответ: 12000)

13. Для хранения растрового изображения размером 32×32 пикселя отвели 512 байтов памяти. Каково максимально возможное число цветов в палитре изображения? (Ответ: 16)

14. Для хранения растрового изображения размером 128 x 128 пикселей отвели 4 килобайта памяти. Каково максимально возможное число цветов в палитре изображения? (Ответ: 4)

15. В процессе преобразования растрового графического файла количество цветов уменьшилось с 1024 до 32. Во сколько раз уменьшился информационный объем файла? (Ответ: в 2 раза)

16. В процессе преобразования растрового графического файла количество цветов уменьшилось с 512 до 8. Во сколько раз уменьшился информационный объем файла?(Ответ: в 3 раза)

17. Разрешение экрана монитора – 1024 х 768 точек, глубина цвета – 16 бит. Каков необходимый объем видеопамяти для данного графического режима? (Ответ: 1,5 Мбайт)

18. После преобразования растрового 256-цветного графического файла в черно- белый формат (2 цвета) его размер уменьшился на 70 байт. Каков был размер исходного файла? (Ответ: 80 байт)

19. Сколько памяти нужно для хранения 64-цветного растрового графического изображения размером 32 на 128 точек? (Ответ: 3 Кбайта)

20. Какова ширина (в пикселях) прямоугольного 64-цветного неупакованного растрового изображения, занимающего на диске 1,5 Мбайт, если его высота вдвое меньше ширины? (Ответ: 2048)

21. Какова ширина (в пикселях) прямоугольного 16-цветного неупакованного растрового изображения, занимающего на диске 1 Мбайт, если его высота вдвое больше ширины? (Ответ: 1024)

Под графической информацией можно понимать рисунок, чертеж, фотографию, картинку в книге, изображения на экране телевизора или в кинозале и т. д. Рассмотрим принципы кодирования графической информации на примере изображения на экране телевизора. Это изображение состоит из горизонтальных линий - строк, каждая из которых в свою очередь состоит из элементарных мельчайших единиц изображения - точек, которые принято называть пикселями (picsel - PICture"S ELement - элемент картинки). Весь массив элементарных единиц изображения называют растром .

Степень четкости изображения зависит от количества строк на весь экран и количества точек в строке, которые представляютразрешающую способность экрана, или просто разрешение . Чем больше строк и точек, тем четче и лучше изображение.

Если мы посмотрим на показатели разрешения современных плазменных и жидкокристаллических телевизоров, то обнаружим, что наиболее распространенные разрешения – 640×480 (ЖК-телевизоры с соотношением сторон 4:3); 852×480 (плазменные панели с соотношением сторон 16:9), 1024×768 (ЖК и «плазма» как 4:3, так и 16:9); 1366×768 (HD Ready); 1920×1080 (Full HD) пикселей. Встречаются, но редко, и некоторые другие значения разрешения, например 800×600 или 1024×1024 пикселей.

Обозначение разрешения, например 640×480, означает, что используется 480 горизонтальных строк по 640 пикселей в каждой. Таким образом, изображение на экране представляет собой последовательность из 640·480=307200 пикселей.

Изображения могут быть монохромными и цветными.

Монохромное изображение состоит из любых двух контрастных цветов - черного и белого, зеленого и белого, коричневого и белого и т. д. Для простоты обсуждения будем считать, что один из цветов - черный, а второй - белый. Тогда каждый пиксель изображения может иметь либо черный, либо белый цвет. Поставив в соответствие черному цвету двоичный код «0», а белому - код «1» (либо наоборот), мы сможем закодировать в 1 бите состояние 1 пикселя монохромного изображения. Однако полученное таким образом изображение будет чрезмерно контрастным.

Общепринятым на сегодняшний день, дающим достаточно реалистичные монохромные изображения, считается кодирование состояния 1 пикселя с помощью 1 байта, которое позволяет передавать 256 различных оттенков серого цвета от полностью белого, до полностью черного. В этом случае для передачи всего растра из 640×480 пикселей потребуется 307200 байт.

Цветное изображение может формироваться на основе различных моделей. Наиболее распространенные цветовые модели:

· RGB чаще всего используется в информатике;


· CMYK - основная цветовая модель в полиграфии;

· в телевидении для стандарта PAL применяется цветовая модель YUV, для SÉCAM - модель YDbDr, а для NTSC - модель YIQ;

· эталонная модель XYZ основана на замерах характеристик человеческого глаза.

Модель RGB (от слов Red, Green, Blue - красный, зеленый, синий) наиболее точно подходит к принципам вывода изображения на экран монитора – три числа задают яркость свечения зерен красного, зеленого и синего люминофора в заданной точке экрана. Поэтому данная модель получила наиболее широкое распространение в области компьютерной графики, ориентированной на просмотр изображений на экране монитора.

Модель RGB опирается на то, что глаз человека воспринимает все цвета как сумму трех основных цветов - красного , зеленого и синего (рис.4.1). Так как цвет формируется в результате сложения трех цветов, эту модель часто называют аддитивной (суммирующей).

Например, для задания белого цвета необходимо указать для всех трех компонентов максимальные значения яркости, а для задания черного – полностью погасить все источники (например, точки люминофора), задающие цвет в нужной точке изображения, – указать для них нулевую яркость.

Если каждый из цветов кодировать с помощью 1 байта (яркость каждого компонента задается числами от 0 до 255), как это принято для реалистического монохромного изображения, появится возможность передавать по 256 оттенков каждого из основных цветов. А всего в этом случае обеспечивается передача 256 · 256 · 256 = 16 777 216 различных цветов, что достаточно близко к реальной чувствительности человеческого глаза. Таким образом, при данной схеме кодирования цвета на изображение 1 пикселя требуется 3 байта или 24 бита памяти. Этот способ представления цветной графики принято называть режимом True Color (true color - истинный цвет) или полноцветным режимом .

Существуют профессиональные устройства (например, сканеры), позволяющие получать изображения, в которых каждый пиксел описывается не тремя, а шестью (16 бит на каждую цветовую составляющую) или даже восемью байтами. Подобные режимы используются для наилучшей передачи оттенков и, что самое главное, яркости точек изображения. Это позволяет наиболее достоверно воспроизводить изображения таких сложных с технической точки зрения сюжетов, как, например, вечерние или рассветные пейзажи.

Рис. 4.1. RGB-цветовая модель, представленная в виде куба

Пример 4.7. В Win32 стандартный тип для представления цветов – COLORREF. Для определения цвета в RGB используется 4 байта в виде:

BB, GG, RR - значение интенсивности соответственно синей, зеленой и красной составляющих цвета. Максимальное их значение - 0xFF.

Тогда определить переменную типа COLORREF можно следующим образом:

COLORREF C = (b,g,r );

b, g и r - интенсивность (в диапазоне от 0 до 255) соответственно синей, зеленой и красной составляющих определяемого цвета C. То есть ярко-красный цвет может быть определен как (255,0,0), ярко-фиолетовый - (255,0,255), черный - (0,0,0), а белый - (255,255,255).

Полноцветный режим требует много памяти. Поэтому памяти разрабатываются различные режимы и графические форматы, которые немного хуже передают цвет, но требуют гораздо меньше памяти. В частности, можно упомянуть режим High Color (high color - богатый цвет), в котором для передачи цвета 1 пикселя используется 16 бит, и, следовательно, можно передать 65 535 цветовых оттенков, а также индексный режим, который базируется на заранее созданной для данного рисунка таблице используемых в нем цветовых оттенков. Затем нужный цвет пикселя выбирается из этой таблицы с помощью номера - индекса, который занимает всего 1 байт памяти. При записи изображения в память компьютера, кроме цвета отдельных точек, необходимо фиксировать много дополнительной информации - размеры рисунка, разрешение, яркость точек и т. д. Конкретный способ кодирования всей требуемой при записи изображения в память компьютера информации образует графический формат. Форматы кодирования графической информации, основанные на передаче цвета каждого отдельного пикселя, из которого состоит изображение, относят к группе растровых, или BMP (Bit MaP - битовая карта), форматов .

Модель CMYK (Cyan, Magenta, Yellow, blacK) субтрактивная схема формирования цвета, используемая прежде всего в полиграфии для стандартной триадной печати. Схема CMYK (рис. 4.2), как правило, обладает сравнительно небольшим цветовым охватом .

Рис. 4.2. Схема субтрактивного синтеза в CMYK

По-русски эти цвета часто называют так: голубой, пурпурный, жёлтый . Цвет в такой схеме зависит не только от спектральных характеристик красителей и от способа их нанесения, но и их количества, характеристик бумаги и других факторов. Например, есть американский, европейский и японский стандарты для мелованной и немелованной бумаг.

Хотя теоретически черный цвет можно получать смешением в равной пропорции пурпурного, голубого и желтого, на практике смешение реальных пурпурного, голубого и желтого цветов дает скорее грязно-коричневый или грязно-серый цвет. Так как чистота и насыщенность черного цвета чрезвычайно важны в печатном процессе, в модель был введен ещё один цвет – черный .

Объяснение первых трех букв в аббревиатуре CMYK дано выше, а по поводу четвертой одна из версий утверждает, что K – сокращение от англ. blacK (если бы взяли B, то возникла бы путаница с моделью RGB, где B – это синий цвет). Согласно этой версии, при выводе полиграфических пленок на них одной буквой указывался цвет, которому они принадлежат. Согласно другому варианту, буква K появилась от сокращения англ. слова Key : в англоязычных странах термином key plate обозначается печатная форма для черной краски.

CMYK называют субтрактивной моделью, потому что эту модель применяют в основном в полиграфии при цветной печати, а бумага и прочие печатные материалы служат поверхностями, отражающими свет: удобнее считать, какое количество света (и цвета) отразилось от той или иной поверхности, нежели – сколько поглотилось. Таким образом, если вычесть из белого три первичных цвета, RGB, мы получим тройку дополнительных цветов CMY. «Субтрактивный» означает «вычитаемый» – мы вычитаем первичные цвета из белого.

Каждое из чисел, определяющее цвет в CMYK, представляет собой процент краски данного цвета, составляющей цветовую комбинацию, Например, для получения темно-оранжевого цвета следует смешать 30 % голубой краски, 45 пурпурной, 80 желтой и 5 % черной краски. Это можно обозначить следующим образом: (30,45,80,5). Иногда пользуются таким обозначением: C30M45Y80K5.

Контрольные вопросы и задания

1. Что называется форматом данных?

2. Как в компьютерах кодируется числовая информация?

3. Как связан диапазона представления целого числа с форматом его хранения.

4. Есть ли различия в отображении положительных чисел в прямом, обратном и дополнительном кодах?

5. Представьте число -78 в прямом, обратном и дополнительном кодах в однобайтовом формате.

6. Как связаны точность и диапазон представления вещественного числа с разрядностью мантиссы?

7. Почему порядок при представлении вещественного числа называют смещенным?

8. Почему при представлении нормализованного вещественного числа не хранят первую цифру мантиссы?

9. Представьте число 34.256 в одинарном формате вещественного числа.

10. Как в компьютерах кодируется текстовая информация?

11. Для чего используются кодовые таблицы? Какие кодовые таблицы вам известны?

12. Чем отличаются базовая таблица ASCII от расширенной?

13. Какие преимущества дает представление текстовой информации в формате Юникод?

14. Дайте определения понятиям пиксель, растр, разрешающая способность .

15. Сколько байт памяти необходимо, чтобы закодировать изображение на экране компьютерного монитора с разрешением 800×600 при 256 цветах?

16. Какие модели формирования цветных изображений вам известны?

17. Какие цвета считаются основными в моделях RGB и CMYK?


5. Основные понятия алгебры логики