Кодирование изображения

Кодирование графических изображений
Графическая информация может быть представлена в двух формах: аналоговой и цифровой.
Аналоговая — например, картина, написанная художником, или детский рисунок карандашами. При рисовании вживую информация передается непрерывно: как мазок кисточкой.
Цифровая — распечатанная на струйном принтере фотография или рисунок на экране смартфона. При цифровой передаче сигнал дискретный, то есть разбитый на отдельные части: как мозайка.
Преобразование из аналоговой формы в цифровую происходит с помощью разбивки изображения на маленькие части. Этот процесс называется дискретизация.
Дискретизация информации — это процесс преобразования непрерывных аналоговых сигналов особым образом, представление целого в виде набора отдельных элементов.
Каждому элементу рисунка назначается конкретное значение в формате двоичного кода, поэтому дискретизация изображения — это и есть его кодирование.
Представь, что ты берешь фотографию и разрезаешь ее на множество маленьких частей. Каждую из них как-то называешь и характеризуешь, а затем записываешь последовательность названий на листок, чтобы при желании можно было собрать фотографию в единое целое. В очень упрощенной форме так и выглядит кодирование аналогового изображения.
При этом создавать и хранить графику в компьютере можно двумя способами: как растровое и как векторное изображение.

Виды кодирования изображений
Их два: растровый и векторный.
1). Растровое кодирование предполагает ту самую дискретизацию: разделение на пиксели.
Пиксель — наименьший неделимый элемент двумерного цифрового изображения прямоугольной или круглой формы, которому задан определенный цвет.
Проще говоря, картинка в растровой графике делится на кучу малюсеньких частей, каждая часть — размером с точку. У этой части есть свой заданный цвет.
Теперь про качество картинки. В растровой графике оно зависит от двух показателей:
1) Размер пикселя (чем меньше размер одной части — тем их больше. Чем больше частей — тем лучше качество изображения)
2) Количество цветов (чем меньше цветов — тем сложнее точно закодировать картинку, чем больше цветов — тем проще).
Особенности растровой графики:
— Просто создавать и кодировать: как мозаику
— Объем файла зависит от размера картинки: чем больше изображение — тем больше пикселей, чем больше пикселей — тем больше нужно кодировать данных.
— Распространенность: растровый формат выведется на любом устройстве, потому что физические элементы матрицы дисплеев, формирующие изображение, также имеют пиксельный формат (состоят из точек).
— Реалистичность: пикселями можно создать и закодировать изображение любой сложности: от небольшого рисунка до «Девятого вала» Айвазовского.
— Низкие возможности масштабирования. Если ты увеличишь растровое изображение — ты увидишь не четкую картинку, а увеличенные пиксели. Если уменьшишь — точки сольются в одну и изображение опять же станет нечетким.
Про цвета точек надо сказать отдельно.
Каждой точке присваивается цвет: так называемый код цвета — та самая характеристика частички мозайки.
Этот код может быть разной длины, то есть разного размера.
У черно-белого изображения информационный объем цветового кода составляет 1 бит: либо точка черная — 1, либо белая — 0).
4 цвета в изображении — 2 бита.
8 цветов — 3 бита, 16 — 4 бита, и для 256 цветов — 8 бит (1 байт).
Примеры растровых форматов файлов:
BMP (без сжатия, но большие размеры файлов), TIFF (для профессиональной печати), GIF (с поддержкой анимации, но ограничением до 256 цветов), PNG (с поддержкой прозрачности), JPEG (для фотографий)
2). Векторное кодирование представляет собой не только точки, а комплекс неделимых графических примитивов: точка, отрезок, эллипс. Каждый примитив описывается формулой (как графики в математике, помнишь их?), и при открывании компьютер рисует изображение как раз по этим формулам.
Хочешь избежать «шакального» изображения при его увеличении? Используй векторную графику!
Особенности векторной графики:
— Меньший объем при хранении (представь, что больше: огромная таблица названий точек, или несколько записанных формул?).
— Размер файла зависит от количества объектов на изображении: чем сложнее изображение — тем больше размер.
— Возможности изменения размера без потери качества (в формулы просто подставляется коэффициент больше или меньше, и линии увеличиваются соответственно).
— Схематичность: простые логотипы и чертежи лучше делать в векторном формате для удобства хранения и использования.
Примеры форматов: SVG, AI, EPS, PDF

Способы и методы
Про форматы кодирования мы поговорили. Теперь рассмотрим способы кодирования цвета.
Есть несколько цветовых моделей, которые используются при кодировании изображений: RGB, CMYK и HSB. Разберемся с ними по порядку.

Цветовая модель RGB
Расшифровывается как Red, Green, Blue — красный, зеленый, синий. Это базовые цвета, которые лежат в основе этой модели.
Выбор именно этих цветов связан с биологией: колбочки в сетчатке глаза человека воспринимают лучше всего именно эти три цвета.
Изображения в модели RGB имеют различную глубину цвета, задаваемой количеством битов, используемых для кодирования одной точки.
Если кодировать одну точку 3 битами — по одному на каждый основной цвет — мы получим 8 различных цветов (смотри таблицу)
Логику увидеть легко: 1 — этот цвет есть, 0 — этого цвета нет. Соответственно, белый — это сочетание всех цветов спектра, 111. Черный — отсутствие всех цветов, 000. Красный — 100, так как это первый из основных цветов модели RGB. А пурпурный — это смесь красного и синего, то есть 101.
Конечно, 8 цветов для кодирования изображения — это мало. Поэтому для кодирования одной точки обычно отводится не 3 бита, а 3 байта, то есть 24 бита — по 1 байту (8 бит) для значения каждого цвета из трех основных: для R — 8 бит, для G – 8 бит, для B – тоже 8 бит.
28 = 256 вариантов значений у одной составляющей, от 0 до 255.
А у одной точки, состоящей из трех составляющих, будет 16 777 216 вариантов значений, то есть цветов.
Такой вариант кодирования называют True Color — правдивые цвета. Наш глаз всё равно не может различить большее количество цветов.
Информация о цвете каждой точки хранится в видеопамяти компьютера. Зная размер изображения, можно посчитать, какой объем памяти для него понадобится.
Примеры:
У нас есть фотография с разрешением 1280*1024. Она закодирована в RGB True Color. Какой объем видеопамяти нам необходим для её хранения?
Вспоминаем, что в данном режиме глубина цвета (то есть объем информации одной точки) составляет 24 бита.
1280 * 1024 = 1310720 точек.
1310720 * 24 = 31457280 бит = 3932160 байт = 3932,16 Кб = 3,9 Мб
Рассчитайте объем памяти, необходимый для хранения растрового изображения размером 64 на 64 пикселя, при условии, что в изображении будут использоваться 256 различных цветов.
Сначала определяем общее количество пикселей в рисунке.
64*64 = 26*26 = 212
Теперь определим объем памяти, требующийся для кодирования одной точки. У нас есть 256 цветов.
256 = 28, то есть нам нужно 8 бит на один пиксель.
212*8 = 212*23 = 215 бит = 22 Кб = 4Кб

Цветовая модель HSB
Расшифровывается как Hue, Saturation, Brightness — тон, насыщенность, яркость
Принцип кодирования похож на RGB. Но если в RGB смешиваются три основных цвета, то в HSB к одному основному тону добавляется разное количество белого и черного цвета.
Н — тон — задается углом на цветовом круге.
S — насыщенность — зависит от количества белого цвета. Чем больше белого — тем ниже насыщенность.
B — яркость — меняется количеством черного. Чем больше черного, тем меньше яркость.

Цветовая модель CMYK
CMYK расшифровывается как Cyan, Magenta, Yellow, Key — голубой, пурпурный, жёлтый, чёрный.
В отличие от RGB и HSB эта модель используется не для вывода изображения на монитор, а для печати (в полиграфии).
В чем разница?
Предыдущие две модели ориентированы на излученный свет, а CMYK — на свет отражающийся от бумаги.
Проще говоря, модель RGB предполагает смесь трех основных цветов чистыми, без какой-либо основы. А CMYK изначально предполагает, что изображение будет напечатано на белой бумаге.
В полиграфии, когда оттенки цвета очень важны, даже небольшое отклонение от запланированного тона при печати может приводить к неприятным последствиям. Представь: печатаешь ты фотографию, а она получается тусклее, чем на экране. Или с каким-то посторонним оттенком.
А если это не фотография, а огромный билборд? И в результате печати текст начинает сливаться с фоном?
Чтобы этого не происходило, в полиграфии используют цветовую модель CMYK.

Мы рассказали всё о процессе, видах и методах кодирования изображений. Самое время проверить, получилось ли у тебя в них разобраться!
Проверь себя
Процесс преобразования непрерывных аналоговых сигналов особым образом, представление целого в виде набора отдельных элементов — это…
— дискретизация информации
— растровое кодирование
— векторное кодирование
В каком пункте верно перечислены особенности векторной графики?
— кодируется формулами, легко масштабируется, размер файла зависит от размера изображения
— кодируется пикселями, сложно масштабируется, размер файла зависит от размера изображения
— кодируется формулами, легко масштабируется, размер файла зависит от сложности изображения
Какой объем памяти нужно зарезервировать для растрового изображения размером 512 на 1024 пикселей, если глубина цвета составляет 32 бита?
— 2048 Кб
— 214 Кб
— 2,4 Кб