Сколько памяти компьютера требуется для двоичного кодирования 256-цветного рисунка 10x10
Обновлено: 21.11.2024
Этот документ служит начальным введением в растровые изображения, поскольку они используются в компьютерной графике.
Определение
Растровые изображения определяются как регулярная прямоугольная сетка ячеек, называемых пикселями, каждый пиксель содержит значение цвета. Они характеризуются всего двумя параметрами: количеством пикселей и информативностью (глубина цвета) на пиксель. К растровым изображениям применяются и другие атрибуты, но они являются производными от этих двух основных параметров.
Обратите внимание, что растровые изображения всегда ориентированы горизонтально и вертикально. Пиксели следует считать квадратными, хотя на практике они могут иметь другие соотношения сторон.
В большинстве случаев растровые изображения используются для представления изображений на компьютере. Например, следующее растровое изображение имеет 397 пикселей по горизонтали и 294 пикселя по вертикали, и каждый пиксель содержит значение серого из 256 возможных оттенков серого.
Цветовая "глубина"
Каждый пиксель растрового изображения содержит определенную информацию, обычно интерпретируемую как информация о цвете. Информационное содержание всегда одинаково для всех пикселей в конкретном растровом изображении. Количество информации о цвете может быть любым, которое требуется приложению, но есть некоторые стандарты, основные из которых описаны ниже.
1 бит (черно-белое)
Это наименьший возможный информационный контент, который может храниться для каждого пикселя. Полученное растровое изображение называется монохромным или черно-белым. Пиксели с 0 считаются черными, пиксели с 1 — белыми. Обратите внимание, что хотя возможны только два состояния, их можно интерпретировать как любые два цвета: 0 соответствует одному цвету, 1 — другому цвету.
8-битные оттенки серого
В этом случае каждый пиксель занимает 1 байт (8 бит) памяти, что приводит к 256 различным состояниям. Если эти состояния отображаются на шкале оттенков серого от черного к белому, растровое изображение называется изображением в градациях серого. По соглашению 0 обычно черный, а 255 белый. Уровни серого — это числа между ними, например, в линейной шкале 127 соответствует уровню серого 50 %.
В любом конкретном приложении диапазон значений серого может быть любым. Чаще всего уровни 0–255 сопоставляются со шкалой 0–1, но некоторые программы сопоставляют их со шкалой 0–65535 (см. спецификацию цветов Apple). системы в качестве примера).
Это следующий шаг по сравнению с 8-битным серым, теперь каждому красному, зеленому и синему компонентам выделяется 8 бит. В каждом компоненте значение 0 относится к отсутствию вклада этого цвета, 255 относится к полностью насыщенному вкладу этого цвета. Поскольку каждый компонент имеет 256 различных состояний, всего возможно 16777216 цветов.
Идея цветового пространства RGB является фундаментальной концепцией компьютерной графики. В пространстве RGB любой цвет представлен точкой внутри цветового куба с ортогональными осями r,g,b.
Обратите внимание, что значения серого образуют прямую линию от черного к белому вдоль диагонали куба, r = g = b.
8-битный индексированный цвет
Индексированный цвет — это более экономичный способ хранения цветных растровых изображений без использования 3 байтов на пиксель. Как и в 8-битных серых растровых изображениях, с каждым пикселем связан один байт, только теперь значение в этом байте больше не является значением цвета, а является индексом в таблице цветов, называемой палитрой или таблицей цветов.
Существует ряд интересных атрибутов такой системы индексации цветов. Если в изображении менее 256 цветов, то это растровое изображение будет того же качества, что и 24-битное растровое изображение, но оно может храниться с одной третью данных. Интересных цветовых и анимационных эффектов можно добиться, просто изменив палитру. Это немедленно изменяет внешний вид растрового изображения, а при тщательном проектировании может привести к преднамеренным изменениям внешнего вида растрового изображения.
Распространенной операцией, которая уменьшает размер больших 24-битных растровых изображений, является преобразование их в индексированные цвета с оптимизированной палитрой, то есть палитрой, которая наилучшим образом представляет цвета, доступные в растровом изображении.
4-битный индексированный цвет
Это идентично 8-битному цвету, за исключением того, что теперь для индекса используется только половина байта, 4 бита. Это поддерживает таблицу до 16 цветов.
Обычно это то же самое, что и 24-битный цвет, но с дополнительным 8-битным растровым изображением, известным как альфа-канал. Этот канал можно использовать для создания замаскированных областей или представления прозрачности.
Как правило, это прямая система с 5 битами на компонент цвета и 1 битным альфа-каналом.
Разрешение
Разрешение — это атрибут растрового изображения, который необходим при визуальном просмотре или печати растровых изображений, поскольку пиксели сами по себе не имеют явных размеров. Разрешение обычно указывается в пикселях на дюйм, но может быть выражено в любой другой единице измерения. В большинстве процессов печати используются единицы измерения пикселей на дюйм (DPI) по историческим причинам.На устройствах с nn прямоугольными пикселями разрешение может быть указано двумя числами: горизонтальное и вертикальное разрешение.
Концепция независимости разрешения от информационного содержания растрового изображения очень важна, поскольку при постоянной глубине цвета информационное содержание между различными растровыми изображениями связано только с количеством пикселей по вертикали и горизонтали. Однако качество при отображении или печати растрового изображения зависит от разрешения. Поскольку разрешение определяет размер пикселя, его также можно использовать для изменения размера всего изображения.
В качестве примера рассмотрим одно растровое изображение размером 200 пикселей по горизонтали и 100 пикселей по вертикали. Если бы это растровое изображение было напечатано с разрешением 100 точек на дюйм, оно имело бы размеры 2 дюйма на 1 дюйм. Однако если тот же растровый рисунок был напечатан с разрешением 200 точек на дюйм, его размеры будут составлять всего 1 дюйм на полдюйма.
Всякий раз, когда растровое изображение отображается на мониторе компьютера, необходимо учитывать разрешение. Большинство компьютерных мониторов имеют диапазон разрешения от 60 точек на дюйм для низкого разрешения до 120 точек на дюйм для дисплеев с высоким разрешением. Как и в случае с печатными материалами, чем выше разрешение, тем менее очевидна пиксельная природа растрового изображения.
В качестве еще одного примера, следующие два изображения идентичны по информационному содержанию, однако они имеют разное разрешение и, следовательно, разные размеры в пикселях. Меньшее — 80DPI, большее — 30DPI. Пиксели гораздо более заметны в увеличенной версии.
Это еще не все, что касается представления растровых изображений на физических устройствах, поскольку разные устройства имеют разные возможности глубины цвета.
Преобразование глубины цвета.
Очень часто необходимо представить растровое изображение с одной глубиной цвета на устройстве с различными возможностями глубины цвета. Конечно, если целевое устройство имеет лучший цвет, чем растровое изображение, тогда нет проблем, поскольку растровое изображение может быть точно представлено. В обратной ситуации, когда адресат имеет другие и более низкие возможности, растровое изображение должно быть преобразовано во что-то, что дает наилучшее возможное представление.
В качестве примера рассмотрим проблему представления изображений в оттенках серого на монохромных (черно-белых) устройствах. Это достигается за счет использования переменного количества черных и белых пикселей для представления уровня серого. К счастью, черно-белое устройство обычно имеет гораздо более высокое разрешение, чем растровое изображение, поэтому для создания аппроксимации оттенков серого доступно несколько пикселей. Предположим, что растровое изображение в оттенках серого с разрешением 75 точек на дюйм будет отображаться на черно-белом принтере с разрешением 300 точек на дюйм. Существует матрица из черно-белых пикселей 4 x 4, которую можно использовать для представления каждого пикселя в оттенках серого.
Существует ряд методов, которые можно использовать для формирования соответствующего расположения черных и белых пикселей, один из которых называется дизерингом. Даже при использовании дизеринга существует множество возможных алгоритмов для определения расположения пикселей с дизерингом. Ниже показано изменение уровня серого с соответствующими черно-белыми примерами дизеринга (значительно увеличенными) с использованием шаблонного и диффузионного дизеринга.
Как уже упоминалось, существуют другие методы преобразования растровых изображений с высокой глубиной цвета в растровые изображения с меньшей глубиной цвета, но с более высоким разрешением. Такой метод, используемый в полиграфии, называется растрированием. Экранирование здесь обсуждаться не будет, за исключением того, что оно аппроксимирует уровни серого с помощью объектов разного размера (размер объекта пропорционален уровню серого). Объекты располагаются в регулярной матрице, расположенной под некоторым углом к горизонтали. Наиболее часто используемыми объектами изображения являются точки, линии и прямоугольники. Ниже показано изменение уровня серого с соответствующими черно-белыми примерами растрирования (сильно увеличенными) с использованием точечных и линейных растровых изображений.
Приведенное выше обсуждение и примеры преобразования глубины цвета относятся к изображениям в оттенках серого. Преобразование изображений с высокой глубиной цвета в изображения с низкой глубиной цвета не отличается по своей концепции. Как правило, процесс выполняется трижды, по одному для каждого компонента цвета.
Хранилище растровых изображений
Самый простой способ хранения растрового изображения — просто перечислить информацию о растровом изображении байт за байтом, строка за строкой. Файлы, сохраненные этим методом, часто называют файлами RAW. Объем дискового пространства, необходимый для любого растрового изображения, легко подсчитать, учитывая размеры растрового изображения (N x M) и глубину цвета в битах (B). Формула для размера файла в килобайтах:
где N и M — количество пикселей по горизонтали и вертикали, B — количество битов на пиксель. В следующей таблице показаны размеры файлов некоторых типов растровых изображений, если они хранятся в формате RAW.
Как видно из этой таблицы, большие 24-битные изображения приводят к очень большим файлам, поэтому сжатие становится важным. Существует большое количество форматов файлов, используемых для хранения сжатых растровых изображений, от самых простых до очень сложных.Сложные форматы существуют из-за очень больших файлов растровых изображений, которые существовали бы, если бы не использовалось сжатие. Существует две широкие категории форматов сжатых файлов: форматы без потерь (отлично сохраняют растровые изображения) и форматы с потерями. Ниже показана основная иерархия методов сжатия.
Самый грубый способ уменьшить размер растровых файлов — уменьшить информацию о цвете. Это называется уменьшением битов или квантованием. Например, можно преобразовать 24-битные растровые изображения в 8-битные индексированные растровые изображения, используя сглаживание для имитации потерянных цветов. Наиболее распространенным форматом с потерями на сегодняшний день является JPEG, описание того, как он работает, выходит далеко за рамки этого обсуждения. Его главное преимущество заключается в том, что он может предложить гораздо лучшую степень сжатия, чем форматы без потерь. Например, рассмотрим следующее растровое изображение, исходный размер которого составляет 500 x 350 пикселей при 24-битном цвете. Используя приведенную ранее формулу, размер несжатого файла составляет 500 x 350 x 24/8/1024 = 513 КБ
Сохраненный в оттенках серого (уменьшение битовой глубины) файл имеет размер 171 КБ (в 3 раза меньше), сохраненный и сжатый с использованием RLE — 388 КБ (75 % от исходного), сохраненный с использованием сжатия LZW — 188 КБ (36 % от исходного ), сохраненный в формате JPEG, составляет 30 КБ (коэффициент сжатия 17:1).
Ниже приводится описание простейшего метода сжатия без потерь, называемого кодированием длин серий (RLE), который используется с хорошим эффектом для растровых изображений, содержащих всего несколько цветов. Рассмотрим следующее маленькое 8-битное изображение размером 17 x 10 пикселей.
Если бы это было сохранено в формате RAW, потребовалось бы 16 байтов на строку для всех 10 строк. Однако первые две строки имеют одинаковый уровень, поэтому более эффективно просто сохранять количество одинаковых цветов в серии вместе с цветом серии. Для первых двух строк вместо 16 байт требуется всего по 2 байта на каждую.
В необработанном формате первые три строки будут
При использовании кодирования длин серий первые три строки будут
Хотя в реальных реализациях RLE задействовано больше деталей, чем описано здесь, это основной принцип кодирования длин серий. Чтобы RLE достигла некоторой степени сжатия, должны быть прогоны одного и того же цвета, по этой причине он вряд ли будет полезен для цветных изображений, таких как 24-битные фотографии.
Изображения могут быть представлены несколькими способами. Наиболее распространенным является сетка из маленьких квадратов, называемых пикселями. В очень простом изображении, которое было только черно-белым, мы могли представить каждый пиксель как представленный 0 (черный) или 1 (белый). Таким образом, это изображение:
Можно хранить как двоичную строку из 36 бит: 111111101101111111101101100001111111. Чтобы успешно нарисовать изображение из этого шаблона, нам нужно знать, как интерпретировать эти серии двоичных цифр как 6 строк по 6 пикселей (а не 4 строки по 6 пикселей). 9 пикселей), поэтому форматы файлов реальных изображений часто содержат дополнительную информацию, например размер изображения.
На изображениях часто требуется передать оттенки серого или цвета. Для этого каждому пикселю может быть присвоено более одного бита. Если каждому пикселю присвоить значение, состоящее из 2 бит, мы можем иметь 4 цвета:
Используя эту схему, мы могли бы сделать такой заштрихованный круг:
Для представления этого изображения требуется 72 бита — сетка пикселей 6x6, для каждого из которых требуется 2 бита. Еще раз, чтобы нарисовать изображение из битов, нам нужно знать размеры изображения; но теперь нам также нужно указать количество битов, используемых для каждого пикселя. Эти 72 бита могут представлять изображение 3x6, где каждый пиксель представлен 4 битами (4 бита мы можем представить \(2^4 = 16\) разных оттенков серого).
Шаблон битов имеет только то значение, которое мы ему приписываем.
32 бита могут представлять изображение 4x8 из 1-битных пикселей, или изображение 4x4 из 2-битных пикселей, или последовательность из 4 букв ASCII, или действительно большое двоичное число, или что-то еще.
Что насчет цветов? Помните, биты имеют только то значение, которое мы им приписываем. Мы могли бы интерпретировать 2 бита на пиксель так:
И в итоге получится вот это изображение:
Если нам нужно более 4 цветов, нам просто нужно больше 2 бит. С 8 битами на пиксель мы можем представить \(2^8 = 256\) разных цветов или оттенков серого. Этого достаточно для черно-белой фотографии, но не позволяет получить тонкие оттенки цвета на фотографии. Для полноцветных изображений обычно используется 24 бита на пиксель, что позволяет использовать \(2^ = 16 777 216\) разных цветов.
Конечно, реальные изображения используют гораздо большее количество пикселей, чем мы видели здесь.Например, 12-мегапиксельная камера снимает изображения размером около 4000x3000 пикселей. Если каждый из этих пикселей хранить как 24-битное значение, это изображение будет состоять из 4000 x 3000 x 24 = 288 000 000 битов информации! Это 36 000 000 байт или примерно 34,3 МБ. Однако, если бы вы посмотрели на файл изображения, созданный этой камерой, вы бы обнаружили, что он намного меньше 34 МБ, даже несмотря на то, что в файле хранится дополнительная информация помимо содержимого каждого пикселя (размеры изображения, количество битов и т. д.). на пиксель и т. д.). Это связано с тем, что изображение было сжато. Наиболее распространенные форматы изображений (gif, jpeg, png) включают некоторую форму сжатия для уменьшения места, необходимого для хранения их информации… тема, о которой мы узнаем подробнее позже.
Самопроверка
В-1. Сколько бит потребуется для изображения 10 x 20 с 8 различными возможными цветами на пиксель? (Подсказка: сколько бит требуется для представления 8 разных цветов)
Читайте также: