8-916-722-04-28ТелВКонтактеВКTelegramTgMAXMAX Пробный урокПробный урок

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

Растровое представление изображений

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

Разрешение изображения

Разрешением растрового изображения называют количество пикселей по горизонтали и по вертикали, например 1920×1080. Чем больше пикселей приходится на изображение при том же физическом размере, тем выше детализация картинки, но тем больше памяти требуется для её хранения. Общее количество пикселей изображения равно произведению ширины M на высоту N в пикселях.

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

Чтобы закодировать цвет одного пикселя, под него отводят определённое количество бит — эту величину называют глубиной цвета (или битовой глубиной), обозначим её i. Чем больше бит выделено на пиксель, тем больше различных цветов или оттенков серого можно закодировать. Максимальное количество цветов K, которое можно получить при глубине цвета i бит, вычисляется по уже знакомой формуле Хартли (здесь она выступает как формула количества цветов палитры):

K=2i

Обратная формула позволяет найти необходимую глубину цвета по известному количеству цветов палитры:

i=log2K

Пример 1. Вычисление глубины цвета

Дано: изображение хранится с палитрой, включающей 256 цветов. Определите глубину цвета.

Решение. Применяем формулу i=log₂K:

i=log2256=log228=8бит

Ответ: глубина цвета составляет 8 бит (1 байт на пиксель).

Объём файла растрового изображения

Зная разрешение изображения (M пикселей по ширине и N пикселей по высоте) и глубину цвета i (в битах на пиксель), можно вычислить информационный объём несжатого растрового изображения V по формуле:

V=M·N·i

Результат формулы получается в битах; чтобы перевести его в байты, нужно разделить на 8. Эта формула не учитывает сжатие данных (например, в форматах JPEG или PNG) и служебную информацию файла (заголовки, метаданные) — она даёт оценку объёма «сырых», несжатых пиксельных данных.

Пример 2. Вычисление объёма файла изображения

Дано: растровое изображение имеет разрешение 800×600 пикселей и глубину цвета 24 бита. Найдите объём файла в битах, байтах, килобайтах и мегабайтах (без учёта сжатия).

Решение. Подставляем данные в формулу V=M·N·i:

V=800·600·24=11520000бит

Переведём в байты, разделив на 8:

V=115200008=1440000байт

Далее переводим в укрупнённые единицы, деля на 1024 на каждом шаге: 1 440 000/1024 ≈ 1406,25 Кбайт; 1406,25/1024 ≈ 1,37 Мбайт.

Ответ: 11 520 000 бит = 1 440 000 байт ≈ 1406,25 Кбайт ≈ 1,37 Мбайт.

Цветовая модель RGB и режим True Color

В большинстве современных устройств цвет пикселя формируется по модели RGB (Red, Green, Blue) — как сумма интенсивностей красного, зелёного и синего цветов. Если на каждый из трёх каналов отводится по 8 бит, общая глубина цвета составляет 8·3=24 бита — такой режим называют True Color («настоящий цвет»). Каждый канал при этом может принимать 2⁸=256 значений интенсивности (градаций), а общее число возможных цветов равно произведению вариантов по всем трём каналам.

K=256·256·256=2563=16777216цветов

Пример 3. Число цветов в режиме True Color

Дано: изображение использует 24-битный цвет по модели RGB (по 8 бит на каждый из трёх каналов). Сколько различных цветов может быть закодировано?

Решение. Общая глубина цвета i=24 бита, поэтому число цветов находим по формуле K=2^i:

K=224=16777216цветов

Ответ: около 16,7 миллиона цветов — этот результат совпадает с вычислением через произведение градаций по каналам 256³, что подтверждает согласованность формулы количества цветов с покомпонентным описанием модели RGB.

Типичные значения глубины цвета

Глубина цветаЧисло цветовТипичное применение
1 бит2чёрно-белое (монохромное) изображение
4 бита16простая цветная палитра (например, EGA)
8 бит256индексная палитра, GIF, ранние видеорежимы
16 бит65 536режим High Color
24 бита16 777 216режим True Color (по 8 бит на канал RGB)
32 бита16 777 216 + альфа-каналTrue Color с каналом прозрачности

Программная иллюстрация: расчёт объёма файла изображения

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

def image_file_size(width, height, color_depth_bits):

"""Возвращает объём несжатого изображения в битах и байтах."""

total_bits = width * height * color_depth_bits

total_bytes = total_bits / 8

return total_bits, total_bytes

bits, size_bytes = image_file_size(800, 600, 24)

print(f"Объём: {bits} бит = {size_bytes:.0f} байт")

print(f"{size_bytes / 1024:.2f} Кбайт = {size_bytes / 1024 / 1024:.2f} Мбайт")

for depth in (1, 4, 8, 16, 24):

colors = 2 ** depth

print(f"Глубина {depth} бит -> {colors} цветов")

Функция image_file_size реализует формулу V=M·N·i напрямую, а цикл в конце демонстрирует связь глубины цвета с числом цветов K=2^i для чисто цветовых глубин из таблицы выше (32-битный режим не включён в цикл, так как в нём дополнительные 8 бит отводятся не под новые цвета, а под альфа-канал прозрачности).

Типичные ошибки

Частая ошибка — забыть перевести полученный по формуле V=M·N·i результат из бит в байты (то есть не поделить на 8), из-за чего итоговый объём оказывается завышен ровно в 8 раз. Вторая ошибка — использовать в формуле общее число пикселей вместо произведения ширины и высоты по отдельности, что при перепутанных значениях M и N в условии задачи (например, при разрешении, заданном как «высота×ширина») может привести к неверному результату, хотя итоговое произведение обычно совпадает. Третья ошибка — забывать, что формула V=M·N·i даёт объём именно несжатых пиксельных данных, тогда как реальные файлы в форматах JPEG, PNG или GIF почти всегда меньше за счёт алгоритмов сжатия.

Краткий словарь терминов

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

Растровая графика — способ представления изображения в виде прямоугольной сетки пикселей.

Глубина цвета — количество бит, отводимых на кодирование цвета одного пикселя.

True Color — режим кодирования цвета с глубиной 24 бита (по 8 бит на каждый из каналов R, G, B), дающий свыше 16 млн цветов.

Модель RGB — способ формирования цвета как суммы интенсивностей красной, зелёной и синей составляющих.

Разрешение изображения — количество пикселей изображения по горизонтали и по вертикали.

Заключение

Кодирование графической информации строится на том же принципе, что и кодирование текста: изображение разбивается на элементарные единицы — пиксели, — каждой из которых сопоставляется числовой код фиксированной длины (глубина цвета), а полный объём данных вычисляется как произведение количества элементов на информационный вес каждого. Формулы K=2^i и V=M·N·i позволяют по параметрам изображения точно оценить требуемый объём памяти. В следующей теме мы рассмотрим аналогичный подход к кодированию звуковой информации, где роль пикселя играет отдельный отсчёт (сэмпл) звукового сигнала.

Запишитесь на бесплатный урок

Определим уровень, покажем формат занятий и составим план подготовки.