Как кодируется пиксель на экране монитора

Обновлено: 30.06.2024

Что такое "WUXGA"? Вы можете попытаться догадаться, что это редкий четырехрогий бовид, обитающий в Центральной Азии, но на самом деле это одна из гротескных аббревиатур, которую используют производители персональных компьютеров, дисплеев, мониторов и проекторов, чтобы скрыть одну из самых фундаментальных характеристик оборудование, которое вам продают: сколько пикселей оно может отображать.

После выпуска персонального компьютера IBM в 1982 году в индустрии ПК появилась (плохая) привычка идентифицировать различные разрешения экрана по названию адаптера дисплея IBM или аналогичного адаптера, имеющего соответствующее максимальное разрешение. Поначалу это имело смысл: пользователю, чья машина была оснащена EGA (Enhanced Graphics Adaptor), нужно было искать только мониторы с пометкой «EGA Compatible». Шли годы, и закон Мура творил чудеса с разрешением дисплея и скоростью вычислений, по мере того как появлялись и принимались более высокие разрешения, придумывалось все больше и больше мнемоник, что привело к сегодняшнему смехотворному супу из алфавита. Многие из нынешних акронимов на самом деле являются примерами «вложенных акронимов», которые так любят программисты на Лиспе и другие фанатики. Например, «WUXGA» — это «Wide UXGA», где «UXGA» означает «Ultra XGA», а «XGA» — это аббревиатура от «Extended Graphics Array» — три уровня аббревиатур!

"Почему нельзя просто сказать, сколько пикселей у этой чертовой штуковины?", — раздраженно бормочете вы. Что ж, если они не будут, я буду. В этом документе указаны все разрешения экрана, о которых я знаю, как используемые на текущем оборудовании, так и предполагаемые для будущих продуктов с более высоким разрешением. Некоторые названия и аббревиатуры для этих различных разрешений различаются, и некоторые продукты, особенно проекторы, в основном предназначенные для HDTV-видео, заявлены как совместимые с данным стандартом, но на самом деле отображают немного другое количество пикселей. Так что это больше маркетинговая чепуха, чем точная наука, и всегда разумно требовать от производителя подробные спецификации перед покупкой продукта, а не полагаться на утверждения о совместимости с одним или несколькими стандартами, указанными в мнемонике.

Нормальное (4×3) соотношение сторон экрана

Следующие форматы отображения обычно используются с экранами, имеющими отношение ширины к высоте 4/3 традиционного телевизионного вещания. Для каждого режима отображения даны ширина и высота в пикселях, общее количество пикселей и имя, из которого получена мнемоника. Соотношение "H/V" дает отношение ширины изображения к высоте в пикселях, в виде дроби, если оно точное, в противном случае - до двух знаков после запятой.

При настройке для заполнения экрана с отношением ширины к высоте 4/3 только те режимы отображения с соотношением Г/В точно 4/3 будут иметь «квадратные пиксели». Если соотношение размеров пикселей отличается от соотношения размеров физического экрана, количество пикселей на единицу длины будет различаться по вертикали и горизонтали, а круги, нарисованные с одинаковым радиусом в пикселях, будут отображаться на экране в виде эллипсов. Чтобы избежать этого искажения, графическое программное обеспечение должно дифференциально масштабировать изображения, чтобы компенсировать несоответствие между соотношением пикселей и физических размеров экрана. Обратите внимание, что древний IBM CGA на самом деле имеет соотношение пикселей 16/10, как и самые современные широкоэкранные дисплеи HDTV. Если вы увеличите изображение CGA, чтобы заполнить большой экран монитора HDTV, пиксели будут квадратными, хотя размером с большой палец!

Обозначения Quad и Hex появляются в качестве номенклатуры дисплеев с высоким разрешением. «Quad» относится к режиму с в четыре раза большим количеством пикселей (следовательно, в два раза больше вертикального и горизонтального размера в пикселях), чем предыдущий режим, а «Hex» обозначает дисплей с 16-кратным количеством пикселей (в четыре раза больше пикселей по вертикали и горизонтали). .

Широкое (16,9 или 16,10) соотношение сторон экрана

Телевидение высокой четкости (HDTV) определяет отношение ширины экрана к высоте от 16 до 9; цифровое вещание HDTV использует разрешение 1920×1080 пикселей для режима высокого разрешения, что как раз соответствует этому соотношению. (Фактические широковещательные изображения кодируются как 1920×1088 пикселей, поскольку кодирование MPEG-2 требует, чтобы число вертикальных строк было кратно 16.) Более широкое соотношение сторон экрана позволяет просматривать широкоэкранные фильмы, не затрачивая большую часть экрана на презентация в виде почтового ящика или жуткая адаптация "панорама и сканирование" к экрану 4 на 3.

Следующие режимы отображения компьютера предназначены для использования с широкоэкранными дисплеями в стиле HDTV. Большинство этих режимов имеют отношение ширины пикселя к высоте от 16 до 10, поскольку это дает размеры массива пикселей, с которыми легче справляться в компьютерном оборудовании и программном обеспечении. (Однако режим WXGA с несколько странными размерами 1366×768 пикселей находится в пределах одного пикселя с соотношением 16 на 9). 4 на 3 режима выше.

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

Сообщайте обо всех ошибках или упущениях в этом документе в bugs в fourmilab в период ch. Спасибо!

Ключевые слова: адаптация яркости, легкость, CRT, LCD, гамма-коррекция, sRGB, формат файла изображения, TIFF, OpenEXR, HDR, RAW, PNG, JPEG, JPG, HDRI, изображения с плавающей запятой, бит на пиксель, RGB, RGBA, альфа-канал, маска, PPM, растровое изображение, битовая глубина, квантование.

На предыдущем уроке мы узнали о цветах и ​​концепции цветового пространства. Однако конечная цель создания изображений — отобразить их каким-то образом, чтобы люди могли на них смотреть. Это требует, чтобы мы не только узнали о кодировании цветовых значений, как мы это делали в предыдущей главе, но также узнали, как эти цвета интерпретируются, декодируются или манипулируются устройствами отображения, а также как система человеческого зрения, которая является последней в цепочке, , реагирует на зрительные раздражители. В этом уроке мы рассмотрим три аспекта в этой цепочке, которые могут влиять на качество изображений, которые мы смотрим на экран компьютера: сам человеческий глаз и то, как он реагирует на яркость, технология экрана и, наконец, то, как мы кодировать значения пикселей в файле изображения (вторая глава).

Линейное цветовое пространство

В предыдущем уроке мы упоминали, что цветовые пространства XYZ и RGB являются линейными. Что это значит? Цветовое пространство является линейным, если при умножении цвета, выраженного в этой системе, на определенный коэффициент (скажем, на три) яркость или светимость этого цвета также умножается на тот же коэффициент (на три в нашем примере). Линейность в этом контексте относится к взаимосвязи между значениями и яркостью результирующего цвета. В компьютерной графике значения цвета, с которыми имеет дело средство визуализации, всегда выражаются в линейном цветовом пространстве. Все было бы просто, если бы везде сохранялась линейность, однако на самом деле нам нужно учитывать два фактора: человеческое зрение (опять же) и устройства отображения, такие как компьютерные экраны, которые, к сожалению, нелинейны. Начнем с человеческого зрения.

Человеческое зрение: адаптация к яркости


Рисунок 1. Нелинейная перцептивная реакция человеческого зрения на яркость называется яркостью и примерно соответствует кривой кубического корня. Источник, яркость которого составляет всего 18 % от эталонной яркости, кажется примерно вдвое менее ярким.

На предыдущем уроке мы уже узнали довольно много вещей о физиологии восприятия цвета, таких как трехцветное цветовое зрение, скотопическое (зрение в условиях низкой освещенности) и фотопическое зрение (зрение в условиях нормального освещения), функция яркости, которая описывает зрительную чувствительность человеческого глаза к свету с различной длиной волны и т. д. Еще одно важное свойство человеческого зрения, о котором мы еще не говорили, — это то, как оно реагирует на яркость. При очень слабом свете мы уже способны различать вещи. Свечи достаточно, чтобы начать различать вещи в комнате, хотя она гораздо менее яркая, чем солнце. В целом диапазон интенсивности света, к которому может адаптироваться человек, очень велик и составляет примерно от \(\) до \(>\). Однако мы не можем сразу воспринять этот диапазон интенсивностей. Свет свечи вряд ли повлияет на воспринимаемую яркость сцены, наблюдаемой в солнечный день. Способ, которым наш глаз справляется с таким большим диапазоном уровней освещенности, заключается в изменении его чувствительности к общей яркости сцены. Эта способность глаза очень быстро адаптироваться к уровням интенсивности света (в основном за счет расширения и сокращения радужной оболочки) известна как адаптация к яркости. Кроме того, реакция на уровни интенсивности света также нелинейна. Это просто означает, что глаза могут локально адаптироваться к различным уровням освещенности сцены и воспринимать более темные области намного ярче, чем они есть на самом деле, по сравнению с яркими частями сцены (человеческое зрение более чувствительно к небольшим изменениям яркости в темных областях, чем человеческое зрение). в светлых областях). Например, источник, яркость которого составляет всего 18% от эталонной яркости, кажется примерно вдвое менее ярким. Нелинейная перцептивная реакция человеческого зрения на яркость называется яркостью. Обычно считается, что эта характеристика (воспринимаемая яркость по сравнению с реальной яркостью) приблизительно представляет собой функцию кубического корня (рис. 1):

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

Компьютерные дисплеи: гамма-коррекция


Рисунок 2: нелинейная зависимость между напряжением и интенсивностью света ЭЛТ-монитора. Применение обратной гаммы позволяет скорректировать сигнал и получить линейный выходной сигнал.

У компьютерных экранов тоже есть свои свойства, о которых нам нужно знать, когда мы хотим отображать изображения контролируемым образом (т. е. быть уверенными, что после создания изображения разные зрители могут видеть одинаковые цвета и яркость уровней независимо от используемых устройств отображения). На заре компьютеров в большинстве мониторов использовались ЭЛТ (электронно-лучевые трубки). Проблема с этими экранами заключалась в том, что энергия или напряжение, используемые для управления яркостью точки на экране, и яркость этой точки не были линейными. Зависимость напряжения и яркости пикселей не была линейной. График используемого напряжения в зависимости от яркости, воспроизводимой на экране, дал кривую с рисунка 2. Эта нелинейная зависимость между яркостью и напряжением может быть представлена ​​с помощью следующего уравнения:

где показатель степени этой степенной функции, называемый \(\gamma\) (греческая буква гамма), находится где-то между 2,35 и 2,55. Что примечательно в кривой на рисунке 2, так это то, что она выглядит противоположной кривой на рисунке 1, но это всего лишь совпадение. Это свойство ЭЛТ-мониторов было серьезной проблемой, поскольку оно изменяет уровни отображаемых изображений, делая более низкие значения заметно темнее, чем они должны быть на самом деле. Решением этой проблемы было применение обратной гаммы, которая называлась гамма-коррекцией.

Эта гамма-коррекция обычно применялась камерами. В прежние времена сгенерированные компьютером изображения, все цвета которых, как мы упоминали, уже воспроизведены в линейном цветовом пространстве, также должны были быть сохранены или отображены с гамма-коррекцией для компенсации гаммы монитора. Сегодня, несмотря на то, что ЭЛТ-экраны заменены ЖК-мониторами, светодиодными или плазменными мониторами, которые являются линейными, поэтому теоретически нам больше не нужно так сильно заботиться об этой ЭЛТ-гамме и гамма-коррекции. Однако на практике компьютерные дисплеи по-прежнему используют гамма-коррекцию независимо от используемой технологии (даже несмотря на то, что их функция кривой, отношение между входными и выходными значениями, линейна). И сейчас мы объясним, почему.

Гамма-кодирование

В начале этой главы мы говорили о том, что человеческое зрение не линейно реагирует на уровни яркости изображения. При обычных условиях освещения наше зрение следует приблизительной гамма-функции (форму которой мы показали на рисунке 1). Однако компьютерные программы ничего не знают о физиологии человека и сохраняют значения пикселей изображения в линейном пространстве. Если вы думаете о формате изображения, в котором значение 100 представляет белый цвет, то с точки зрения компьютера пиксель со значением 20 в два раза ярче пикселя со значением 10. И для этого компьютера скачки на 10 в значения (от 0 до 100) соответствуют регулярным увеличениям яркости. Однако наша зрительная система по-разному реагирует на это изображение. Он увидит гораздо большие скачки в более темных областях, но едва заметит какие-либо изменения яркости в ярких областях (глаза имеют чрезвычайно хорошую способность различать цвета и тона в темных значениях).


Рисунок 3. Яркость каждого фрагмента увеличивается на 10 % слева направо (начиная с 0 и заканчивая 1). Несмотря на то, что числовые значения составляют от 0, 0,1, 0,2 и т. д. до 1, без коррекции результат будет выглядеть как верхнее изображение. Как вы можете заметить, несмотря на то, что яркость численно регулярно увеличивается, разница в яркости между первыми двумя патчами кажется намного больше, чем 10%. С гамма-кодированием (нижнее изображение) градиент кажется правильным.

Возможно, вы уже знаете, что мы обычно используем 8 бит на канал на пиксель для сохранения изображений RGB. А с 8 битами вы можете представлять только числа от 0 до 255. Поскольку мы можем использовать 255 для каждого основного цвета (красного, зеленого и синего), это представляет в общей сложности примерно 1,6 миллиона возможных комбинаций цветов (256 * 256 * 256). Теперь, как мы упоминали ранее, компьютер знает только о числах, и естественный способ кодирования значений яркости состоит в том, чтобы сказать, что 255 (поскольку это максимальное значение, которое мы можем представить с помощью 8 битов) представляет белый цвет, 0 — черный, а 128 — средний. серый.В этой системе существует линейная зависимость между используемым значением (от 0 до 255) и уровнем яркости, который они технически представляют (шкала серого). Однако мы знаем, что человеческий глаз более чувствителен к изменениям в более темных областях изображения, чем к изменениям в более ярких областях. Таким образом, мы могли бы гораздо лучше использовать эти 8 бит, если бы значения оттенков серого ниже 50% (это произвольное число для установления границы между темными и яркими значениями) могли бы быть сохранены в файле с большей точностью, чтобы лучше фиксировать изменения значений между низкой интенсивностью, к которым глаза очень чувствительны.


Рис. 4. Гамма-кодирование 1/2,2 применяется к 8-битным изображениям. Как видите, значение 0,5 (средний серый цвет в линейном пространстве) соответствует значению, намного превышающему 128 (после преобразования в байтовое значение).

Если мы используем больше битов для кодирования темных значений, это означает, что у нас остается меньше битов для кодирования ярких, но это не имеет большого значения, поскольку мы не воспринимаем различия между яркими значениями так же хорошо, как между ними. темные значения. Как мы можем добиться этого, используя только 8 бит? Ответ прост и зависит от повторного использования гамма-трюка. Мы применяем гамму, показатель степени которой обычно составляет около 1/2,2, к значениям пикселей, поступающим с ПЗС-матрицы камеры или с устройства 3D-рендеринга. Эти значения обычно выражаются в формате с плавающей запятой (с плавающей запятой в C++). Гамма-кривая выглядит так, как показано на рисунке 4. После применения гамма-кодирования мы конвертируем эти значения в тип байта (8 бит) перед сохранением данных в файл изображения. Как вы можете видеть на рисунке 4, значение 0,5 (представляющее средне-серый в линейном пространстве, предполагая, что значение с плавающей запятой 1 является белым) отображается в значение байта больше 128 после применения гамма-кодирования. Теперь у нас осталась последняя проблема. Важно понимать, что цель этого трюка состоит только в том, чтобы иметь больше места для кодирования более низких значений изображения. Мы по-прежнему хотим отображать изображение на экране в линейном пространстве. Теперь, когда мы закодировали гамму данных изображения, нам нужно удалить ее при отображении изображения обратно на экран. Что мы, естественно, и делаем, применяя к экрану гамма-коррекцию 2,2 (инверсия гаммы кодирования, которая у нас есть для данных изображения). Как мы пришли к значению 2,2, а не 2,6, объясняется ниже.

В заключение следует помнить, что старые ЭЛТ-мониторы были нелинейными. Отношение между значением пикселя и яркостью на экране соответствует кривой мощности, показатель степени которой составляет примерно от 1/2,35 до 1/2,5. Для компенсации нам пришлось применить к изображению гамма-коррекцию от 2,35 до 2,5. В настоящее время мы больше не используем ЭЛТ-мониторы; их заменяют технологии отображения (LCD, LED), которые являются линейными. Однако (и именно по этой причине было изобретено цветовое пространство sRGB) мы все же решили применить гамма-кодирование 1/2,2 к данным изображения, чтобы максимизировать количество более низких значений, которые мы могли бы закодировать в 8-битных изображениях RGB. Чтобы отображать эти изображения линейно, к экрану применяется гамма-коррекция 2,2 (независимо от того, какую технологию устройства вы используете, которая, вероятно, в наши дни является экраном, который может отображать значения пикселей линейно). Конец истории. Основное заблуждение относительно всей этой темы гаммы 2.2 заключается в том, что необходимо исправить нелинейность вашего экрана. Если раньше это было правдой, то сегодня это уже не так, поскольку дисплеи стали линейными. Экраны применяют гамма-коррекцию 2,2 только для «удаления» гамма-кодирования, применяемого к 8-битным изображениям RGB.

Это гамма-кодирование необходимо только для форматов изображений, сохраняющих данные с использованием 8 бит на пиксель на канал. Гамма-кодирование не требуется для форматов файлов, сохраняющих значения пикселей с использованием 16 (половина с плавающей запятой) или 32 бита (с плавающей запятой) на пиксель на канал (вы найдете более подробную информацию по этой теме в следующей главе), поскольку они обеспечивают достаточную числовую точность для хранения всех значений. нужные нам нюансы тонов. Несмотря на то, что мы могли бы использовать эти форматы вместо этого, они занимают больше места на диске и большую пропускную способность при передаче в Интернете, и по этим причинам 8-битные форматы файлов, такие как JPEG, PNG, TGA и т. д., по-прежнему являются стандартом для хранения изображений ( это относится и к видеоизображениям). Однако, если вы работаете в графической индустрии, вполне вероятно, что вы уже используете 16- или 32-битный формат файла, такой как TIFF, OpenEXR, HDR, RAW, и в этом случае важно, чтобы вы не забыли удалить гамму экрана 2.2. коррекция для просмотра этих изображений в линейном виде.

Цветовое пространство sRGB

Цветовое пространство sRGB было попыткой Microsoft и HP (в 1996 г.) разработать способ стандартизации кодирования значений пикселей в 8-битных изображениях RGB. Формат требует использования гаммы 1/2,2 (технически показатель степени равен 2,4).Кодирование гаммы изначально было мотивировано необходимостью компенсации нелинейности ЭЛТ, но теперь это оправдано по причинам, которые мы упомянули выше (мы можем кодировать больше данных в более низких тонах). В будущей версии этого документа мы предоставим больше информации об этом цветовом пространстве (технические характеристики формата легко найти в Интернете). Мы упомянули его здесь только потому, что большинство изображений, которые вы просматриваете или загружаете из Интернета, вероятно, закодированы с использованием этого формата. Помните, однако, что 3D-движки работают в линейном цветовом пространстве, поэтому, если вы собираетесь использовать изображение sRGB в качестве источника текстуры или если вы выбираете цвета из изображения, вам нужно будет сначала «линеаризовать» изображение (например, применить гамма-коррекцию 2,2 к изображение).

Двоичный файл — это единственный «язык», на котором говорят компьютеры. Поэтому, если мы хотим представить числа, буквы, слова, текст и изображения, мы должны сначала преобразовать их в двоичные числа (0 и 1).

Чтобы сохранить изображение на компьютере, оно разбивается на крошечные элементы изображения, называемые пикселями. Изображение с разрешением 11 на 7 пикселей имеет 11 умножить на 7 или 77 пикселей. Ниже показано изображение, состоящее всего из 77 пикселей. Разрешение также может относиться к плотности пикселей на дисплее, где единицей измерения являются пиксели на дюйм (PPI). При разрешении экрана 250 пикселей на 5 дюймов плотность пикселей составляет 250 / 5, что соответствует 50 пикселям на дюйм.

Pixelated Picture

Понятие пикселя похоже на точку в художественной форме пуантилизма. Единственное отличие состоит в том, что пиксели аккуратно вписываются в сетку.

Монохромные (двухцветные) изображения

Как мы можем кодировать пиксели как биты (также известные как двоичные цифры)? Самый простой сценарий — это когда нам дается черно-белое изображение. Другой способ представления черно-белого цифрового изображения — это сетка пикселей, которые либо включены, либо выключены. Затем мы можем представить каждый пиксель как ровно один бит (либо 1 = вкл. = черный, либо 0 = выкл. = белый).

Упражнение 1

Мы можем распространить это на сетки с большим количеством пикселей. Ниже приведены несколько примеров того, как мы можем преобразовать цифровые изображения 8 x 8 в двоичные файлы.

Упражнение 2

Упражнение 3

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

Например, если задана строка шестнадцатеричных цифр 3C66703C0E663C00 , вы можете преобразовать каждую группу из 4 пикселей в 1 шестнадцатеричную цифру.

  • 0066ACD8366ACC00
  • 7E607C0606663C00
  • C6CCD8F0D8CCC600

Упражнение 4

Напишите слово из 5 букв пиксельным шрифтом 8 x 8. Например:

Pixel Alphabet

Затем переведите каждую букву в двоичный, а затем в шестнадцатеричный формат.

В классе вы предложите своему партнеру расшифровать шестнадцатеричные цифры, чтобы прочитать слово. Приготовьте свои шестнадцатеричные цифры и бумагу с сеткой.

Цвет

Прежде чем мы начнем изучать, как мы можем комбинировать несколько цветов в одном изображении, давайте сначала узнаем, что такое цвет.

Цвет относится к длине волны света. Свет с короткими длинами волн воспринимается как фиолетовый (разновидность голубовато-фиолетового), а с длинными волнами — как красный. Между ними находится обычный спектр цветов: оранжевый, желтый, зеленый, синий и фиолетовый.

Электромагнитные волны
< /p>

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

С биологической точки зрения анатомия наших глаз приводит к другому объяснению того, как мы видим цвет. Ваша сетчатка содержит чувствительные к деталям нейроны, называемые палочками ( r для разрешения), и нейроны, чувствительные к цвету, называемые колбочками (c для цвета). Палочки, как правило, не различают цвета, тогда как колбочки бывают трех видов: длинноволновые (красные), средневолновые (зеленые) и коротковолновые (синие).

Смешивание цветов света (аддитивная модель) отличается от смешивания цветов краски (субтрактивная модель).

Кодировка цвета

С идеей смешивания красного, зеленого и синего для получения любого цвета становится ясно, что нам нужно больше битов, чтобы представить, сколько каждого цвета. Когда мы преобразовывали монохромные (черно-белые) изображения в бинарные, нам требовался всего 1 бит. С помощью 2 бит мы можем представить четыре числа (0, 1, 2 и 3) и, следовательно, четыре цвета. С помощью 3 бит мы можем представить числа от 0 до 7 (8 чисел, 8 цветов).

  • 0 = 000 = красный + зеленый + синий = черный.
  • 1 = 001 = красный + зеленый + синий = синий
  • 2 = 010 = красный + зеленый + синий = зеленый
  • 3 = 011 = красный + зеленый + синий = голубой
  • 4 = 100 = красный + зеленый + синий = красный.
  • 5 = 101 = красный + зеленый + синий = пурпурный
  • 6 = 110 = красный + зеленый + синий = желтый.
  • 7 = 111 = красный + зеленый + синий = белый.

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

Сегодня мы обычно используем 24 бита для представления цвета. Для интенсивности красного цвета используется 8 бит, для интенсивности зеленого — 8 бит, а для интенсивности синего — 8 бит. Всего получается 24 бита.

Поскольку каждому основному цвету соответствует 8 бит, его также можно представить двумя шестнадцатеричными цифрами.

Чтобы попрактиковаться в визуализации цветов, когда задано только шестнадцатеричное число, поиграйте в игру "Угадай цвет" What the Hex.

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

желтые цветы

Вот цифровое изображение некоторых желтых цветов:

Увеличить — Пиксели

  • Увеличьте левый верхний цветок в 10 раз.
  • Изображение состоит из пикселей.
  • Каждый пиксель: маленький, квадратный, одного цвета.
  • Воспринимайте сцену целиком, а не крошечные пиксели.
  • "мегапиксель" – 1 миллион пикселей.
  • Сколько пикселей в изображении шириной 800 пикселей и высотой 600 пикселей?
    - просто умножьте
    - 800 x 600 = 480 000 пикселей = 0,48 мегапикселя
  • Обычное цифровое изображение – 5–20 мегапикселей.

Увеличив изображение верхнего левого цветка, мы видим, что он на самом деле состоит из множества квадратных «пикселей», каждый из которых имеет один цвет.

Пиксельная сетка X/Y

  • Пиксели организованы в виде сетки x/y.
  • x=0, y=0 "исходный" верхний левый угол – он же (0, 0)
  • X растет вправо
  • Y растет вниз
  • Точно так же, как набирать страницу текста
  • x=0, y=0 "начало" вверху слева — (0, 0)
  • x=1, y=0 сосед справа от начала координат - (1, 0)
  • x=0, y=1 сосед ниже начала координат - (0, 1)

Теперь поговорим о цветах.

История в стороне — цветная призма Ньютона

  • Один из известных экспериментов Ньютона.
  • Белый свет, разбитый на чистые цвета, непрерывный.
  • Красный, оранжевый, желтый, зеленый, синий, индиго, фиолетовый (ROY G BIV)
  • Смешайте выбранные цвета, чтобы получить другие цвета.
  • Например, провести эксперимент в обратном порядке, чтобы получить белый цвет.

Сэр Исаак Ньютон провел знаменитый эксперимент с призмой в 1665 году, показав, что белый свет состоит из спектрально окрашенного света. Вот фото эксперимента на моем полу. Белый солнечный свет падает слева в стеклянную треугольную призму, которая разделяет свет. Выйдя из призмы, мы имеем непрерывный диапазон чистых цветов, и некоторые из них выделены по названию: красный, оранжевый, желтый, зеленый, синий, индиго, фиолетовый (ROY G BIV).

Цветовая схема RGB — красный, зеленый, синий

  • Как представить цвет пикселя?
  • RGB – схема "красный/зеленый/синий".
  • Создайте любой цвет, комбинируя красный, зеленый и синий цвета.
  • Есть и другие схемы, но RGB очень распространен
  • Примечание: смешивание источников света отличается от смешивания красок.
  • Кроме того, технически цвет – это трехмерное пространство, не вдаваясь в детали.
    – Призма Ньютона показывает измерение «оттенка»
    – Другие измерения – яркость и насыщенность (пастель)

Как представить цвет пикселя? Схема красный/зеленый/синий (RGB) — один из популярных способов представления цвета в компьютере. В RGB каждый цвет определяется как определенное сочетание чистого красного, зеленого и синего света.

Обозреватель RGB

Лучший способ увидеть, как работает RGB, — просто поиграть. На этой странице RGB Explorer показано, как можно получить любой цвет, комбинируя красный, зеленый и синий свет. Каждый свет кодируется числом от 0 (выкл.) до 255 (самая яркая).

RGB – три числа

  • Создайте любой цвет, комбинируя красный, зеленый и синий свет.
  • Каждый красный/зеленый/синий свет обозначается числом 0,255.
    255 = максимальная яркость.
    0 = выключен.
  • Поэтому любой цвет может быть представлен тремя числами от 0 до 255
  • Не только 0 и 255, промежуточные значения 12, 238, 39
  • напр. r:250 g:10 b:240 - фиолетовый, или просто скажите "250 10 240"
  • напр. r:100 g:100 b:0 - темно-желтый или просто скажите "100 100 10"

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

Цвет Красный номер Зеленый номер Синий номер
красный 255 0 0
фиолетовый 255< /td> 0 255
желтый 255 255 0
темно-желтый 100 100 0
белый 255 255 255
черный 0 0 0

В RGB цвет определяется как смесь чистого красного, зеленого и синего цветов различной интенсивности. Каждый из уровней красного, зеленого и синего света кодируется числом в диапазоне от 0 до 255, где 0 означает отсутствие света, а 255 — максимальный свет.

Например, (красный = 255, зеленый = 100, синий = 0) – это цвет, в котором красный – максимальный, зеленый — средний, а синий отсутствует вообще, что приводит к оттенку оранжевого. Таким образом, задав яркость 0..255 для красной, синей и зеленой цветовых составляющих пикселя, можно сформировать любой цвет.

Примечание по пигменту: у вас могут быть смешанные цветные краски, например, смешанные красная и зеленая краски. Такое «пигментное» смешивание цветов работает совершенно иначе, чем «светлое» смешивание, которое мы имеем здесь. Мне кажется, легкое микширование проще для понимания, и в любом случае это наиболее распространенный способ, с помощью которого компьютеры хранят изображения и управляют ими.

Вы не обязаны запоминать, например, как выглядит blue=137. Вам просто нужно знать наиболее распространенные шаблоны RGB, которые мы используем.

Ты попробуй

<р>1. В проводнике RGB поиграйте с ползунками, чтобы получить светло-коричневый цвет кофе латте.

<р>2. Узнайте, как сделать апельсин

<р>3. Узнайте, как сделать коричневый. Коричневый в основном темно-оранжевый.

Демонстрация в классе — сверхъяркие светодиоды

  • Отображение чистого красного, зеленого, синего – светодиодный индикатор.
  • Показать двухцветные комбинации
  • Показать белый

Диаграмма изображения с RGB

  • Полная схема изображения.
  • Пиксели в сетке, каждый из которых определяется координатой x,y.
  • У каждого пикселя есть 3 числа, определяющие его цвет.
  • Записывается как "красный:6 зеленый:250 синий:7"
  • Или просто "6 250 7"

2 темы CS: много маленьких цифр + редактирование

  • Начать со всего изображения
  • Тема 1: изображение "разбивается" на множество маленьких чисел в компьютере
  • Тема 2. Как изменить изображение на компьютере?
  • Изменить некоторые цифры → изменить изображение
  • напр. пройдите и уменьшите вдвое все красные значения
  • Вот куда мы идем

Мы начали с целого изображения и сократили его до большого набора мелких элементов. Это распространенная тема в компьютерных науках: то, что выглядит как сложное целое, в компьютере "атомизировано" (составлено из очень большого набора очень простых элементов).

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

Как изменить изображение? Изменения в изображение вносятся путем просмотра и изменения чисел, составляющих изображение.

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