"Информатика (базовый и углублённый уровни) (в 2 частях)", Поляков К.Ю., Еремин Е.А.
Растровое изображение хранится как сетка пикселей, а цвет каждого пикселя задаётся двоичным кодом. Количество пикселей зависит от разрешения, а число бит на один пиксель — от глубины цвета. Эти параметры определяют, насколько детальным и цветным может быть изображение и сколько места займут несжатые данные. Понимая их связь, можно оценивать объём графического файла и выбирать подходящие настройки изображения.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Растровое изображение — изображение, представленное прямоугольной сеткой пикселей, каждому из которых соответствует код цвета. Такая модель подходит для фотографий и других изображений с множеством оттенков. Представление в виде сетки позволяет хранить и обрабатывать изображение в компьютере.
Пиксель — минимальный элемент растрового изображения, для которого кодируется цвет. Слово образовано от английского picture element — «элемент изображения». Понимание пикселя помогает объяснить, из каких частей состоит растр и почему при увеличении картинки становятся видны квадратики.
Глубина цвета — число бит, отведённых для кодирования цвета одного пикселя. Если глубина равна i битам, можно задать до 2^i различных цветов. Этот параметр нужен, чтобы оценить цветовые возможности изображения и количество данных для хранения каждого пикселя.
Разрешение изображения — количество пикселей по горизонтали и вертикали, например 800 × 600. Первое число показывает ширину, второе — высоту растра. Чтобы найти общее число пикселей, значения перемножают: 800 × 600 = 480 000.
При создании растрового изображения его представляют как сетку: каждая ячейка получает цвет, а компьютер сохраняет соответствующие коды. Это похоже на мозаику, где общий рисунок складывается из множества маленьких элементов. При увеличении масштаба размер ячеек на экране растёт, поэтому глаз начинает различать отдельные пиксели, а контуры могут выглядеть ступенчатыми.
Глубина цвета связана с числом двоичных комбинаций, которые можно составить из отведённых битов. Один бит даёт 2 варианта, два бита — 4, три — 8; в общем случае при глубине i доступно до 2^i кодов. Поэтому увеличение глубины позволяет представить больше оттенков, но требует больше бит для каждого пикселя.
Код цвета хранится в двоичном виде. При прямом кодировании он непосредственно задаёт цвет, а при использовании палитры число в коде указывает на запись с нужным цветом в таблице. Палитра позволяет хранить изображение с ограниченным набором цветов: пикселю достаточно записать номер, а не полное описание оттенка. Например, при двух битах можно задать четыре номера цветов.
Чтобы оценить объём несжатого растра, сначала находят число пикселей: ширину умножают на высоту. Затем это число умножают на глубину цвета, получая объём в битах: V = ширина × высота × глубина цвета. Поскольку в одном байте 8 бит, результат в битах делят на 8, чтобы получить байты; если ответ не целый, на хранение может понадобиться округление вверх.
Полученное значение описывает только несжатые данные пикселей и не обязательно совпадает с размером готового файла. Алгоритм сжатия может уменьшить объём, например используя повторяющиеся участки или закономерности изображения. Кроме того, файл может содержать заголовок, сведения о цветах и другие служебные данные, поэтому его итоговый размер зависит от формата и способа сохранения.
| Параметр | Что означает | Как влияет на изображение или объём |
|---|---|---|
| Разрешение | Ширина и высота растра в пикселях | Определяет число пикселей и детализацию изображения |
| Глубина цвета | Число бит для кода одного пикселя | Влияет на объём данных и точность передачи оттенков |
| Число возможных цветов | Количество различных цветов, доступных при заданной глубине | При i битах равно максимум 2^i |
| Число пикселей | Произведение ширины на высоту | Чем их больше, тем больше кодов нужно хранить |
| Объём несжатых данных | Число пикселей, умноженное на глубину цвета | Показывает объём данных до сжатия, сначала в битах |
С помощью таблицы удобно последовательно оценить изображение: сначала определить число пикселей, затем учесть глубину цвета. Так можно найти объём несжатых данных и понять, какие параметры его увеличивают. Расчёт относится к пиксельным данным, а не обязательно к итоговому размеру файла.
Изображение размером 10 × 8 пикселей кодируется двумя битами на пиксель. Нужно определить число доступных цветов и объём несжатых данных в битах и байтах. Сначала отдельно вычислим число пикселей, а затем применим глубину цвета.
Ответ: можно закодировать 4 цвета, объём несжатых данных равен 160 бит, или 20 байтам. Проверка проста: 20 байт × 8 = 160 бит.
Растровое изображение размером 640 × 480 пикселей хранится без сжатия с глубиной цвета 24 бита. Требуется найти объём данных в байтах и килобайтах. Сначала определим количество пикселей, после чего посчитаем биты и переведём их в нужные единицы.
Ответ: 921 600 байт, или 900 КиБ. Здесь использовано двоичное соотношение 1 КиБ = 1024 байта; при десятичном подсчёте килобайт результат будет 921,6 кБ.
Изображение 800 × 600 пикселей занимает 480 000 байт без учёта служебной информации. Нужно определить глубину цвета и максимальное число кодируемых цветов. Так как дан объём в байтах, сначала переведём его в биты, а затем выясним, сколько бит приходится на один пиксель.
Ответ: глубина цвета равна 8 битам, можно закодировать до 256 цветов. Деление объёма в битах на число пикселей даёт именно число бит на один пиксель.
Иногда глубину цвета принимают за число цветов. Но глубина i — это число бит на пиксель, а число возможных кодов равно 2^i: например, 8 бит дают 256 цветов, а не 8. Чтобы проверить себя, возведите 2 в степень, равную глубине.
При подсчёте пикселей иногда умножают только одно измерение или принимают ширину за общее количество элементов. Число пикселей образует площадь сетки, поэтому нужны оба размера: ширина × высота. Проверьте, что для изображения 10 × 8 получилось 80 пикселей, а не 10 или 8.
Ещё одна ошибка — забыть, что размер в битах и размер в байтах выражены в разных единицах. В одном байте 8 бит, поэтому из битов в байты переходят делением на 8, а не умножением. Для самопроверки умножьте полученные байты на 8 и убедитесь, что вернулись к исходному числу битов.
Расчётный объём несжатых данных не всегда равен размеру файла. Такое равенство предполагает, что учитываются только коды пикселей и нет сжатия; реальные форматы могут добавлять служебные сведения. Сверьте условия задачи: если указано «без сжатия» и «без служебной информации», считайте по формуле, а для реального файла учитывайте эти факторы.
Для расчётов нужны знания о двоичном кодировании: каждый бит может принимать одно из двух значений, а i битов задают до 2^i комбинаций. Также важно уметь переводить единицы информации: 1 байт содержит 8 бит. Без этих правил нельзя правильно вычислить ни число цветов, ни объём графических данных.
Разрешение и глубина цвета помогают выбирать параметры изображения. Более высокое разрешение даёт больше пикселей, а большая глубина позволяет хранить больше оттенков, но оба изменения обычно увеличивают объём несжатых данных. Эти параметры полезно учитывать при сохранении изображений и оценке места для них.
Кодирование растра связано с хранением данных и устройством компьютерных форматов. Формат определяет, как именно записываются пиксели, используется ли палитра и применяется ли сжатие. Поэтому одинаковые по разрешению и глубине изображения могут занимать разное место на диске.
Чем пиксель отличается от точки на экране?
Пиксель — элемент цифрового изображения, которому при кодировании назначают цвет. Точка экрана — физический элемент дисплея, который излучает свет; при выводе изображения пиксель может соответствовать одной или нескольким таким точкам.
Как узнать, сколько цветов можно закодировать при заданной глубине цвета?
Если на цвет одного пикселя отведено i бит, число возможных кодов равно 2^i. Например, при глубине 2 бита доступны 2² = 4 цвета.
Почему увеличение разрешения обычно увеличивает объём файла?
При увеличении ширины или высоты растёт общее число пикселей: его находят умножением ширины на высоту. Если глубина цвета не меняется, для хранения кодов большего числа пикселей требуется больше данных.
Как рассчитать объём несжатого изображения?
Сначала умножьте ширину на высоту и получите число пикселей. Затем умножьте его на глубину цвета в битах на пиксель; чтобы получить байты, разделите результат на 8.
Почему размер файла может быть меньше расчётного объёма несжатых данных?
Расчёт показывает объём самих кодов пикселей без сжатия и дополнительных данных. Сжатие может уменьшить объём, а заголовки и другая служебная информация, наоборот, увеличить размер файла.
§ 16. Кодирование графической информации