Каков информационный объем одного пикселя для цветовой палитры из 256 цветов
Обновлено: 21.11.2024
Разрешение — не единственный фактор, влияющий на качество изображений. Не менее важно количество цветов в изображении. Когда вы смотрите на естественную сцену или хорошо сделанную цветную фотографию, вы можете различать миллионы цветов. Цифровые изображения могут приблизиться к этому цветовому реализму, но то, сделают ли они это в вашей системе, зависит от ее возможностей и настроек. Количество цветов в изображении или количество цветов, которые может отображать система, называется глубиной цвета, глубиной пикселей или глубиной в битах. Старые ПК застряли с дисплеями, отображающими только 16 или 256 цветов. Однако почти все новые системы включают видеокарту и монитор, который может отображать так называемый 24-битный True Color. Это называется истинным цветом, потому что эти системы отображают 16 миллионов цветов — примерно столько, сколько может различить человеческий глаз.
СОВЕТ. Проверка системы
Возможно, вам придется настроить систему на полноцветный режим, это не происходит автоматически. Чтобы узнать, поддерживает ли ваша система Windows True Color (не все), откройте меню «Пуск» Windows, выберите «Настройки», чтобы каскадировать меню, а затем нажмите «Панель управления». Когда откроется панель управления, дважды щелкните значок или команду «Экран», чтобы отобразить диалоговое окно «Свойства дисплея», затем щелкните вкладку «Настройки» в диалоговом окне и проверьте параметр «Цветовая палитра».
Для черно-белых изображений требуется всего 2 бита, чтобы указать, какие пиксели белые, а какие черные. Изображения в градациях серого требуют 8 бит для отображения 256 различных оттенков серого. Цветные изображения отображаются с использованием 4 бит (16 цветов), 8 бит (256 цветов), 16 бит (65 тысяч цветов), называемых высоким цветом, и 24 бита (16 миллионов цветов), называемых истинным цветом. Некоторые камеры и сканеры будут использовать 30 или 36 бит на пиксель. Эти дополнительные биты используются для улучшения цвета изображения, поскольку оно обрабатывается до его окончательной 24-битной формы. (Примечание редактора: существуют ли 30/36-битные мониторы или принтеры?)
Обзор: биты и байты
Когда вы читаете о цифровых системах, вы часто встречаете термины «бит» и «байт».
Бит — это наименьшая цифровая единица. По сути, это один элемент компьютера, который, подобно лампочке, имеет только два возможных состояния: включено (указывает 1) или выключено (указывает 0). Термин «бит» представляет собой сокращение более описательной фразы «двоичная цифра».
Изучение глубины цвета
На этом рисунке и в части 4 листа Excel "Калькулятор размера изображения" вычисляется общее количество пикселей в изображении при вводе ширины и высоты изображения в пикселях.
<р>1. Введите любые биты на пиксель из таблицы глубины цвета (в строке 7 и последующих) в этой строке. <р>2. Формула в этой строке вычисляет количество возможных цветов, возводя число 2 до количества битов на пиксель. <р>3. Введите в этой строке ширину цифрового изображения в пикселях. <р>4. Введите высоту цифрового изображения в пикселях в этой строке. <р>5. Формула в этой строке вычисляет общее количество пикселей в изображении путем умножения ширины изображения на его высоту. <р>6. Формула в этой строке вычисляет размер несжатого файла, который потребуется для хранения изображения с указанным размером и глубиной цвета. Размеры файлов указаны в байтах, килобайтах и мегабайтах.Разрешение — не единственный фактор, влияющий на качество изображений. Не менее важно количество цветов в изображении.Когда вы смотрите на естественную сцену или хорошо сделанную цветную фотографию, вы можете различать миллионы цветов. Цифровые изображения могут приблизиться к этому цветовому реализму, но то, сделают ли они это в вашей системе, зависит от ее возможностей и настроек. Количество цветов в изображении или количество цветов, которые может отображать система, называется глубиной цвета, глубиной пикселей или глубиной в битах. Старые ПК застряли с дисплеями, отображающими только 16 или 256 цветов. Однако почти все новые системы включают видеокарту и монитор, который может отображать так называемый 24-битный True Color. Это называется истинным цветом, потому что эти системы отображают 16 миллионов цветов — примерно столько, сколько может различить человеческий глаз.
СОВЕТ. Проверка системы
Возможно, вам придется настроить систему на полноцветный режим, это не происходит автоматически. Чтобы узнать, поддерживает ли ваша система Windows True Color (не все), откройте меню «Пуск» Windows, выберите «Настройки», чтобы каскадировать меню, а затем нажмите «Панель управления». Когда откроется панель управления, дважды щелкните значок или команду «Экран», чтобы отобразить диалоговое окно «Свойства дисплея», затем щелкните вкладку «Настройки» в диалоговом окне и проверьте параметр «Цветовая палитра».
Для черно-белых изображений требуется всего 2 бита, чтобы указать, какие пиксели белые, а какие черные. Изображения в градациях серого требуют 8 бит для отображения 256 различных оттенков серого. Цветные изображения отображаются с использованием 4 бит (16 цветов), 8 бит (256 цветов), 16 бит (65 тысяч цветов), называемых высоким цветом, и 24 бита (16 миллионов цветов), называемых истинным цветом. Некоторые камеры и сканеры будут использовать 30 или 36 бит на пиксель. Эти дополнительные биты используются для улучшения цвета изображения, поскольку оно обрабатывается до его окончательной 24-битной формы. (Примечание редактора: существуют ли 30/36-битные мониторы или принтеры?)
Обзор: биты и байты
Когда вы читаете о цифровых системах, вы часто встречаете термины «бит» и «байт».
Бит — это наименьшая цифровая единица. По сути, это один элемент компьютера, который, подобно лампочке, имеет только два возможных состояния: включено (указывает 1) или выключено (указывает 0). Термин «бит» представляет собой сокращение более описательной фразы «двоичная цифра».
Изучение глубины цвета
На этом рисунке и в части 4 листа Excel "Калькулятор размера изображения" вычисляется общее количество пикселей в изображении при вводе ширины и высоты изображения в пикселях.
<р>1. Введите любые биты на пиксель из таблицы глубины цвета (в строке 7 и последующих) в этой строке. <р>2. Формула в этой строке вычисляет количество возможных цветов, возводя число 2 до количества битов на пиксель. <р>3. Введите в этой строке ширину цифрового изображения в пикселях. <р>4. Введите высоту цифрового изображения в пикселях в этой строке. <р>5. Формула в этой строке вычисляет общее количество пикселей в изображении путем умножения ширины изображения на его высоту. <р>6. Формула в этой строке вычисляет размер несжатого файла, который потребуется для хранения изображения с указанным размером и глубиной цвета. Размеры файлов указаны в байтах, килобайтах и мегабайтах.Очевидно, что значения пикселей, хранящиеся в файле, соответствуют цветам. Но как на самом деле задаются цвета?
Однобитные пиксельные данные, которые могут принимать значения 0 и 1, могут полностью представлять только изображения, содержащие два цвета. Таким образом, есть только два способа сопоставления значений пикселей в файле с цветами на экране.В большинстве ситуаций вы обнаружите, что уже существует соглашение, устанавливающее, какое значение соответствует какому цвету, хотя в файле может быть доступен отдельный механизм для изменения этого. Это определение также может быть изменено приложением визуализации на лету.
Пиксельные данные, состоящие из более чем одного бита на пиксель, обычно представляют собой набор значений индекса в цветовой палитре, хотя в некоторых случаях существует прямое числовое представление цвет в схеме определения цвета.
Указание цвета с помощью палитр
Палитра, которую иногда называют картой цветов, картой индексов, таблицей цветов или справочной таблицей (LUT), представляет собой одномерную массив значений цвета. Как следует из синонима справочная таблица, это краеугольный камень метода, с помощью которого можно косвенно обращаться к цветам, указывая их позиции в массиве. Используя этот метод, данные в файле можно хранить в виде серии значений индекса, обычно небольших целых значений, что может значительно уменьшить размер пиксельных данных, когда необходимо представить только небольшое количество цветов. Считается, что растровые изображения, использующие этот метод представления цвета, используют косвенное или псевдоцветное хранилище.
Например, четырехбитные пиксельные данные можно использовать для представления изображений, состоящих из 16 цветов. Эти 16 цветов обычно определяются в палитре, которая почти всегда включается где-то в файле. Каждое из значений пикселей, составляющих данные пикселей, является индексом в этой палитре и состоит из одного из значений от 0 до 15. Задача приложения рендеринга состоит в том, чтобы прочитать и изучить значение пикселя из файла, использовать его в качестве индекса. в палитру и получить значение цвета из палитры, которое затем используется для указания цветного пикселя на устройстве вывода.
На рис. 2-4 показано, как можно использовать палитру для указания цвета.
Рисунок 2-4: Использование палитры для задания цвета
Палитра представляет собой набор цветов, заданных максимально точно. На практике каждый элемент палитры обычно имеет длину 24 бита или три байта, хотя для обеспечения будущего расширения и машинных зависимостей каждый элемент иногда сохраняется как 32 бита или четыре байта. Любопытно, что цветовые модели, многие из которых существовали до компьютерной эры, часто строятся вокруг равного разделения возможных цветов на три переменные, таким образом аккуратно умещаясь в три байта памяти для хранения данных. (Мы включили обсуждение цветовых моделей в раздел «Цвет» далее в этой главе.)
Это означает, что палитры в три или четыре раза больше, чем максимальное количество определенных цветов. Например, 4-битная цветовая палитра:
в зависимости от того, три или четыре байта используются для хранения каждого определения цвета.
Проблемы при использовании палитр
Допустим, что значение (255,0,0) представляет красный цвет в цветовой модели, используемой нашим форматом изображения. Мы позволим нашей примерной палитре определить 16 цветов, организованных в виде массива из 16 элементов:
Поскольку (255,0,0) является третьим элементом в палитре, мы можем сохранить значение 2 (если массив отсчитывается от нуля, как в языке C), с подразумеваемым соглашением, что значения должны интерпретироваться как значения индекса в массиве. Таким образом, каждый раз, когда в пиксельных данных встречается спецификация для красного цвета, мы можем вместо этого сохранить 2, и мы можем сделать то же самое для других цветов, найденных в изображении.
Информация о цвете может занимать много места. В некоторых случаях использование палитр делает хранение цветов более эффективным; в других случаях хранение цветов напрямую, а не через палитры, более эффективно.
В более крупных и сложных форматах изображений непрямое хранение с помощью палитр экономит место за счет уменьшения объема данных, хранящихся в файле. Если вы, например, используете формат, который хранит три байта информации о цвете на пиксель (обычно используемый метод) и может использовать до 256 цветов, значения пикселей, составляющие растровое изображение изображения размером 320x200 пикселей, будут занимать 192 000 ( 320*200*3) байт памяти. Если бы в том же изображении вместо этого использовалась палитра с 256 3-байтовыми элементами, каждый пиксель в растровом изображении должен был бы иметь размер только в один байт, чего достаточно для хранения значения индекса карты цветов в диапазоне от 0 до 255. Это исключает два из каждых трех байтов в каждом пикселе, уменьшая необходимый объем хранилища до 64 000 (320 * 200 * 1) байт.
На самом деле, мы должны добавить длину самой палитры, которая составляет 768 (256 * 3) байтов, поэтому соответствующие данные в файле будут иметь длину 64 768 байтов, что позволит сэкономить почти в 3 раза. три над прежним методом хранения. (Обратите внимание, однако, что если объем растровых данных в файле очень мал, накладные расходы на хранение, вызванные включением палитры, могут свести на нет любую экономию, полученную за счет изменения метода хранения.)
Непрямое сохранение цвета с помощью палитр имеет ряд преимуществ помимо очевидных. Во-первых, если вам нужно знать, сколько фактических цветов хранится в изображении (т. е. 256-цветное изображение не всегда содержит 256 цветов), прочитать палитру и определить, сколько ее элементов является простой задачей, несложно. используются или являются дубликатами других. Неиспользуемые элементы в большинстве форматов обычно обнуляются.
Палитры также удобны, когда вы хотите изменить цвета изображения. Например, если вы хотите изменить все красные пиксели в визуализируемом изображении на зеленые, все, что вам нужно сделать, это изменить соответствующее значение, определяющее красный цвет в палитре, на соответствующее значение для зеленого цвета.
Как мы уже упоминали, использование палитр уместно не во всех случаях. Сама палитра занимает много места. Например, палитра, содержащая 32 768 цветов, займет не менее 98 304 байта дискового пространства. По этой причине изображения, содержащие более 256 цветов, обычно хранятся в формате буквальный, абсолютный или истинный цвет (а не в палитрах), где каждое значение пикселя соответствует непосредственно одному цвету.
Палитры были разработаны для решения проблемы ограниченного количества цветов, доступных на некоторых устройствах отображения. Однако, если устройство вывода не обеспечивает аппаратную поддержку прикладного программного обеспечения, использование формата на основе палитры добавляет дополнительный уровень сложности до появления изображения на устройстве отображения. Если устройство отображения может поддерживать истинный цвет, может быть лучше использовать формат, поддерживающий истинный цвет, даже если изображение может иметь только несколько цветов. Как правило, изображения, содержащие тысячи или миллионы цветов, лучше хранить в формате, поддерживающем истинный цвет, поскольку количество и размер элементов, необходимых в формате на основе палитры, может привести к тому, что размер палитры, необходимой для того, чтобы приблизиться к размеру сами данные растрового изображения.
Прежде чем мы продолжим обсуждение того, как цвета хранятся в файле, мы должны немного отвлечься и поговорить о том, как определяются цвета. Обсуждение палитр возобновляется в разделе ниже под названием ". И назад к палитрам".
Несколько слов о цветовых пространствах
Цвета определяются указанием нескольких, обычно трех, значений. Эти значения определяют количество каждого из набора основных цветов, иногда называемых цветовыми каналами, которые смешиваются для получения составных цветов. Затем в виде упорядоченного набора значений указывается составной цвет. Если «упорядоченный набор значений» звучит для вас звоночком (так же, как и «упорядоченная пара»), будьте уверены, что то же самое было и для людей, которые создают определения цвета. Говорят, что определенный цвет представляет собой точку на графическом графике всех возможных цветов. Из-за этого люди иногда называют цвет точкой в цветовом пространстве.
RGB — это обычное определение цвета. В цветовой модели или системе RGB цвета красный, зеленый и синий считаются основными и неразложимыми. Цвет можно указать, предоставив триплет RGB в форме (R, G, B). Люди иногда думают о цветовых триплетах с точки зрения процентов, хотя на самом деле проценты не используются для выражения фактических определений цвета. Цвета в цветовой модели RGB можно охарактеризовать следующим образом:
(0%, 0%, 0%) | Черный |
(100%, 100% , 100%) | Белый |
(100%, 0%, 0%) | Красный | TR>
(50%, 50%, 50%) | Светло-серый |
Есть много усовершенствований, и вы всегда можете найти кого-нибудь, кто поспорит о том, какие числа определяют какой цвет. Однако это основная идея. Говорят, что каждый из этих триплетов RGB определяет точку в цветовом пространстве RGB.
При сохранении данных о цвете в файле более практично указывать значение каждого компонента цвета не в процентах, а в виде значения в предварительно определенном диапазоне. Если пространство, выделенное для каждого компонента цвета, составляет байт (восемь бит), естественный диапазон составляет от 0 до 255. Поскольку цвета обычно определяются с использованием 24 битов или трех байтов, естественно присвоить каждый из трех байтов для использования в качестве значения цветового компонента в цветовой модели. Например, в цвете RGB с использованием трех байтов для каждого цвета цвета обычно хранятся в виде триплетов RGB в диапазоне от 0 до 255, где 0 соответствует нулевой интенсивности, а 255 — максимальной интенсивности.
Таким образом, значения пикселей в предыдущем примере будут следующими:
(0,0,0) | Черный |
(255,255,255) | Белый |
(255,0,0) | Красный |
(127,127,127) TD> | Светло-серый |
В этом примере, конечно, предполагается, что 0 означает наименьшее количество, а 255 — наибольшее количество определенного цветового компонента.Иногда вы обнаружите, что создатель формата или архитектор приложения извращенно решил инвертировать «естественный» смысл определения цвета и сделал RGB (0, 0, 0) белым, а RGB (255, 255, 255) черным. но, к счастью, это бывает редко.
В следующем в этой главе разделе под названием "Как представляются цвета" описывается RGB и другие цветовые системы.
Еще немного о Truecolor
Слово истинный цвет появляется в обсуждениях изображений, содержащих большое количество цветов. Что мы подразумеваем под большим в этом контексте? Большинство людей считают, что от 200 до 300 000 — это очень много. Напомним из приведенного выше обсуждения, что палитра, содержащая 256 цветовых определений, использует максимум 64 байта памяти, а палитра с 32 768 или более цветами использует как минимум почти 100 КБ. В свете этого 256 — это не «большое» количество цветов. Однако большинство людей считают 32 768, 65 536 и 16,7 миллиона цветов «большими». И это только то место, которое занимает палитра; мы даже не говорим о данных изображения!
Вместо включения в файл огромной палитры, в которой значения пикселей являются индексами палитры, значения пикселей можно рассматривать как буквальные значения цвета. На практике значения пикселей состоят из трех частей, и каждая часть представляет цвет компонента в используемой цветовой модели (например, RGB). Значения пикселей из изображений, содержащих 32 768 или 65 536 цветов, обычно хранятся в файле в виде двух последовательных байтов или 16 битов, поскольку почти все машины обрабатывают данные как минимум по одному байту за раз. Приложение для визуализации должно считывать эти 16-битные значения пикселей и разлагать их на 5-битные значения компонентов цвета:
На самом деле более распространено следующее подразделение:
Здесь дополнительный бит дается зеленому компоненту, потому что человеческий глаз более чувствителен к зеленому, чем к красному и синему. Порядок цветовых компонентов произвольный, а порядок и интерпретация цветовых компонентов в значении пикселя варьируются от формата к формату. Таким образом, компоненты 16-битного значения пикселя могут интерпретироваться как (G,B,R) так же легко, как (R,G,B) и (B,R,G). Указание цветов RGB в последовательности (R,G,B) имеет некоторую привлекательность, поскольку цвета располагаются по электромагнитной частоте, определяя их порядок в физическом спектре.
24-битные значения пикселей хранятся в трех байтах:
Равномерное разделение между цветовыми компонентами модели, по одному байту на каждый компонент, является наиболее распространенной схемой, хотя и другие деления не являются чем-то необычным.
. И снова к палитрам
Ранее в этой главе мы познакомились с использованием палитр. Здесь мы продолжим обсуждение различных типов палитр и проиллюстрируем их некоторыми реальными примерами.
Типы палитр
Существует несколько разных способов говорить о палитрах.
Одноканальная палитра содержит только одно значение цвета для каждого элемента, и это значение цвета сопоставляется непосредственно с одним цветом пикселя. Каждый элемент одноканальной палитры может иметь, например, следующую форму:
Многоканальная палитра (или многоканальная палитра) содержит два или более отдельных значения цвета для каждого элемента цвета. Каждый элемент трехканальной палитры, использующий красный, зеленый и синий цвета, может иметь, например, следующую форму:
Здесь R указывает значение одного канала, G указывает значение второго канала, а B указывает значение третьего канала. Если изображение содержит четыре компонента цвета, как в цветовой системе CMYK, описанной далее в этой главе, может использоваться 4-канальная цветовая карта и т. д.
Палитры, ориентированные на пиксели, хранят все данные о цвете пикселей в виде непрерывных битов в каждом элементе массива. Как мы отмечали выше, в палитре RGB каждый элемент палитры состоит из тройки значений. Это соответствует способу хранения значений пикселей в файле, обычно в порядке RGB или BGR:
Таким образом, палитра выглядит так:
В плоскостной палитре компоненты цвета пикселей разделены; соответствующие значения цветовых каналов хранятся вместе, и палитра выглядит так, как будто она состоит из трех одноканальных палитр, по одной для каждого цветового канала. Это соответствует способу расположения значений пикселей в файле (т. е. в виде нескольких цветовых плоскостей):
Таким образом, небольшая палитра может выглядеть так:
Хотя это может выглядеть как одна палитра, содержащая три цветовых плоскости, обычно лучше визуализировать ее как три отдельные палитры, каждая из которых содержит одну цветовую плоскость. Таким образом, у вас не возникнет проблем с обращением к нулю первого элемента каждой цветовой плоскости.
Из приведенного выше обсуждения должно быть ясно, что как одноканальные, так и многоканальные палитры могут быть ориентированы на пиксели или плоскости. Например:
-
Одноканальная пиксельная палитра содержит одно значение пикселя для каждого элемента.
Рис. 2-5 иллюстрирует эти различные типы палитр.
Рисунок 2-5: Типы палитр
Также интересно отметить, что используемые элементы в палитре не всегда располагаются непрерывно, не всегда упорядочены и не всегда начинаются с заполненного нулевого значения индекса. Двухцветное изображение с 256-цветной палитрой (да, это было сделано) может иметь индекс цветов в позициях 0 и 1, 0 и 255, 254 и 255 или даже 47 и 156. Расположение определяется программным обеспечением. запись файла изображения и, следовательно, в конечном итоге программистом, создавшим программное приложение. (Мы решили не комментировать дальше.)
Примеры палитр
Давайте рассмотрим несколько примеров палитр. Самой простой является двухцветная или монохромная палитра:
В этом примере мы видим двухэлементный массив, содержащий значения цвета 0x00 и 0x01 в элементах 0 и 1 соответственно. В файле все значения пикселей являются индексами. Пиксель со значением 0 служит индексом цвета, представленного значением 0x00. Точно так же пиксель со значением 1 служит индексом цвета, представленного значением 0x01. Поскольку это растровое изображение содержит только два цвета, а цвет каждого пикселя может быть представлен одним битом, может показаться, что проще хранить эти значения непосредственно в растровом изображении в виде битовых значений, чем использовать палитру. Конечно, это проще, но некоторые форматы, содержащие только палитры, требуют, чтобы этот тип палитры присутствовал даже для монохромных растровых изображений.
Это более практичный пример: палитра из 16 элементов, используемая для отображения палитры в оттенках серого:
Обратите внимание, что в этих двух примерах каждый элемент цвета представлен одним значением, поэтому это одноканальная палитра. С таким же успехом мы могли бы использовать трехканальную палитру, представляя каждый элемент серого цвета его значением RGB.
Этот последний пример является примером многоканальной палитры, ориентированной на пиксели. Мы можем изменить его, чтобы хранить информацию о цвете в плоскости, ориентированной следующим образом:
Наконец, давайте рассмотрим реальный пример — широко используемую палитру IBM VGA. Эта 256-цветная палитра содержит 16-цветную подпалитру («палитра EGA»), 16-элементную полутоновую палитру и палитру из 24 цветов, каждый из которых имеет девять различных вариаций насыщенности и интенсивности. Обратите внимание, что последние восемь элементов палитры не используются и, таким образом, равны нулю:
Эта страница взята из Энциклопедии форматов графических файлов и используется O'Reilly по лицензии Creative Common/Attribution.
Bpp или бит на пиксель обозначает количество бит на пиксель. Количество различных цветов в изображении зависит от глубины цвета или количества битов на пиксель.
Кратко о математике:
Это похоже на игру с двоичными битами.
Сколько чисел может быть представлено одним битом.
Сколько двухбитовых комбинаций можно составить.
Если мы придумаем формулу для расчета общего количества комбинаций, которые можно составить из бит, она будет такой.
Где bpp обозначает количество бит на пиксель. Подставьте 1 в формулу, получите 2, подставьте 2 в формулу, получите 4. Она растет экспоненциально.
Количество разных цветов:
Теперь, как мы сказали в начале, количество различных цветов зависит от количества битов на пиксель.
Таблица некоторых битов и их цвета приведены ниже.
Бит на пиксель | Количество цветов |
---|---|
1 бит на пиксель | 2 цвета |
2 бита на пиксель | 4 цвета |
3 бита на пиксель | 8 цветов |
4 бита на пиксель | 16 цветов |
5 бит на пиксель | 32 цвета |
6 бит на пиксель | 64 цвета |
7 бит на пиксель | 128 цветов |
8 бит на пиксель | 256 цветов |
10 бит на пиксель | 1024 цвета |
16 бит на пиксель | 65536 цветов |
24 бит на пиксель | 16777216 цветов (16,7 миллиона цветов) |
32 бита на пиксель | 4294967296 цветов (4294 миллиона цветов) | тр> таблица>