Незнайка
Вся теория
Теория· 9 мин чтения

Кодирование графической информации

Растровое кодирование изображений, глубина цвета, палитра, расчёт объёма графического файла по разрешению и глубине цвета.

В этой статье вы сможете узнать:

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

Растровое кодирование изображения

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

Глубина цвета и количество цветов палитры

Глубина цвета ii — это количество бит, отведённых на кодирование цвета одного пикселя. Максимальное количество цветов NN, которое можно закодировать при данной глубине цвета, связано с ней формулой Хартли:

N=2iN = 2^i

Пример. При глубине цвета 8 бит максимальное количество цветов палитры:

N=28=256N = 2^8 = 256

Пример. Изображение использует палитру из 16 цветов. Какова глубина цвета?

16=2i⇒i=4 бита16 = 2^i \Rightarrow i = 4 \text{ бита}

Если количество цветов палитры не является степенью двойки, глубину цвета, как и в задачах на измерение информации, находят округлением log⁡2N\log_2 N вверх до ближайшего целого.

Модель RGB и глубина цвета для цветных изображений

В модели RGB цвет каждого пикселя складывается из интенсивностей трёх базовых составляющих — красной (Red), зелёной (Green) и синей (Blue). Если на каждую составляющую отводится kk бит, то общая глубина цвета пикселя составляет:

i=3ki = 3k

Пример. В модели RGB на каждую составляющую отводится 8 бит (стандарт True Color). Какова общая глубина цвета и сколько всего цветов можно закодировать?

i=3⋅8=24 битаi = 3 \cdot 8 = 24 \text{ бита} N=224=16 777 216 цветовN = 2^{24} = 16\,777\,216 \text{ цветов}

Расчёт объёма растрового изображения

Информационный объём изображения вычисляется как произведение общего числа пикселей на глубину цвета одного пикселя:

I=W⋅H⋅iI = W \cdot H \cdot i

где WW — ширина изображения в пикселях, HH — высота в пикселях, ii — глубина цвета в битах.

Пример. Изображение имеет размер 800×600800 \times 600 пикселей и глубину цвета 24 бита. Найдите объём изображения в байтах.

I=800⋅600⋅24=11 520 000 бит=11 520 0008=1 440 000 байт≈1406 КбайтI = 800 \cdot 600 \cdot 24 = 11\,520\,000 \text{ бит} = \dfrac{11\,520\,000}{8} = 1\,440\,000 \text{ байт} \approx 1406 \text{ Кбайт}

Как изменение разрешения влияет на количество пикселей

Общее число пикселей изображения равно произведению ширины и высоты: W⋅HW \cdot H. Если увеличить хотя бы один из этих параметров, число пикселей растёт пропорционально этому параметру, а если увеличиваются оба измерения — число пикселей растёт пропорционально произведению коэффициентов их увеличения.

Увеличение только одной стороны. Если ширину увеличить в kk раз, а высоту оставить прежней, число пикселей тоже увеличится ровно в kk раз:

W′⋅H=(k⋅W)⋅H=k⋅(W⋅H)W' \cdot H = (k \cdot W) \cdot H = k \cdot (W \cdot H)

Пропорциональное увеличение обеих сторон. Если и ширину, и высоту увеличить в kk раз (сохранив пропорции изображения), число пикселей увеличится в k2k^2 раз, а не в kk раз:

W′⋅H′=(k⋅W)⋅(k⋅H)=k2⋅(W⋅H)W' \cdot H' = (k \cdot W) \cdot (k \cdot H) = k^2 \cdot (W \cdot H)

Пример. Разрешение изображения увеличили с 400×300400 \times 300 до 800×600800 \times 600 (обе стороны выросли вдвое). Во сколько раз увеличилось число пикселей?

Было: 400⋅300=120 000400 \cdot 300 = 120\,000 пикселей.

Стало: 800⋅600=480 000800 \cdot 600 = 480\,000 пикселей.

480 000120 000=4\dfrac{480\,000}{120\,000} = 4

Ответ: число пикселей увеличилось в 4 раза (то есть в 222^2 раз, так как каждая сторона выросла в 2 раза).

Поскольку объём изображения при неизменной глубине цвета прямо пропорционален числу пикселей (I=W⋅H⋅iI = W \cdot H \cdot i), увеличение обеих сторон вдвое увеличивает не только число пикселей, но и объём файла в 4 раза — это частая причина ошибки, когда учащиеся ожидают увеличения объёма только в 2 раза.

Что такое PPI и DPI

PPI (pixels per inch, «пикселей на дюйм») — это характеристика цифрового изображения, показывающая, сколько пикселей приходится на один линейный дюйм при отображении или печати изображения. PPI связывает разрешение изображения в пикселях с его физическим размером:

Wдюймы=WпикселиPPI,Hдюймы=HпикселиPPIW_{\text{дюймы}} = \dfrac{W_{\text{пиксели}}}{\text{PPI}}, \qquad H_{\text{дюймы}} = \dfrac{H_{\text{пиксели}}}{\text{PPI}}

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

Wпиксели=Wдюймы⋅PPI,Hпиксели=Hдюймы⋅PPIW_{\text{пиксели}} = W_{\text{дюймы}} \cdot \text{PPI}, \qquad H_{\text{пиксели}} = H_{\text{дюймы}} \cdot \text{PPI}

Пример. Изображение размером 4×3 дюйма нужно подготовить для печати сначала при плотности 100 PPI, а затем при плотности 300 PPI. Сколько пикселей потребуется в каждом случае?

При 100 PPI: W=4⋅100=400W = 4 \cdot 100 = 400, H=3⋅100=300H = 3 \cdot 100 = 300, всего 400⋅300=120 000400 \cdot 300 = 120\,000 пикселей.

При 300 PPI: W=4⋅300=1200W = 4 \cdot 300 = 1200, H=3⋅300=900H = 3 \cdot 300 = 900, всего 1200⋅900=1 080 0001200 \cdot 900 = 1\,080\,000 пикселей.

Плотность выросла в 3 раза (с 100 до 300 PPI), а количество пикселей выросло в 9 раз (1 080 000/120 000=9=321\,080\,000 / 120\,000 = 9 = 3^2) — поскольку пиксели заполняют двумерную площадь, число пикселей растёт пропорционально квадрату отношения плотностей.

Поскольку объём файла при неизменной глубине цвета прямо пропорционален числу пикселей, увеличение PPI при сохранении физического размера изображения увеличивает не только чёткость картинки, но и объём файла — причём в квадратичной, а не линейной зависимости от изменения плотности.

DPI (dots per inch, «точек на дюйм») — характеристика печатающего устройства (принтера, сканера), показывающая, сколько физических точек краски или сканирования оно способно разместить на одном дюйме. В отличие от PPI, которая описывает само цифровое изображение и его пиксельную сетку, DPI — это техническая характеристика устройства вывода или ввода изображения; на практике эти термины часто используют как взаимозаменяемые, но в задачах ЕГЭ важно различать: PPI — параметр изображения, DPI — параметр устройства.

Определение параметров изображения по его объёму

Если известен общий объём файла и один из параметров (например, разрешение или глубина цвета), можно найти недостающую величину, разделив известный объём на произведение остальных параметров.

Пример. Файл изображения занимает 256 Кбайт, разрешение изображения 512×512512 \times 512 пикселей. Найдите глубину цвета.

Переводим объём в биты: 256⋅1024⋅8=2 097 152256 \cdot 1024 \cdot 8 = 2\,097\,152 бита.

Находим глубину цвета: i=2 097 152512⋅512=2 097 152262 144=8i = \dfrac{2\,097\,152}{512 \cdot 512} = \dfrac{2\,097\,152}{262\,144} = 8 бит.

Ответ: глубина цвета составляет 8 бит.

Алгоритм решения задач на кодирование изображений

  1. Определите, что дано в задаче: разрешение (ширина и высота в пикселях), глубина цвета, количество цветов палитры или общий объём файла.
  2. Если дано количество цветов палитры, а нужна глубина цвета — используйте формулу i=log⁡2Ni = \log_2 N (округляя вверх, если NN не степень двойки).
  3. Если нужно найти общий объём изображения — перемножьте ширину, высоту и глубину цвета: I=W⋅H⋅iI = W \cdot H \cdot i.
  4. Если дан общий объём и нужно найти одну из неизвестных величин — разделите объём (в тех же единицах измерения) на произведение остальных известных величин.
  5. Не забывайте переводить биты в байты (делением на 8) и байты в килобайты/мегабайты (делением на 1024) при необходимости.

Примеры решения

Пример 1. Изображение размером 1024×7681024 \times 768 пикселей закодировано с глубиной цвета 16 бит. Найдите объём изображения в Кбайтах.

I=1024⋅768⋅16=12 582 912 бит=1 572 864 байт=1536 КбайтI = 1024 \cdot 768 \cdot 16 = 12\,582\,912 \text{ бит} = 1\,572\,864 \text{ байт} = 1536 \text{ Кбайт}

Ответ: 1536 Кбайт.

Пример 2. Палитра изображения содержит 64 цвета. Изображение имеет размер 200×150200 \times 150 пикселей. Найдите объём изображения в байтах.

Находим глубину цвета: 64=2i⇒i=664 = 2^i \Rightarrow i = 6 бит.

Находим объём: I=200⋅150⋅6=180 000I = 200 \cdot 150 \cdot 6 = 180\,000 бит =22 500= 22\,500 байт.

Ответ: 22 500 байт.

Пример 3. Объём несжатого изображения составляет 256 Кбайт, глубина цвета — 8 бит, ширина — 256 пикселей. Найдите высоту изображения.

Переводим объём в биты: 256⋅1024⋅8=2 097 152256 \cdot 1024 \cdot 8 = 2\,097\,152 бита.

Находим общее число пикселей: 2 097 1528=262 144\dfrac{2\,097\,152}{8} = 262\,144.

Находим высоту: H=262 144256=1024H = \dfrac{262\,144}{256} = 1024.

Ответ: высота изображения — 1024 пикселя.

Часто задаваемые вопросы

Почему глубина цвета для модели RGB True Color равна именно 24 битам? Потому что в этой модели цвет пикселя складывается из трёх составляющих (красная, зелёная, синяя), и на каждую из них по стандарту True Color отводится 8 бит — в сумме получается 3×8=243 \times 8 = 24 бита, что позволяет закодировать более 16 миллионов различных оттенков.

Что делать, если количество цветов палитры не является степенью двойки? Нужно округлить значение log⁡2N\log_2 N вверх до ближайшего целого числа бит — так же, как при определении числа бит на символ алфавита в задачах на измерение информации, поскольку глубина цвета физически не может быть нецелым числом бит.

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

Учитывает ли формула I=W⋅H⋅iI = W \cdot H \cdot i сжатие изображения (например, в формате JPEG)? Нет, эта формула рассчитывает объём несжатого растрового изображения — реальные файлы в форматах со сжатием (JPEG, PNG) обычно занимают меньше места за счёт алгоритмов сжатия, которые не учитываются в базовой формуле, применяемой в задачах ЕГЭ.

Похожие темы для изучения

  • Кодирование и измерение информации
  • Кодирование текстовой информации
  • Кодирование звуковой информации
  • Системы счисления: перевод чисел между системами

Задачи для самостоятельного решения

  1. Изображение размером 640×480640 \times 480 пикселей имеет глубину цвета 8 бит. Найдите объём изображения в Кбайтах.
  2. Палитра изображения содержит 32 цвета. Найдите глубину цвета.
  3. Изображение занимает 2 Мбайта, глубина цвета — 16 бит. Сколько всего пикселей в изображении?
  4. Изображение размером 500×500500 \times 500 пикселей закодировано в модели RGB True Color. Найдите объём изображения в байтах.
  5. Найдите максимальное количество цветов, которое можно закодировать при глубине цвета 10 бит.
  6. Объясните, почему увеличение глубины цвета с 8 до 16 бит не увеличивает объём изображения ровно в 16 раз.
  7. Изображение имеет разрешение 2400×18002400 \times 1800 пикселей и плотность 300 PPI. Найдите его физический размер в дюймах при печати.
  8. Объясните, чем PPI отличается от DPI и почему увеличение PPI не меняет объём файла изображения.