Что такое кодирование цвета в компьютере
15 декабря 2020 mob25
На этом шаге мы рассмотрим общие вопросы, связанные с кодированием цвета.
Для того чтобы компьютер имел возможность работать с цветными изображениями, необходимо представлять цвета в виде чисел - кодировать цвет.
Способ кодирования зависит от цветовой модели и формата числовых данных в компьютере.
Для модели RGB каждая из компонент может представляться числами, ограниченными некоторым диапазоном - например, дробными числами
от 0 до 1 либо целыми числами от 0 до некоторого максимального значения. В настоящее время достаточно распространенным является формат
True Color, в котором каждая компонента представлена в виде байта, что дает 256 градаций для каждой компоненты: R=0. 255, G = 0. 255, В = 0. 255.
Количество цветов составляет 256*256*256 = 16.7 млн (224).
Такой способ кодирования цветов можно назвать компонентным. В компьютере коды изображений True Color представляются
в виде троек байтов, либо упаковываются в длинное целое (четырехбайтное) - 32 бита (так, например, сделано в API Windows):
При работе с изображениями в системах компьютерной графики часто приходится искать компромисс между качеством изображения (требуется как
можно больше цветов) и ресурсами, необходимыми для хранения и воспроизведения изображения, исчисляемыми, например, объемом памяти (надо
уменьшать количество бит на пиксель).
Кроме того, некоторое изображение само по себе может использовать ограниченное количество цветов. Например, для черчения может быть достаточно
двух цветов, для человеческого лица важны оттенки розового, желтого, пурпурного, красного, зеленого; а для неба - оттенки голубого и серого. В этих
случаях использование полноцветного кодирования цвета является избыточным.
При ограничении количества цветов используют палитру, представляющую набор цветов, важных для данного изображения. Палитру можно воспринимать
как таблицу цветов. Палитра устанавливает взаимосвязь между кодом цвета и его компонентами в выбранной цветовой модели.
В качестве примера дадим стандартную палитру дисплейных 16-цветных видеорежимов EGA, VGA (таблица 1).
Таблица 1. Палитра дисплейных 16-цветных видеорежимов EGA, VGA
Код цвета | R | G | B | Название цвета |
---|---|---|---|---|
0 | 0 | 0 | 0 | Черный |
1 | 120 | 0 | 0 | Темно-красный |
2 | 0 | 128 | 0 | Зеленый |
3 | 128 | 128 | 0 | Коричнево-зеленый |
4 | 0 | 0 | 128 | Темно-синий |
5 | 128 | 0 | 128 | Темно-пурпурный |
6 | 0 | 128 | 128 | Сине-зеленый |
7 | 128 | 128 | 128 | Серый 50% |
8 | 192 | 192 | 192 | Серый 25% |
9 | 255 | 0 | 0 | Красный |
10 | 0 | 255 | 0 | Ярко-зеленый |
11 | 255 | 255 | 0 | Желтый |
12 | 0 | 0 | 255 | Синий |
13 | 255 | 0 | 255 | Пурпурный |
14 | 0 | 255 | 255 | Голубой |
15 | 255 | 255 | 255 | Белый |
Недостатком такой палитры можно считать отсутствие одного из важных цветов - оранжевого. Существуют также иные стандартные палитры,
например, 256-цветная для VGA. Компьютерные видеосистемы обычно предоставляют возможность программисту установить собственную палитру.
Каждый цвет изображения, использующего палитру, кодируется индексом, который будет определять номер строки в таблице палитры. Поэтому такой
способ кодирования цвета называют индексным.
На следующем шаге мы рассмотрим формат файлов для хранения растровых изображений.
В статье «Кодирование текстовой информации» объясняется, что один байт позволяет закодировать 256 различных значений и эта кодировка будет однозначно восприниматься компьютером.
В число этих значений входят, как мы помним из этой статьи, русские и английские буквы (как заглавные, так и прописные), знаки препинания и специальные символы.
Давайте теперь посмотрим с точки зрения компьютерной грамотности, как обстоит дело с кодированием цвета.
Понятно, что если использовать один байт, то можно закодировать 256 различных цветов. Для рисованных изображений таких как, например, в мультфильмах «Ну, погоди!», «Карлсон, который живет на крыше» этого вполне хватит. Но маловато будет для качественных изображений живой природы и им подобных. Человеческий глаз вполне может различать десятки миллионов цветовых оттенков.
Теперь давайте попробуем для кодирования цвета одной точки взять 3 байта (то есть 24 бита). Тогда количество возможных цветов увеличится еще: 256x256x256=16.777.216 (примерно 16,5 миллионов). Результат получается по качеству, сравнимый с живой природой.
Любой цвет можно представить в виде комбинации трех основных цветов: красного, зеленого и синего (цветовые составляющие). Способ разделения цвета на составляющие компоненты называется цветовой моделью. Ниже мы рассмотрим две цветовых модели: RGB и CMYK.
Цветовая модель RGB
При кодировании цвета точки с помощью трех байтов получается, что первый байт является красной составляющей, второй байт – зеленой, а третий – синей составляющей. Чем больше значение байта цветовой составляющей (в пределах от 0 до 255), тем ярче будет цвет.
Белый цвет. Точка белого цвета имеет все цветовые составляющие, и они имеют полную яркость: R (red – красный) = 255, G (green зеленый) = 255, B (blue – синий) = 255. Такая кодировка сокращенно называется по первым буквам спектра – RGB. Красный, синий и зеленый цвета удобны при воспроизведении цветов на мониторах компьютеров. Они устроены таким образом, что воспроизводят цвета путем «перемешивания» именно этих составляющих.
Цветовая модель CMYK
Несколько иначе кодируются цвета при распечатке картинок и текстов на цветном принтере. В принтерах технологически удобнее использовать другие цветовые составляющие. Это – составляющие, которые получаются при смешении красного с синим (лиловый), красного с зеленым (желтый) и синего с зеленым (голубой).
Таким образом, в цветных принтерах для воспроизводства всех 16 млн. цветов применяются 3 цветных картриджа: голубой – Cyan, лиловый – Magenta и желтый – Yellow. Для печати всех оттенков серого цвета часто применяется также черный (Black) картридж, в таких принтерах число картриджей составляет 4. Такая цветовая модель называется CMYK. Чтобы Black не путать с Blue из модели RGB, из слова Black берется последняя буква, входящая в название CMYK тоже последней.
Соответственно, при печати цветных изображений и текстов цвета перекодируются из кодировки «красный-зеленый-синий» в кодировку «голубой-магента-желтый». Эти операции выполняют драйверы (системные программы), обслуживающие цветные принтеры, а также некоторые прикладные профессиональные программы.
Следует отметить, что при нарушениях в настройках указанных драйверов или прикладных программ цвета при печати могут отличаться от цветов, которые мы видим на экране монитора. Это исправляется путем включения автоматических настроек или путем тщательной ручной настройки драйверов.
Цвет на экране получается при суммировании лучей трёх основных цветов — красного, зелёного и синего. Если интенсивность каждого из них достигает \(100\), то получается белый цвет. Минимальная интенсивность трёх базовых цветов даёт чёрный цвет.
Для описания каждого составляющего цвета требуется \(1\) байт (\(8\) бит) памяти, а чтобы описать один цвет, требуется \(3\) байта, т.е. \(24\) бита, памяти.
Для кодирования одного цвета пикселя определяется длина двоичного кода, которая называется глубиной цвета . Рассчитать глубину цвета можно по формуле: N = 2 i , где N —количество цветов в палитре, i — глубина цвета. Интенсивность каждого из трёх цветов — это один байт (т.е. число в диапазоне от \(0\) до \(255\)), т.е. каждая составляющая может принимать \(256\) значений. Таким образом, с использованием трёх составляющих можно описать \(256⋅256⋅256 = 16777216 \)различных цветовых оттенков, а, значит, модель RGB имеет приблизительно \(16,7\) миллионов различных цветов.Таким количеством цветов определяется, в основном, палитра современного монитора.
При печати изображений на принтерах используется цветовая модель, основными красками в которой являются голубая (Cyan), пурпурная (Magenta) и жёлтая (Yellow).
Чтобы получить чёрный цвет, в цветовую модель был включен компонент чистого чёрного цвета (BlacK). Так получается четырёхцветная модель, называемая CMYK .
Область применения цветовой модели CMYK — полноцветная печать. Именно с этой моделью работает большинство устройств печати.Из-за несоответствия цветовых моделей часто возникает ситуация, когда цвет, который нужно напечатать, не может быть воспроизведен с помощью модели CMYK (например, золотой или серебряный). В этом случае применяются краски Pantone.
Все файлы, предназначенные для вывода в типографии, должны быть конвертированы в CMYK . Этот процесс называется цветоделением .
При просмотре CMYK -изображения на экране монитора одни и те же цвета могут восприниматься немного иначе, чем при просмотре RGB -изображения.
В модели CMYK невозможно отобразить очень яркие цвета модели RGB , модель RGB , в свою очередь, не способна передать тёмные густые оттенки модели CMYK , поскольку природа цвета разная.
Отображение цвета на экране монитора часто меняется и зависит от особенностей освещения, температуры монитора и цвета окружающих предметов. Кроме того, многие цвета, видимые в реальной жизни, не могут быть выведены при печати, не все цвета, отображаемые на экране, могут быть напечатаны, а некоторые цвета печати не видны на экране монитора.
Большую часть информации человек получает с помощью зрения и слуха. Важность этих органов чувств обусловлена развитием человека как биологического вида, поэтому человеческий мозг с большой скоростью способен обрабатывать огромное количество графической и звуковой информации.
С появлением компьютеров возникла огромная потребность научить их обрабатывать такую информацию. Как же такую информацию может обработать компьютер?
Итак, кодирование графической информации осуществляется двумя различными способами: векторным и растровым
Программы, работающие с векторной графикой, хранят информацию об объектах, составляющих изображение в виде графических примитивов: прямых линий, дуг окружностей, прямоугольников, закрасок и т.д.
Достоинства векторной графики:
— Преобразования без искажений.
— Маленький графический файл.
— Рисовать быстро и просто.
— Независимое редактирование частей рисунка.
— Высокая точность прорисовки.
— Редактор быстро выполняет операции.
Недостатки векторной графики:
— Векторные изображения выглядят искусственно.
— Ограниченность в живописных средствах.
Программы растровой графики работают с точками экрана (пикселями). Это называется пространственной дискретизацией.
КОДИРОВАНИЕ РАСТРОВОЙ ГРАФИКИ
Давайте более подробно рассмотрим растровое кодирование информации.
Компьютер запоминает цвет каждой точки, а пользователь из таких точек собирает рисунок.
При этом зная количество пикселей по вертикале и горизонтали, мы сможем найти — разрешающую способность изображения.
Разрешающая способность находится по формуле:
где n, m — количество пикселей в изображении по вертикали и горизонтали.
В процессе дискретизации каждый пиксель может принимать различные цвета из палитры цветов. При этом зная количество цветов, которые можно использовать в палитре и воспользовавшись формулой Хартли, мы сможем найти количество информации, которое используется для кодирования цвета точки, что мы будем называть глубиной цвета.
где N — количество цветов в палитре;
i — глубина цвета.
Таким образом, чтобы найти вес изображения достаточно перемножить разрешающую способность изображения на глубину цвета: L=P*i.
Каким именно образом возможно закодировать пиксель? Для этого используются кодировочные палитры.
КОДИРОВОЧНАЯ ПАЛИТРА RGB
Когда художник рисует картину, цвета он выбирает по своему вкусу. Но цвет в компьютере надо стандартизировать, чтобы его можно было распознать. Поэтому надо определить, что такое каждый цвет.
В экспериментах по производству цветных стекол М. В. Ломоносов показал, что получить любой цвет возможно, используя три различных цвета.
Этот факт был обобщен Германом Грассманом в виде законов аддитивного синтеза цвета.
Давайте рассмотрим два из этих законов:
— Закон трехмерности. С помощью трех независимых цветов можно, смешивая их в однозначно определенной пропорции, выразить любой цвет.
— Закон непрерывности. При непрерывном изменении пропорции, в которой взяты компоненты цветовой смеси, получаемый цвет также меняется непрерывно.
Из биологии вы знаете, что рецепторы человеческого глаза делятся на две группы: палочки и колбочки. Палочки более чувствительны к интенсивности поступаемого света, а колбочки — к длине волны.
Если посмотреть, как распределяется количество колбочек по тому, на какую длину волны они «настроены», то количество колбочек «настроенных» на синий, красный и зеленый цвета окажется больше.
Поэтому такие цвета были взяты основными для построения цветовой модели, которая получила название RGB (Red, Green, Blue). То есть задавая количество любого из этих трех цветов, можно получить любой другой. Для кодирования каждого цвета было выделено 8 бит (режим True-Color). Таким образом, количество каждого цвета может изменяться от 0 до 255, часто это количество выражается в шестнадцатеричной системе счисления (от 0 до FF).
Так как описание цвета происходит определением трех величин, то это наводит на мысль считать их координатами точки в пространстве. Получается, что координаты цветов заполняют куб.
При этом яркость цвета определяется тем насколько близка к максимальному значению хотя бы одна координата из трех.
Поскольку именно модель RGB соответствовала основному механизму формирования цветного изображения на экране, большинство графических файлов хранят изображение именно в этой кодировке. Если же используется другая модель, например в JPEG , то приходится при выводе информации на экран преобразовывать данные.
КОДИРОВАНИЕ ЗВУКОВОЙ ИНФОРМАЦИИ
Давайте перейдем к кодированию звуковой информации.
Из курса физики вам всем известно, что звук — это непрерывная волна с изменяющейся амплитудой и частотой.
Для того, чтобы компьютер мог обрабатывать непрерывный звуковой сигнал, он должен быть дискретизирован, т. е. превращен в последовательность электрических импульсов (двоичных нулей и единиц).
Для этого звуковая волна разбивается на отдельные временные участки.
Гладкая кривая заменяется последовательностью «ступенек». Каждой «ступеньке» присваивается значение громкости звука. Чем больше количество уровней громкости, тем больше количество информации будет нести значение каждого уровня и более качественным будет звучание. Причем, чем больше будет количество измерений уровня звукового сигнала в единицу времени, тем качественнее будет звучание. Эта характеристика называется частотой дискретизации Данная характеристика измеряется в Гц.
При этом на каждое измерение выделяется одинаковое количество бит. Такая характеристика называется — глубина кодирования.
Таким образом, чтобы подсчитать вес звуковой волны достаточно перемножить частоту дискретизации, глубины кодирования и времени звучания такого звука. При этом, рассматривая современное звучание, количество звуковых волн может быть различное, например, для стереозвука — это 2, а для квадрозвука — 4.
Читайте также: