Статья Автор: Деникина Н.В., Деникин А.В.

Пиксели × биты

Что компьютер знает о картинке?

Компьютер видит картинку не так, как мы. Для него это просто сетка из точек — пикселей.

Для каждого пикселя нужно запомнить только одно: его цвет.

1. Делим на пиксели

Картинка становится таблицей точек.

2. Кодируем цвет

Каждому пикселю записываем код его цвета.

3. Складываем всё вместе

Коды пикселей идут один за другим.

Поэтому объём картинки — это количество пикселей × количество бит на один пиксель.

Главная формула

Растр: картинка — это таблица пикселей011011001 пиксель = 8 бит1024 × 768 = 786432 пикселей

Сколько пикселей?

Если изображение имеет размер \(X \times Y\), то:

\(K = X \cdot Y\)

\(K\) — количество пикселей.

Сколько бит на пиксель?

\(i\) — глубина цвета: сколько бит нужно для хранения цвета одного пикселя.

\(i = \lceil \log_2 N \rceil\)

Как найти весь объём?

Умножаем количество пикселей на вес одного пикселя.

\(I = K \cdot i\)

\(I\) получаем в битах.

Микропаттерн: пиксели × биты на один пиксель. Это основа почти всех задач про растровые изображения.

Если дана палитра из N цветов

Нужно понять, сколько бит требуется для кодирования одного цвета.

256 цветов

\(2^8 = 256\)
Значит, \(i=8\) бит.

4096 цветов

\(2^{12} = 4096\)
Значит, \(i=12\) бит.

Например, 200 цветов

\(2^7=128\) — мало.
\(2^8=256\) — хватает.
Значит, \(i=8\).

Нужно выбрать минимальное целое \(i\), для которого \(2^i \ge N\).

Важно: 4096 цветов — это не 4096 бит. Для кодирования 4096 вариантов достаточно всего 12 бит.

Пример: афиша фестиваля

Растровое изображение имеет размер 1024 × 768 пикселей и палитру из 256 цветов.

1. Считаем пиксели

\(K = 1024 \cdot 768 = 786432\)

2. Находим глубину

\(256=2^8\)
Значит, \(i=8\).

3. Считаем объём

\(I=786432\cdot8=6291456\) бит.

4. Переводим

\(6291456:8:1024=768\) Кбайт.

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

Пример: видеобуфер

Компьютер поддерживает разрешение 2400 × 1600 пикселей. Каждый пиксель может иметь один из 4096 цветов. Найдём объём видеобуфера в Кбайтах.

Пиксели

\(K=2400\cdot1600=3840000\)

Глубина цвета

\(4096=2^{12}\)
Значит, \(i=12\).

Объём

\(I=3840000\cdot12=46080000\) бит.

Перевод

\(46080000:8:1024=5625\) Кбайт.

Ответ: 5625.

Программное решение

Программа нужна не потому, что формула сложная. Она помогает не ошибиться в больших числах.

1. Запиши данные

Ширину, высоту и количество цветов сохраняем в переменные.

2. Найди i

Нужно узнать, сколько бит требуется на один пиксель.

3. Запиши формулу

\(I=X\cdot Y\cdot i\).

4. Переведи и выведи

Переводи результат только в те единицы, которые просит задача.

Если число цветов не является степенью двойки, используем округление вверх: \(i=\lceil\log_2N\rceil\) .

Например:

  • math.log2(256) → 8;
  • math.log2(200) → примерно 7.64, а math.ceil(...) округляет до 8.

Поэтому в начале программы понадобится: import math.



Вывод программы:

8
6291456
768

Где легко ошибиться

«Разрешение» бывает разным

Если рядом написано пикселей — это размер изображения.
Если рядом написано бит — это глубина цвета.

N цветов — это не N бит

Например, 65536 цветов — это: \(2^{16}=65536\).
Значит, нужно 16 бит.

Палитра не степень двойки

1200 цветов не помещаются в 10 бит: \(2^{10}=1024\) — мало.
Нужно 11 бит.

Забыли количество кадров

Если изображений несколько, сначала найди объём одного, потом умножь на количество кадров.

Есть прозрачность

Если отдельно кодируются цвет и прозрачность, число бит складывается:

\(i=i_{\text{цвет}}+i_{\text{прозрачность}}\)

Регламент для прямой задачи

1. До счёта

  • Выпиши ширину и высоту изображения.
  • Выпиши палитру или глубину цвета.
  • Проверь: один кадр или несколько.

2. Во время счёта

  • Если дана палитра, найди \(i\).
  • Посчитай число пикселей: \(K=X\cdot Y\).
  • Найди объём: \(I=K\cdot i\).

3. Перед ответом

  • Переведи биты в байты: раздели на 8.
  • Затем переводи дальше через 1024.
  • Проверь, что ответ записан именно в тех единицах, которые спрашивают.
Коротко: размеры → число пикселей → глубина цвета → объём в битах → перевод единиц.

Проверь себя


Изображение 640 × 480 пикселей, палитра из 16 цветов. Сколько Кбайт занимает файл? В ответе запишите целое число.


Сколько бит на пиксель нужно для палитры из 1000 цветов?


Изображение 1024 × 1024 пикселя, палитра из 4 цветов. Сколько Кбайт занимает файл? В ответе запишите целое число.


Сопоставьте размер палитры и глубину цвета.


Отметьте верные утверждения про растровое изображение.

Печать