Кодирование цвета. Кодирование графической информации_10 класс_Урок информатики Что такое режим истинного цвета

Для Андроид 05.02.2021
Для Андроид

24-битный цвет (являющийся подмножеством TrueColor англ. «истинный цвет» ) в компьютерной графике - метод представления и хранения изображения, позволяющий отобразить большое количество цветов , полутонов и оттенков. Цвет представляется с использованием 256 уровней для каждой из трёх компонент модели RGB : красного(R), зелёного(G) и синего(B), что в результате даёт 16 777 216 (2 24) различных цветов.

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

Количество бит при оцифровке сигнала

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

Цвет с 256 уровнями на канал хранится в гамма-корректированом виде, в то время как с пикселей камеры оцифровывается сигнал в линейном виде. Он обычно и хранится в сырых данных камеры в формате Raw .

Напишите отзыв о статье "TrueColor"

Примечания

Отрывок, характеризующий TrueColor

Графиня так устала от визитов, что не велела принимать больше никого, и швейцару приказано было только звать непременно кушать всех, кто будет еще приезжать с поздравлениями. Графине хотелось с глазу на глаз поговорить с другом своего детства, княгиней Анной Михайловной, которую она не видала хорошенько с ее приезда из Петербурга. Анна Михайловна, с своим исплаканным и приятным лицом, подвинулась ближе к креслу графини.
– С тобой я буду совершенно откровенна, – сказала Анна Михайловна. – Уж мало нас осталось, старых друзей! От этого я так и дорожу твоею дружбой.
Анна Михайловна посмотрела на Веру и остановилась. Графиня пожала руку своему другу.
– Вера, – сказала графиня, обращаясь к старшей дочери, очевидно, нелюбимой. – Как у вас ни на что понятия нет? Разве ты не чувствуешь, что ты здесь лишняя? Поди к сестрам, или…
Красивая Вера презрительно улыбнулась, видимо не чувствуя ни малейшего оскорбления.
– Ежели бы вы мне сказали давно, маменька, я бы тотчас ушла, – сказала она, и пошла в свою комнату.
Но, проходя мимо диванной, она заметила, что в ней у двух окошек симметрично сидели две пары. Она остановилась и презрительно улыбнулась. Соня сидела близко подле Николая, который переписывал ей стихи, в первый раз сочиненные им. Борис с Наташей сидели у другого окна и замолчали, когда вошла Вера. Соня и Наташа с виноватыми и счастливыми лицами взглянули на Веру.
Весело и трогательно было смотреть на этих влюбленных девочек, но вид их, очевидно, не возбуждал в Вере приятного чувства.
– Сколько раз я вас просила, – сказала она, – не брать моих вещей, у вас есть своя комната.
Она взяла от Николая чернильницу.
– Сейчас, сейчас, – сказал он, мокая перо.
– Вы всё умеете делать не во время, – сказала Вера. – То прибежали в гостиную, так что всем совестно сделалось за вас.
Несмотря на то, или именно потому, что сказанное ею было совершенно справедливо, никто ей не отвечал, и все четверо только переглядывались между собой. Она медлила в комнате с чернильницей в руке.

а) б)

Рисунок 6.3 – Растровый рисунок

а) растр; б) моделирование рисунка

Растровый рисунок – это набор пикселей-квадратиков. Размер квадратика определяется разрешением . Разрешение – это количество пикселей, приходящихся на единицу длины изображения. Разрешение измеряется в пикселях на дюйм, ppi – pixels per inch. Например, разрешение 254 ppi означает, что на 1 дюйм (25,4 мм) приходится 254 пикселя, так что каждый пиксель имеет размер 0,1 ∙ 0,1 мм. Чем больше разрешение, тем точнее (чётче) моделируется рисунок.

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

Каждый пиксель кодируется указанием цвета. Например, для черно-белого рисунка, белый цвет – 1, черный цвет – 0. Тогда рисунок 6.3 можно закодировать матрицей 49, первые три строки которой, заполненные кодами, показаны ниже:

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

синий
красный

Рисунок 6.4 – Кодирование цветного растрового рисунка;

а) растровый рисунок; б) матрица кодирования рисунка

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

6.2.1 Кодирование цвета на экране

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



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

Чтобы сделать светло-красный (розовый) цвет, нужно в красном цвете (255,0,0) одинаково увеличить яркость зеленого и синего цветов, например, (255, 155, 155) – это розовый цвет. Это можно проверить в редакторе MSWord, инструмент – цвет текста - другие цвета… - спектр (рисунок 6.5,б).

а) б)


Рисунок 6.5 – Модель цвета RGB;

а) модель RGB; б) инструмент “цвет текста” в MSWord

Коды некоторых цветов представлены ниже в таблице 6.1.

Таблица 6.1 – Коды цветов

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



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

Каждому пикселю отводится от 1 бита до 3 байтов видеопамяти (изображение формируется в видеопамяти ). Например:

Монохромный режим, 2 цвета (черно-белый) – 1 бит (рисунок 6.3, б).

Цветной режим, 8 цветов – 3 бит. Red=0; 1. Green=0; 1. Blue=0; 1. RGB= 2 3 = 8.

Цветной режим, 16 цветов – 4 бит; i = 0; 1 – интенсивность (яркий, тусклый); i RGB = 2∙2 3 = 2 4 = 16 (таблица 6.2).

Цветной режим, 256 цветов – 8 бит; i = 00000 ,…, 11111 = = 2 5 = 32 градации интенсивности; i RGB = 2 5 * 2 3 = 2 8 = 256.

Или по 2 градации интенсивности и по 2 цвета RGB
i 2 R 2 G 2 B 2 = 4*4*4*4 =2 8 = 256 (таблица 6.3).

Цветной режим, 16 млн. цветов – 3 байта = 24 бит
(рисунок 6.5, б).

Таблица 6.2 – Коды для формирования 16 цветов

Цвет i RGB
Black (черный)
Blue (синий)
Green (зеленый)
Cyan (сине–зеленый)
Red (красный)
Magenta (фиолетовый)
Brown (коричневый)
Light Gray (светло–серый)
Dark Gray (темно–серый)
Light Blue (ярко–синий)
Light Green (ярко–зеленый)
Light Cyan (бирюзовый)
Light Red (ярко–красный)
Light Magenta (лиловый)
Yellow (желтый)
White (белый)

Таблица 6.3 – Коды для формирования 256 цветов

i R G B
∙∙∙ ∙∙∙ ∙∙∙ ∙∙∙

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

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

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

Таблица 6.4 – Глубина цвета и количество цветов

Как правило, чем меньше цветов используется, тем больше будет искажаться цветное изображение. Таким образом, при кодировании цвета тоже есть неизбежная потеря информации, которая «добавляется» к потерям, вызванным дискретизацией. Дискретизация возникает при замене рисунка набором пикселей-квадратиков. Однако при увеличении количества используемых цветов одновременно растет объем файла. Например, в режиме истинного цвета файл получится в два раза больше, чем при
12-битном кодировании.

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

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

Размер палитры – это количество байт, указывающие цвета палитры.

Например, черно-белая палитра, всего 2 цвета (рисунок 6.3):

ü черный: RGB-код (0,0,0); двоичный код 0 2 ;

ü белый: RGB-код (255,255,255); двоичный код 1 2 .

Здесь размер палитры 6 байт.

Кодирование изображения флага, четыре цвета (рисунок 6.4):

ü черный: RGB-код (0,0,0); двоичный код 00 2 ;

ü красный: RGB-код (255,0,0); двоичный код 01 2 ;

ü синий: RGB-код (0,0,255); двоичный код 10 2 ;

ü белый: RGB-код (255,255,255); двоичный код 11 2 .

Здесь размер палитры 12 байт.

Ниже приведены данные по некоторым вариантам кодирования с палитрой (Таблица 6.5).

Таблица 6.5 – Варианты кодирования с палитрой

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

Таблица 6.6 – Объем видеопамяти

6.2.2 Кодирование цвета на бумаге

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

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

Отметим синонимы цветов: фиолетовый = пурпурный.

Ниже показаны соотношения падающего и отраженного цветов (Таблица 6.7).

Таблица 6.7 – Соотношения падающего и отраженного цветов

На трех дополнительных цветах – голубом, фиолетовом и желтом – строится цветовая модель CMY (англ. Cyan – голубой, Magenta – фиолетовый, Yellow – желтый), которая применяется для вывода на печать (рисунок 6.6,б). Таким образом, модели цветов RGB и CMY - обратимы (рисунок 6.7). Рисунок в цвете показан в приложении.

Рисунок 6.6 – Модели цветов;

а) модель RGB (для монитора); б) модельCMY (для принтера)

Рисунок 6.7 – Обратимые модели цветов

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

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

Чтобы решить эту проблему, в набор красок добавляют черную, это так называемый ключевой цвет (англ. Keycolor ), поэтому получившуюся модель обозначают CMYK .

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

6.3 Особенности растрового кодирования

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

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

ü универсальный метод (можно закодировать любое изображение);

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

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

ü при дискретизации всегда есть потеря информации;

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

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

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

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

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

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

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

6.4 Замечание о кодировании файла

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

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

6.5 Вопросы и задания

1. Какие два принципа кодирования рисунков используются в компьютерной технике?

2. Почему не удается придумать единый метод кодирования рисунков, пригодный во всех ситуациях?

3. В чем состоит идея растрового кодирования?
Что такое растр?

4. В чем состоит идея векторного кодирования? Что такое графический примитив?

5. Что такое пиксель? Как образовалось такое слово?

6. Что такое дискретизация рисунка? Почему она необходима?

7. Что теряется при дискретизации рисунка?

8. Что такое разрешение (экрана, принтера)? В каких единицах оно измеряется?

9. Что такое глубина цвета? В каких единицах она
измеряется?

10. Что такое режим истинного цвета (True Color)?

11. Что такое режим «высокого» цвета (High Color)?

12. Что такое кодирование с палитрой? В чем его принципиальное отличие от режима истинного цвета?

13. В чем состоят достоинства и недостатки растрового кодирования?

14. В чем состоят достоинства и недостатки векторного кодирования?

15. В каких форматах целесообразно сохранять фотографии?

16. В каких форматах целесообразно сохранять чертежи, рисунки с четкими границами?

17. Как запишется код следующего рисунка? Черно-белое растровое изображение кодируется построчно, начиная с левого верхнего угла и заканчивается в правом нижнем углу. При кодировании 0 обозначает черный цвет, а 1 – белый.

Решение. Запись кода изображения будет следующая:

010100 011111 101010 011101 = 010100011111101010011101 2 =

24375235 8 = 51FAD 16 .


Список использованных источников

1. Андреева Е. В. Математические основы информатики: учеб. пособие / Е. В. Андреева, Л. Л. Босова, И. Н. Фалина. – М. : БИНОМ. Лаборатория знаний, 2007.

2. Поспелов Д. А. Арифметические основы вычислительных машин дискретного действия / Д. А. Поспелов. – М. : Энергия, 1970.

3. Савельев А. Я. Арифметические и логические основы цифровых автоматов / А. Я. Савельев. – М. : Высшая школа, 1980.

4. Поздняков С. Н. Дискретная математика: учебник
/ С. Н. Поздняков, С. В. Рыбин. – М. : Академия, 2008.

5. Хартли Р. В. Л. Передача информации / Р. В. Л. Хартли
// Теория информации и ее приложения. – М. : Физматгиз, 1959.

6. Шеннон К. Математическая теория связи. (Shannon C.E. A Matematical Theory of Communication. Bell System Technical Journal. – 1948. – c. 379-423, 623-656).

7. Юшкевич А. П. История математики в средние века
/ А. П. Юшкевич. – М. : Физматгиз, 1961.

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

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)

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

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

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

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

Рисунок 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$ на практике не используются.

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

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

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

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

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

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

Что делать, если рисунок цветной? В этом случае для кодирования цвета пикселя уже не обойтись одним битом. Например, в показанном на рисунке изображении российского флага 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». Кроме того, в заголовке указывается размер рисунка и его характеристики, например, количество цветов в палитре, способ сжатия и т.п.

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



Рекомендуем почитать

Наверх