Сколько памяти необходимо для хранения изображения размером 320x200 пикселей в четырех цветах

Обновлено: 27.06.2024

Очевидно, что значения пикселей, хранящиеся в файле, соответствуют цветам. Но как на самом деле задаются цвета?

Однобитные пиксельные данные, которые могут принимать значения 0 и 1, могут полностью представлять только изображения, содержащие два цвета. Таким образом, есть только два способа сопоставления значений пикселей в файле с цветами на экране. В большинстве ситуаций вы обнаружите, что уже существует соглашение, устанавливающее, какое значение соответствует какому цвету, хотя в файле может быть доступен отдельный механизм для изменения этого. Это определение также может быть изменено приложением визуализации на лету.

Пиксельные данные, состоящие из более чем одного бита на пиксель, обычно представляют собой набор значений индекса в цветовой палитре, хотя в некоторых случаях существует прямое числовое представление цвет в схеме определения цвета.

Указание цвета с помощью палитр

Палитра, которую иногда называют картой цветов, картой индексов, таблицей цветов или справочной таблицей (LUT), представляет собой одномерную массив значений цвета. Как следует из синонима справочная таблица, это краеугольный камень метода, с помощью которого можно косвенно обращаться к цветам, указывая их позиции в массиве. Используя этот метод, данные в файле можно хранить в виде серии значений индекса, обычно небольших целых значений, что может значительно уменьшить размер пиксельных данных, когда необходимо представить только небольшое количество цветов. Считается, что растровые изображения, использующие этот метод представления цвета, используют косвенное или псевдоцветное хранилище.

Например, четырехбитные пиксельные данные можно использовать для представления изображений, состоящих из 16 цветов. Эти 16 цветов обычно определяются в палитре, которая почти всегда включается где-то в файле. Каждое из значений пикселей, составляющих данные пикселей, является индексом в этой палитре и состоит из одного из значений от 0 до 15. Задача приложения рендеринга состоит в том, чтобы прочитать и изучить значение пикселя из файла, использовать его в качестве индекса. в палитру и получить значение цвета из палитры, которое затем используется для указания цветного пикселя на устройстве вывода.

На рис. 2-4 показано, как можно использовать палитру для указания цвета.

Рисунок 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%) Красный
(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) Светло-серый

В этом примере, конечно, предполагается, что 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: Типы палитр

[Графика: рис. 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.

Очевидно, что значения пикселей, хранящиеся в файле, соответствуют цветам. Но как на самом деле задаются цвета?

Однобитные пиксельные данные, которые могут принимать значения 0 и 1, могут полностью представлять только изображения, содержащие два цвета. Таким образом, есть только два способа сопоставления значений пикселей в файле с цветами на экране. В большинстве ситуаций вы обнаружите, что уже существует соглашение, устанавливающее, какое значение соответствует какому цвету, хотя в файле может быть доступен отдельный механизм для изменения этого. Это определение также может быть изменено приложением визуализации на лету.

Пиксельные данные, состоящие из более чем одного бита на пиксель, обычно представляют собой набор значений индекса в цветовой палитре, хотя в некоторых случаях существует прямое числовое представление цвет в схеме определения цвета.

Указание цвета с помощью палитр

Палитра, которую иногда называют картой цветов, картой индексов, таблицей цветов или справочной таблицей (LUT), представляет собой одномерную массив значений цвета. Как следует из синонима справочная таблица, это краеугольный камень метода, с помощью которого можно косвенно обращаться к цветам, указывая их позиции в массиве. Используя этот метод, данные в файле можно хранить в виде серии значений индекса, обычно небольших целых значений, что может значительно уменьшить размер пиксельных данных, когда необходимо представить только небольшое количество цветов. Считается, что растровые изображения, использующие этот метод представления цвета, используют косвенное или псевдоцветное хранилище.

Например, четырехбитные пиксельные данные можно использовать для представления изображений, состоящих из 16 цветов. Эти 16 цветов обычно определяются в палитре, которая почти всегда включается где-то в файле. Каждое из значений пикселей, составляющих данные пикселей, является индексом в этой палитре и состоит из одного из значений от 0 до 15.Задача приложения рендеринга состоит в том, чтобы прочитать и проверить значение пикселя из файла, использовать его в качестве индекса в палитре и получить значение цвета из палитры, которое затем используется для указания цветного пикселя на выходе. устройство.

На рис. 2-4 показано, как можно использовать палитру для указания цвета.

Рисунок 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%) Красный
(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) Светло-серый

В этом примере, конечно, предполагается, что 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: Типы палитр

[Графика: рис. 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.

Видео – основная техническая информация

Несжатая 24-битная неподвижная графика
640 x 480 пикселей = 307 200 пикселей на кадр
307 200 x 24 бит на пиксель /8 (бит на байт) = 921 600 байт на кадр <>Количество бит -Уменьшение глубины больше для графики с небольшим количеством цветов, такой как штриховые рисунки или иллюстрации. Для фотографических изображений требуется много цветов, поэтому сжатие обычно дает лучшие результаты. Форматы JPEG и GIF работают хорошо. Выберите желаемую степень сжатия. Сжатие 20-75 % и изменение размера цифровых фотографий для использования на компьютере дает приемлемый компромисс между качеством и размером файла. Тест.

Несжатое 24-битное видео
("легальное" видео имеет частоту 29,97 кадров в секунду и, следовательно, меньше; цветовое пространство YUV имеет 16-битное разрешение, поэтому файлы меньше)


Для отображения на мониторе компьютера предпочтительнее уменьшить размер кадра до 320 x 240 (одна четверть размера).
Уменьшение частоты кадров до 24 кадров в секунду допустимо.

Уменьшение частоты кадров до 10 кадров в секунду может привести к прерывистому качеству и оставит скорость передачи данных на уровне 2,3 МБ/с. (Эта скорость передачи данных слишком высока для старых жестких дисков, старых компакт-дисков (2x привод ~ 200 Кбайт/сек) или модемов (модем 28,8 ~2,88 Кбайт/сек; модем 56,6~5,66 Кбайт/сек).

Более сильное сжатие уменьшит это еще больше, но более высокая битовая глубина сделает сжатое видео лучше.

Кодеки (компрессор/декомпрессор):
Cinepak, Indeo и Power Video — лучший выбор кодеков для воспроизведения компакт-дисков с помощью QuickTime или Video For Windows. Эти кодеки в настоящее время не поддерживают потоковую передачу или обеспечивают хорошее качество изображения при низких скоростях передачи данных, необходимых для доставки через Интернет. Решения для этого класса видео включают Real Media, VDOLive, Xing, TrueStream, Vivo, Vosaic и VXtreme.

  • MPEG – 1 — качество компакт-диска.
  • MPEG-2 – качество DVD (файлы в этом формате слишком большие и медленные для Интернета)
  • MPEG–3 – mp3
  • MPEG – 4 -- ACC
    В каждом из них используются разные кодеки (сжатие/распаковка) и работают с разными программами просмотра.

Оборудование, необходимое для создания видеоклипов NTSC:

Для записи одной секунды видео требуется около 15 МБ дискового пространства.
Одна минута отснятого видео (высококачественный формат DV/AVI) потребует 178 Мб дискового пространства. Итак, 3 минуты заполнят CD-ROM.
Один час отснятого видео займет около 13 гигабайт на жестком диске.

Поэтому вам нужен жесткий диск с большим количеством свободного места, желательно непрерывным (используйте дефрагментацию перед захватом фильма) - еще лучше, используйте второй жесткий диск, предназначенный только для работы со звуком/видео, чтобы вы могли полностью стереть его. между проектами.

Для захвата видео с видеомагнитофона требуется карта видеозахвата.
Вам нужна цифровая видеокамера/мини-камера DV. (Mini-DV намного лучше, чем VHS.) Профессиональные модели (5000–6000 долларов) имеют широкоэкранный формат 16:9 и соотношение сторон 4:3, частоту кадров 30 или 24 и 3CCD для отдельной обработки RGB. Более простые модели (от 600 долларов США) имеют один ПЗС-чип для фильтрации основных цветов RGB.

Для захвата видео с камеры mini DV (IEEE 1394, с кабелем FireWire — 4-контактный и 6-контактный) вам потребуется

1) карта видеоввода и FireWire (IEEE 1394) для подключения камеры к ПК; теперь ПК управляет камерой -- у Mac это встроено)
2) карта адаптера PCI или встроенный FireWire для подключения видеокамеры DV
или
3) порт USB или внешний видеоадаптер -- подключите аналоговый видеокабель от видеокамеры или видеомагнитофона
и
4) внешний жесткий диск (128 ГБ)
5) быстрый процессор (1,5 ГБ и выше) ).

Для создания компакт-диска или DVD-диска вам потребуется привод для записи компакт-дисков или DVD-дисков.
В настоящее время максимальная скорость устройства для записи компакт-дисков составляет 32 X. Вам потребуется устройство для записи компакт-дисков со скоростью не менее 12 X; у DVD-рекордера 8X.Когда вы покупаете носитель, убедитесь, что его скорость соответствует скорости записывающего устройства, или уменьшите его настройки, чтобы он создавал CD или DVD со скоростью, на которую рассчитан диск.

Необходимое программное обеспечение:

Windows XP поставляется с Windows Movie Maker 2 (в папке Аксессуары), который позволяет записывать видео с видеокамеры или видеомагнитофона. Затем вы можете вносить основные изменения с помощью NLE (нелинейного редактирования), вырезания и вставки, вставки переходов и эффектов, а также добавления заголовков и титров. Наконец, вы можете сохранить в формате DV/AVI (самое высокое качество для DVD -- 30 секунд = 116 МБ) или в сжатом формате WMV для электронной почты, веб-страницы или компакт-диска (30 секунд = 2 МБ).

Imovie для Mac является эквивалентом. Он имеет очень приятный интерфейс и позволяет сохранять в формате Quicktime .qt или .avi или создавать DVD.

(Для профессиональной работы необходимо приобрести более качественное программное обеспечение для редактирования видео.)

Подключите камеру к компьютеру с помощью FireWire и откройте Windows Movie Maker.
Чтобы захватить пленку с камеры, установите элемент управления в положение «Воспроизвести видеомагнитофон». Таким образом ПК будет управлять камерой, и вы сможете легко настроить параметры, отображаемые на ПК, запускать и останавливать.
Если для элемента управления не установлено значение «Воспроизвести видеомагнитофон», вы можете записывать прямую трансляцию непосредственно на компьютер.

Всегда записывайте в максимальном качестве, экспортируйте/сохраняйте в любом формате, который может использовать ваша целевая аудитория. Для длинного видео создайте CD или DVD диски.

После редактирования видео сохраните его в формате, который может быть использован вашей аудиторией:
Большие файлы должны храниться на веб-сервере, поддерживающем потоковое видео, либо на компакт-диске или DVD.
Очень маленькие файлы, сжатые, могут быть загружены на ваш веб-сайт или в Blackboard для просмотра в Интернете или для загрузки на чужой компьютер.

Убедитесь, что они работают с одним из трех или четырех самых популярных в настоящее время плееров/просмотрщиков, которые можно загрузить бесплатно и легко установить:

QuickTime, Real, Windows Media Player, Winamp. Последняя версия QuickTime Pro (v. 7) превосходна.

Ссылки:
Windows Movie Maker 2 (входит в состав Windows XP — убедитесь, что вы загрузили последний пакет обновлений):

Этот контент был заархивирован и больше не поддерживается Университетом Индианы. Информация здесь может быть неточной, а ссылки могут быть недоступны или ненадежны.

На протяжении многих лет в ПК использовалось множество различных мониторов и видеокарт. Видеокарты и мониторы описываются следующими характеристиками:

  • Количество пикселей. Пиксель – это одна точка, отображаемая на экране. Большинство экранных изображений состоят из сотен пикселей. Добавление большего количества пикселей к изображению делает изображение более подробным. Изображение на экране обычно описывается двумя числами. Первое число — это количество пикселей в верхней части экрана, а второе — количество пикселей в нижней части экрана.
  • Количество цветов. Графические карты могут отображать ограниченное количество цветов. Самые старые мониторы могли отображать только два или четыре цвета. В настоящее время 256 цветов — это минимум для большинства систем. Количество цветов выше 256 обычно описывается тем, сколько компьютерных битов используется для хранения цвета в памяти. 16 бит – более 65 000 цветов, 2 4 бит – более 16 миллионов цветов.

Ниже перечислены некоторые из наиболее распространенных стандартов видеокарт и мониторов для ПК:

  • SVGA (Super VGA). Одна из самых популярных этикеток, которые наносятся на видеокарты и мониторы. Карта или монитор SVGA способны отображать больше пикселей (точек на экране) и/или цветов, чем базовый VGA. Например, видеокарта SVGA может отображать 16-битный цвет с разрешением 800 x 600 пикселей.
  • Карты 3D-ускорения. Эти карты содержат специализированное оборудование, которое ускоряет процесс отображения трехмерных изображений на экране. Обычно они предназначены для работы с монитором SVGA.
  • VGA (адаптер видеографики): в настоящее время является базовым стандартом для видеокарт и мониторов ПК. True VGA поддерживает 16 цветов при разрешении 640 x 480 пикселей или 256 цветов при разрешении 320 x 200 пикселей.
  • XGA: стандарт, используемый в некоторых моделях IBM PS/2. XGA поддерживает 256 цветов при разрешении 1024 x 728 пикселей или 16 битных цветов при разрешении 640 x 480 пикселей.
  • EGA (улучшенный графический адаптер): после CGA — адаптер, способный отображать 16 цветов при разрешении экрана 640 x 350 пикселей.
  • CGA (адаптер цветной графики): первый цветной монитор и видеокарта для ПК. Возможность воспроизведения 16 цветов с разрешением 160 x 200 пикселей.
  • MDA (адаптер монохромного дисплея): монитор или видеокарта, которые могут отображать только один цвет. Больше не используется, но может быть найден в некоторых старых системах. Обычно поддерживает только текст.
  • Графическая карта Hercules: карта, позволяющая ПК отображать графику на мониторе MDA.

Дополнительную информацию о стандартах отображения видео на ПК можно найти по адресу:

Читайте также: