Представление растрового изображения
Растровое изображение хранится как прямоугольная таблица точек — пикселей. Чтобы вычислить объём изображения, нужно знать количество пикселей и число бит, отведённых для записи цвета каждого пикселя.
Что такое растровое изображение
Растровое изображение состоит из строк и столбцов пикселей. Каждый пиксель имеет координаты и цвет. Чем больше пикселей содержит изображение, тем более мелкие детали можно в нём передать, но тем больше памяти требуется для хранения.
Растровое изображение — это изображение, представленное набором пикселей, расположенных в строках и столбцах. Для каждого пикселя в памяти записывается код его цвета.
Если в изображении \(W\) пикселей по горизонтали и \(H\) пикселей по вертикали, то его размеры в пикселях равны \(W \times H\). Это не физический размер на экране или бумаге, а количество точек по двум направлениям. Подробнее о самом элементе изображения см. в статье «Пиксель».
Здесь \(N\) — общее количество пикселей, \(W\) — ширина изображения в пикселях, \(H\) — высота изображения в пикселях. Например, изображение размером \(800 \times 600\) содержит \(480\,000\) пикселей.
Глубина цвета и количество информации
Глубина цвета — количество бит, используемых для кодирования цвета одного пикселя. Если глубина цвета равна \(i\) бит, то можно закодировать \(2^i\) различных цветов.
Например, при глубине цвета \(1\) бит возможны \(2^1=2\) цвета, обычно чёрный и белый. При \(8\) битах можно закодировать \(2^8=256\) цветов, а при \(24\) битах — \(2^{24}=16\,777\,216\) цветов.
Если каждый пиксель кодируется одинаковым числом \(i\) бит, то несжатое изображение из \(N\) пикселей занимает \(N \cdot i\) бит. Для перевода в байты результат нужно разделить на \(8\).
В задачах обычно предполагается, что изображение хранится без сжатия и без дополнительных данных файла. Если в условии сказано «объём информации, необходимый для хранения изображения», используют именно формулу (4). Если требуется найти объём в килобайтах, полученное число байтов делят на \(1024\), а для мегабайтов — ещё раз на \(1024\).
| Величина | Обозначение | Единица измерения |
|---|---|---|
| Ширина изображения | \(W\) | пиксель |
| Высота изображения | \(H\) | пиксель |
| Количество пикселей | \(N\) | пиксель |
| Глубина цвета | \(i\) | бит на пиксель |
| Объём данных | \(I\) | бит или байт |
Как решать задачи на объём изображения
- Записать ширину \(W\) и высоту \(H\) изображения в пикселях.
- Найти количество пикселей: \(N=W\cdot H\).
- Определить глубину цвета \(i\). Если дано число цветов \(K\), найти её из условия \(2^i=K\).
- Умножить количество пикселей на глубину цвета и получить объём в битах.
- При необходимости перевести биты в байты, килобайты или мегабайты.
Сначала проверьте единицы измерения. Глубина цвета задаётся в битах на пиксель, поэтому произведение \(W\cdot H\cdot i\) сразу даёт биты. Не переводите глубину цвета в байты отдельно, если это не требуется.
Изображение имеет размер \(100\times 50\) пикселей и глубину цвета \(8\) бит. Сколько бит требуется для хранения данных без сжатия?
Разобранный пример
Условие. Растровое изображение имеет размер \(640\times480\) пикселей. Цвет каждого пикселя кодируется 16 битами. Определим объём изображения в битах, байтах и килобайтах, считая, что сжатия нет.
Несжатое изображение занимает \(4\,915\,200\) бит, или \(614\,400\) байт, или \(600\) Кбайт. Важно не перепутать 16 бит на пиксель с 16 байтами на пиксель.
Обратные задачи и изменение параметров
Иногда известен объём файла и требуется найти размер изображения, глубину цвета или число пикселей. В таких задачах используют ту же формулу, преобразуя её относительно неизвестной величины.
Если объём дан в байтах, перед подстановкой в формулу его нужно умножить на \(8\), чтобы получить биты. Если известны ширина и количество пикселей, высоту находят так: \(H=N/W\).
При неизменной глубине цвета увеличение ширины в два раза увеличивает объём в два раза. Увеличение и ширины, и высоты в два раза увеличивает количество пикселей и объём в четыре раза. Поэтому изменение размеров изображения по двум направлениям особенно сильно влияет на объём.
При постоянной глубине цвета объём растрового изображения прямо пропорционален ширине и высоте: \(I\sim W\cdot H\). При постоянных размерах объём прямо пропорционален глубине цвета: увеличение \(i\) в два раза увеличивает объём в два раза.
Частые ошибки
Размер \(1024\times768\) — это размеры в пикселях, а не в байтах. Сначала нужно найти число пикселей, затем учесть глубину цвета.
Если получено \(I\) бит, для получения байтов нужно разделить на \(8\). Обратное действие — умножение байтов на \(8\).
В школьных задачах обычно используют \(1\) Кбайт \(=1024\) байта и \(1\) Мбайт \(=1024\) Кбайта. Следуйте именно условию задачи.
Формулы темы описывают объём несжатых данных. Формат JPEG, PNG или другой формат может добавлять служебные данные и применять сжатие, но это учитывают только при специальном указании.
Проверка понимания
Quick-test
Главное
- Растровое изображение состоит из пикселей, расположенных в строках и столбцах.
- Количество пикселей равно \(N=W\cdot H\).
- При глубине цвета \(i\) бит можно закодировать \(2^i\) цветов.
- Объём несжатого изображения равен \(I=W\cdot H\cdot i\) бит или \(I=W\cdot H\cdot i/8\) байт.
- При переводе единиц используйте \(8\) бит в байте и обычно \(1024\) байта в килобайте.
- В задачах сначала определяйте число пикселей, затем умножайте его на глубину цвета.