Размер файла изображения
Размер файла растрового изображения определяется тем, сколько пикселей в нём закодировано и сколько бит требуется для описания цвета каждого пикселя. В экзаменационных задачах обычно нужно умножить разрешение изображения на глубину цвета, а затем правильно перевести полученное количество бит в байты и более крупные единицы.
Что хранится в растровом изображении
Разрешение изображения задаёт количество пикселей по горизонтали и вертикали: \(W\) — ширина, \(H\) — высота. Если изображение имеет разрешение \(W \times H\), всего в нём \(W \cdot H\) пикселей. Каждый пиксель хранит код своего цвета. О строении отдельного элемента изображения подробнее рассказывает страница «Пиксель».
Глубина цвета \(i\) — это количество бит, отведённых на один пиксель. Чем больше глубина цвета, тем больше различных цветов можно закодировать. Например, при глубине 8 бит возможны \(2^8=256\) нұсқа цвета, а при 24 битах — \(2^{24}\) нұсқа.
Растровое изображение — это прямоугольная таблица пикселей, где для каждого пикселя хранится код цвета. При расчёте минимального объёма файла учитывают число пикселей и глубину цвета, не учитывая заголовок файла и дополнительные служебные данные.
Основная формула объёма
Сначала найдём общее число бит: каждый из \(W \cdot H\) пикселей занимает \(i\) бит. Поэтому информационный объём равен произведению числа пикселей на глубину цвета.
Здесь \(I\) измеряется в битах, если \(W\), \(H\) и \(i\) заданы в пикселях и битах. Чтобы получить объём в байтах, нужно разделить результат на 8, поскольку один байт содержит 8 бит.
Если глубина цвета дана в байтах на пиксель, умножать на 8 не требуется. Но в заданиях ЕГЭ глубина цвета чаще задаётся в битах на пиксель, поэтому единицы нужно проверять особенно внимательно.
Объём несжатого растрового изображения равен произведению ширины, высоты и глубины цвета. Для перевода из битов в байты результат делят на 8; для перевода из байтов в килобайты, мегабайты и гигабайты используют деление на 1024, если это явно принято в условии.
Единицы измерения и перевод
В информатикаға обычно используют такие соотношения:
- \(1\) байт \(=8\) бит;
- \(1\) Кбайт \(=1024\) байта;
- \(1\) Мбайт \(=1024\) Кбайта \(=2^{20}\) байт;
- \(1\) Гбайт \(=1024\) Мбайта \(=2^{30}\) байт.
Удобно выполнять вычисления степенями двойки. Например, если изображение имеет ширину \(2^{10}\) пикселей, высоту \(2^9\) пикселей и глубину цвета \(2^4\) бит, то объём в битах равен \(2^{10+9+4}=2^{23}\) бит. После деления на 8, то есть на \(2^3\), получаем \(2^{20}\) байт, или 1 Мбайт.
Если все множители представлены степенями двойки, складывайте показатели степеней. Отдельно учитывайте переход бит → байты: деление на 8 уменьшает показатель степени на 3.
Какой объём в байтах занимает изображение 100×50 пикселей с глубиной цвета 16 бит на пиксель?
Разобранный пример
Изображение имеет разрешение 800×600 пикселей и палитру из 256 цветов. Каков информационный объём изображения в Кбайтах? Считаем, что служебными данными и сжатием можно пренебречь.
В условии глубина цвета не дана напрямую, но указано число цветов. Сначала нужно связать число цветов с числом бит на пиксель: если используется \(N\) цветов, то глубина цвета \(i\) удовлетворяет условию \(2^i=N\).
Жауап можно записать как \(468{,}75\) Кбайт. Если в задаче требуется целое число Кбайт для хранения, может понадобиться округление вверх — это должно быть явно указано или следовать из формулировки о количестве занимаемых блоков.
Обратные тапсырма
Иногда известен объём файла, а найти нужно глубину цвета, количество цветов или один из размеров изображения. Основную формулу в таком случае преобразуют алгебраически.
Если найденная глубина цвета равна, например, 4 битам, число возможных цветов вычисляют по формуле \(N=2^i\). Если известна палитра, сначала проверяют, является ли число цветов степенью двойки. Для 16, 256 и 65 536 цветов глубина равна соответственно 4, 8 и 16 битам.
| Глубина цвета | Число цветов |
|---|---|
| 1 бит | 2 цвета |
| 2 бита | 4 цвета |
| 4 бита | 16 цветов |
| 8 бит | 256 цветов |
| 16 бит | 65 536 цветов |
| 24 бита | 16 777 216 цветов |
1. Забывают разделить биты на 8 и получают ответ в восемь раз больше. 2. Умножают на число цветов вместо глубины цвета: при 256 цветах нужно использовать 8 бит, а не 256. 3. Путают разрешение \(W \times H\) с суммой \(W+H\). 4. Делят байты на 1000, хотя в условии принята двоичная единица Кбайт = 1024 байта. 5. Учитывают сжатие, хотя задача спрашивает объём несжатого изображения. 6. Округляют промежуточные результаты слишком рано.
Сжатие и дополнительные данные
Формула \(I=W\cdot H\cdot i\) даёт объём данных, необходимых для хранения пикселей без сжатия. Реальный файл может быть больше из-за заголовка, таблицы цветов и других служебных сведений. Он может быть меньше после сжатия, но степень сжатия зависит от содержимого изображения и алгоритма.
Подробности о форматах и уменьшении объёма рассматриваются на странице «Сжатие изображения». В обычной задаче нужно следовать только данным условия: если сказано «несжатое изображение» или не упомянут формат, применяют основную формулу.
Пикселей: \(W\cdot H\). Бит на изображение: \(W\cdot H\cdot i\). Байтов на изображение: \(W\cdot H\cdot i/8\). Цветов при глубине \(i\): \(2^i\).
Проверь себя
Главное
- Объём несжатого растрового изображения вычисляют по формуле \(I=W\cdot H\cdot i\).
- Если результат получен в битах, для перевода в байты его делят на 8.
- При палитре из \(N\) цветов глубина цвета равна \(i=\log_2N\), если \(N\) — степень двойки.
- Для перевода байтов в Кбайты обычно делят на 1024, а в Мбайты — на \(1024^2\).
- Сжатие, заголовки и служебные данные учитывают только тогда, когда это указано в условии.