Глубина цвета. 8, 12, 14 или 16-бит: что вам действительно нужно?
«Разрядность» является одним из параметров, за которым все гонятся, но немногие фотографы действительно его понимают. Photoshop предлагает 8, 16 и 32-битные форматы файлов. Иногда мы видим файлы, отмеченные как 24 и 48-бит. И наши камеры часто предлагают 12 и 14-битные файлы, хотя вы можете получить 16 бит с камерой среднего формата. Что всё это значит, и что действительно имеет значение?
Что такое битовая глубина?
Перед тем, как сравнивать различные варианты, давайте сначала обсудим, что означает название. Бит является компьютерной единицей измерения, относящейся к хранению информации в виде 1 или 0. Один бит может иметь только одно из двух значений: 1 или 0, да или нет. Если бы это был пиксель, он был бы абсолютно черного или абсолютно белого цвета. Не очень полезно.
Для того, чтобы описать более сложный цвет, мы можем объединить несколько бит. Каждый раз, когда мы добавляем биты, количество потенциальных комбинаций удваивается. Один бит имеет 2 возможных значения 0 или 1. При объединении 2 бит вы можете иметь четыре возможных значения (00, 01, 10 и 11). Когда вы объединяете 3 бита, вы можете иметь восемь возможных значений (000, 001, 010, 011, 100, 101, 110 и 111). И так далее. В общем, число возможных вариантов будет являться числу два, возведённому в степени количества бит. Таким образом , «8-бит» = 2
Так «битовая глубина» определяет малейшие изменения, которые вы можете сделать, относительно некоторого диапазона значений. Если наша шкала яркости от чистого черного до чистого белого имеет 4 значения, которые мы получаем от 2-битного цвета, то мы получим возможность использовать черный, темно-серый, светло серый и белый. Это довольно мало для фотографии. Но если у нас есть достаточное количество бит, мы имеем достаточно шагов с широким диапазоном серого, чтобы создать то, что мы будем видеть как совершенно гладкий градиент от черного к белому.
Ниже приведен пример сравнения черно-белого градиента на разной битовой глубине. Данное изображение – это просто пример. Нажмите на него, чтобы увидеть изображение в полном разрешении в формате JPEG2000 с разрядностью до 14 бит. В зависимости от качества вашего монитора, вы, вероятно, сможете увидеть только разницу до 8 или 10 бит.
Как понимать битовую глубину?
Было бы удобно, если бы все «битовые глубины» можно было сравнить непосредственно, но есть некоторые различия в терминологии, которые нужно понимать.
Обратите внимание, что изображение выше черно-белое. Цветное изображение, как правило, состоит из красных, зеленых и синих пикселей для создания цвета. Каждый из этих цветов обрабатывается компьютером и монитором как «канал». Программное обеспечение, например, Photoshop и Lightroom, считают количество бит на канал. Таким образом, 8 бит означает 8 бит на канал. Это означает, что 8-битный RGB-снимок в Photoshop будет иметь в общей сложности 24 бита на пиксель (8 для красного, 8 для зеленого и 8 для синего). 16-битное RGB-изображение или LAB в Photoshop будет иметь 48 бит на пиксель и т.д.
Вы бы могли предположить, что 16-бит означает 16-бит на канал в Photoshop, но в данном случае это работает иначе. Photoshop реально используется 16 бит на канал. Тем не менее, он относится к 16-разрядным снимкам по-другому. Он просто добавляет один бит к 15-битам. Это иногда называют 15+1 бит. Это означает, что вместо 216 возможных значений (что равнялось бы 65536 возможным значениям) существует только 2
Таким образом, с точки зрения качества, было бы справедливо сказать, что 16-битный режим Adobe, на самом деле содержит только 15-бит. Вы не верите? Посмотрите на 16-разрядную шкалу для панели Info в Photoshop, которая показывает масштаб 0-32768 (что означает 32769 значения учитывая ноль. Почему Adobe так делает? Согласно заявлению разработчика Adobe Криса Кокса, это позволяет Photoshop работать гораздо быстрее и обеспечивает точную среднюю точку для диапазона, который является полезным для режимов смешивания.
Большинство камер позволит вам сохранять файлы в 8-бит (JPG) или от 12 до 16 бит (RAW). Так почему же Photoshop не открывает 12 или 14-битный RAW файл, как 12 или 14 бит? С одной стороны, это потребовало бы очень много ресурсов для работы Photoshop и изменение форматов файлов для поддержки других битовых глубин. И открытие 12-битных файлов в качестве 16-бит на самом деле не отличается от открытия 8-битного JPG, а затем преобразования в 16 бит. Там нет непосредственной визуальной разницы. Но самое главное, есть огромные преимущества использования формата файлов с несколькими дополнительными битами (как мы обсудим позже).
Для дисплеев, терминология меняется. Производители хотят, чтобы характеристики их оборудования звучали соблазнительно. Поэтому режимы отображения 8-бит обычно подписывают как «24-бит» (потому что у вас есть 3 канала с 8-бит каждый). Другими словами, «24-бит» («True Color») для монитора не очень впечатляет, это на самом деле означает то же самое, что 8 бит для Photoshop. Лучшим вариантом было бы «30-48 бит» (так называемый «Deep Color»), что составляет 10-16 бит на канал, хотя для многих более 10 бит на канал является излишеством.
Далее мы будем говорить о битовой глубине в терминологии Photoshop.
Сколько бит вы можете увидеть?
С чистым градиентом (т.е. наихудшими условиями), многие могут обнаружить полосатость в 9-битном градиенте, который содержит 2048 оттенков серого на хорошем дисплее с поддержкой более глубокого отображения цвета. 9-битный градиент является чрезвычайно слабым, едва уловимым. Если бы вы не знали о его существовании, вы бы его не увидели. И даже когда вы будете на него смотреть, будет не просто сказать где границы каждого цвета. 8-битный градиент относительно легко увидеть, если смотреть на него пристально, хотя вы всё ещё сможете его не замечать, если не присматриваться. Таким образом, можно сказать, что 10-битный градиент визуально идентичен 14-битному или более глубокому.
Как всё это проверить? Для наглядности создадим документ шириной 16384 пикселей, что позволяет использовать ровно 1 пиксель для каждого значения в 14-битном градиенте. Специальный алгоритм создаёт градиенты с каждой битовой глубиной от 1 до 14 на изображении. Файл PSB весит более 20GB, поэтому поделиться им нет возможности. Но можно создать изображение в формате JPEG2000 с полным разрешением. При глубине цвета 16-бит вы не увидите разницы даже при экстремальном редактировании кривых. Удивительно, как этот файл JPEG2000 сжимает оригинальное изображение с 20Gb до 2Mb.
Обратите внимание, что если вы хотите создать свой собственный файл в Photoshop, инструмент градиента будет создавать 8-битные градиенты в 8-битном режиме документа, но даже если вы преобразуете документ в 16-битный режим, вы по-прежнему будете иметь 8-битный градиент. Однако, вы можете создать новый градиент в 16-битном режиме. Однако, он будет создаваться в 12-бит. Программа не имеет 16-битного варианта для инструмента градиента в Photoshop, но 12-бит более чем достаточно для любой практической работы, так как он позволяет использовать 4096 значений.
Не забудьте включить сглаживание в панели градиента, так как это лучше всего подходит для тестирования.
Важно также отметить, что вы, вероятно, столкнутся с ложной «полосатостью» при просмотре изображений на увеличении менее чем 67%.
Зачем использовать больше бит, чем вы можете увидеть?
Почему у нас есть варианты, даже больше, чем 10-бит в наших камерах и Photoshop? Если мы не редактировали фотографии, то не было бы никакой необходимости добавлять больше бит, чем человеческий глаз может видеть. Однако, когда мы начинаем редактирование фотографий, ранее скрытые различия могут легко вылизать наружу.
Если мы значительно осветлим тени или затемним блики, то мы увеличим некоторую часть динамического диапазона. И тогда любые недочёты станут более очевидны. Другими словами, увеличение контраста в изображении работает как уменьшение битовой глубины. Если мы будем достаточно сильно выкручивать параметры, на некоторых участках снимка может появиться полосатость. Она будет показывать переходы между цветами. Такие моменты обычно становятся заметны на чистом голубом небе или в тенях.
Почему 8-битные изображения выглядят так же, как 16-битные?
При преобразовании 16-битного изображения в 8-битное вы не увидите разницы. Если так, тогда зачем использовать 16-бит?
Всё дело в плавности редактирования. При работе с кривыми или другими инструментами вы получите больше шагов коррекции тонов и цветов. Переходы будут плавней в 16 бит. Поэтому, даже если разница не может быть изначально заметна, переход к меньшей битовой глубине цвета может стать серьезной проблемой позже, при редактировании изображения.
Так сколько бит действительно нужно в камере?
Изменение 4 стопов в обеспечит потерю чуть более 4 бит. Изменение 3 стопов экспозиции находится ближе к потере 2 бит. Как часто вам приходится настолько сильно корректировать экспозицию? При работе с RAW коррекция до +/- 4 стопа – это экстремальная и редкая ситуация, но такое случается, поэтому желательно иметь дополнительные 4-5 бит над пределами видимого диапазонов, чтобы иметь запас. При нормальном диапазоне 9-10 бит, с запасом нормой может быть примерно 14-15 бит.
На самом деле, вы, вероятно, никогда не будете нуждаться в таком большом количестве данных по нескольким причинам:
- Есть не так много ситуаций, когда вы встретите идеальный градиент. Ясное голубое небо, вероятно, наиболее частый пример. Все остальные ситуации имеют большое количество деталей и переходы цветов не плавные, поэтому вы не увидите разницу при использовании различной битовой глубины.
- Точность вашей камеры не так высока, чтобы обеспечить точность цветопередачи. Другими словами, в изображении есть шум. Из-за этого шума обычно намного сложнее увидеть переходы между цветами. Получается, что реальные изображения обычно не способны отобразить переходы цвета в градиентах, так как камера не способны запечатлеть идеальный градиент, который можно создать программно.
- Вы можете удалить переходы цветов во время пост-обработки при помощи использования размытия по Гауссу и добавления шума.
- Большой запас бит нужен только для экстремальных тональных поправок.
Принимая все это во внимание, 12-бит звучит как очень разумный уровень детализации, который позволил бы выполнять отличную постобработку. Тем не менее, камера и человеческий глаз по-разному реагирует на свет. Человеческий глаз более чувствителен к тени.
Интересный факт заключается в том, что многое зависит от программы, которую вы используете для постобработки. К примеру, при вытягивании теней из одного и того же изображения в Capture One (CO) и в Lightroom можно получить разные результаты. На практике оказалось, что СО больше портит глубокие тени, чем аналог от Adobe. Таким образом, если вы вытягиваете в LR, то можно рассчитывать на 5 стопов, а в CO – всего на 4.
Но всё таки, лучше избегать попыток вытянуть более 3 стопов динамического диапазона из-за шума и изменения цветового оттенка. 12-бит, безусловно, разумный выбор. Если вы заботитесь о качестве, а не размере файла, то снимайте в 14-битном режиме, если ваша камера позволяет.
Сколько бит стоит использовать в Photoshop?
На основании изложенного выше, должно быть ясно, что 8-бит – это мало. Можно сразу увидеть переходы цветов в плавных градиентах. И если вы не видите это сразу, даже скромные корректировки могут сделать этот эффект заметным.
Стоит работать в 16 бит даже если ваш исходный файл 8-битовый, например, изображения в JPG. Режим 16-бит даст лучшие результаты, поскольку он позволит свести к минимуму переходы при редактировании.
Нет никакого смысла использовать 32-битный режим, если вы не обрабатываете файл HDR.
Сколько бит нужно для интернета?
Преимущества 16 бит заключаются в расширении возможностей редактирования. Преобразование окончательного отредактированного изображения в 8 бит прекрасно подходит для просмотра снимков и имеет преимущество в создании небольших файлов для интернета для более быстрой загрузки. Убедитесь, что сглаживание в Photoshop включено. Если вы используете Lightroom для экспорта в JPG, сглаживание используется автоматически. Это помогает добавить немного шума, который должен свести к минимуму риск появления заметных переходов цвета в 8 бит.
Сколько бит нужно для печати?
Если вы печатаете дома, вы можете просто создать копию рабочего 16-битного файла и обработать его для печати, осуществив печать именно рабочего файла. Но что, если вы отправляете свои изображения через интернет в лабораторию? Многие будут использовать 16-разрядные TIF-файлы, и это отличный способ. Однако, если для печати требуют JPG или вы хотите отправить файл меньшего размера, вы можете столкнуться с вопросами о переходе на 8-бит.
Если ваша лаборатория печати принимает 16-битный формат (TIFF, PSD, JPEG2000), просто спросите у специалистов какие файлы предпочтительны.
Если вам нужно отправить JPG, он будет в 8 бит, но это не должно быть проблемой. В действительности, 8-бит отлично подходит для окончательного вывода на печать. Просто экспортируйте файлы из Lightroom с качеством 90% и цветовым пространством Adobe RGB. Делайте всю обработку перед преобразованием файла в 8 бит и никаких проблем не будет.
Если вы не видите полосатость перехода цветов на мониторе после преобразования в 8-бит, можете быть уверены, что всё в порядке для печати.
В чем разница между битовой глубиной и цветовым пространством?
Битовая глубина определяет число возможных значений. Цветовое пространство определяет максимальные значения или диапазон (обычно известные как «гамма»). Если вам нужно использовать коробку цветных карандашей в качестве примера, большая битовая глубина будет выражаться в большем количестве оттенков, а больший диапазон будет выражаться как более насыщенные цвета независимо от количества карандашей.
Чтобы посмотреть на разницу, рассмотрим следующий упрощенный визуальный пример:
Как вы можете видеть, увеличивая битовую глубину мы снижаем риск появления полос перехода цвета. Расширяя цветовое пространство (шире гамма) мы сможем использовать более экстремальные цвета.
Как цветовое пространство влияет на битовую глубину?
SRGB (слева) и Adobe RGB (справа)Цветовое пространство (диапазон, в котором применяются биты), поэтому очень большая гамма теоретически может вызвать полосатость, связанную с переходами цвета, если она растягивается слишком сильно. Помните, что биты определяют количество переходов по отношению к диапазону цвета. Таким образом, риск получить визуально заметные переходы увеличивается с расширением гаммы.
Рекомендуемые настройки, чтобы избежать полосатости
После всего этого обсуждения можно сделать заключение в виде рекомендаций, которых стоит придерживаться, чтобы избежать проблем с переходами цветов в градиентах.
Настройки камеры:
- 14+ бит RAW файл является хорошим выбором, если вы хотите, наилучшее качество, особенно если вы рассчитываете на корректировку тона и яркости, например, увеличение яркости в тенях на 3-4 стопа.
- 12-битный RAW файл отлично подойдёт, если вы хотите иметь меньший вес файлов или снимать быстрее. Для камеры Nikon D850 14-битный RAW файл примерно на 30% больше, чем 12-битный, так что это является важным фактором. И большие файлы могут повлиять на возможность снимать длинные серии кадров без переполнения буфера памяти.
- Никогда не снимайте в JPG, если вы можете. Если вы снимаете какие-то события, когда нужно быстро передавать файлы и качество снимков не играет роли, то конечно Jpeg будет отличным вариантом. Также вы можете рассмотреть возможность съёмки в режиме JPG + RAW, если вам нужен более качественный файл впоследствии. Стоит придерживаться цветового пространства SRGB, если вы снимаете в JPG. Если вы снимаете в RAW, вы можете игнорировать настройки цветового пространства. Файлы RAW в действительности не имеют цветового пространства. Оно не устанавливается, пока не выполнена конвертация файла RAW в другой формат.
Lightroom и Photoshop (рабочие файлы):
- Всегда сохраняйте рабочие файлы в 16-бит. Используйте 8 бит только для окончательного экспорта в формате JPG для интернета и печати, если этот формат удовлетворяет требованиям печатного оборудования. Это нормально использовать 8-бит для окончательного вывода, но следует избегать этого режима во время обработки.
- Обязательно просмотрите снимок в масштабе 67% или больше, чтобы убедиться, что в градиентах нет заметных переходов цвета. В меньшем масштабе Photoshop может создавать ложную полосатость. Об этом будет другая наша статья.
- Будьте осторожны при использовании HSL в Lightroom и Adobe Camera RAW, так как этот инструмент может создать цветные полосы. Это имеет очень мало общего с битовой глубиной, но проблемы возможны.
- Если ваш исходный файл доступен только в 8-бит (например, JPG), вы должны немедленно преобразовать его в 16 бит перед редактированием. Последующие правки на 8-битные изображении в 16-битном режиме не будут создавать слишком явных проблем.
- Не используйте 32-разрядное пространство, если вы не используете его для объединения нескольких RAW-файлов (HDR). Есть некоторые ограничения при работе в 32-битном пространстве, а файлы становятся в два раза больше. Лучше всего делать объединение HDR в Lightroom вместо того, чтобы использовать 32-битный режим в Photoshop.
- Формат HDR DNG Lightroom очень удобен. Он использует 16-битный режим с плавающей точкой для того, чтобы охватить более широкий динамический диапазон с таким же количеством бит. Рассчитывая на то, что нам обычно нужно исправлять динамический диапазон в HDR только в пределах 1-2 стопов, это приемлемый формат, который повышает качество без создания огромных файлов. Конечно, не забудьте экспортировать этот RAW в 16-битном TIF/PSD, когда вам нужно продолжить редактирование в Photoshop.
- Если вы один из немногих людей, которые должны использовать 8-разрядный рабочий режим по какой-то причине, вероятно, лучше всего придерживаться цветового пространства sRGB.
- При использовании инструмента градиента в Photoshop, отметив опцию «сглаживание» программа будет использовать 1 дополнительный бит. Это может быть полезно при работе в 8-битных файлах.
Экспорт для интернета:
- JPG с 8 битами и цветовым пространством sRGB идеально подходит для интернета. В то время как некоторые мониторы способны отображать большую битовую глубину, увеличенный размер файла, вероятно, не стоит этого. И в то время как все больше и больше мониторов поддерживают более широкие гаммы, не все браузеры правильно поддерживают управление цветом и могут отображать изображения неправильно. И большинство из этих новых мониторов вероятно никогда не проходили калибровку цвета.
Печать:
- 8-бит отлично подходит для окончательного вывода на печать, но используйте 16 бит, если печатное оборудование поддерживает это.
Монитор:
- Стандартный монитор отлично подойдёт для большинства задач, но помните, что вы можете увидеть полосы перехода цветов из-за 8-битных дисплеев. Этих полос может на самом деле не быть в снимках. Они появляются на этапе вывода на монитор. На другом дисплее этот же снимок может выглядеть лучше.
- Если вы можете себе это позволить, 10-битный дисплей идеально подходит для работы с фотографией. Широкий диапазон, такой как Adobe RGB также идеально подходит. Но это не обязательно. Вы можете создавать потрясающие снимки на самом обычном мониторе.
Взгляд в будущее
В данный момент выбор большей битовой глубины для вас может не иметь значения, так как ваш монитор и принтер способны работать только в 8 бит, но в будущем всё может измениться. Ваш новый монитор сможет отображать больше цветов, а печать можно осуществить на профессиональном оборудовании. Сохраняйте свои рабочие файлы в 16-бит. Этого будет достаточно, чтобы сохранить наилучшее качество на будущее. Этого будет достаточно, чтобы удовлетворить требованиям всех мониторов и принтеров, которые будут появляться в обозримом будущем. Этого диапазона цвета достаточно, чтобы выйти за пределы диапазона зрения человека.
Однако гамма – это другое. Скорее всего, у вас есть монитор с цветовой гаммой sRGB. Если он поддерживает более широкий спектр Adobe RGB или гамму P3, то вам лучше работать с этими гаммами. Adobe RGB имеет расширенный диапазон цвета в синем, голубом и зелёном, а P3 предлагает более широкие цвета в красном, желтом и зеленом. Помимо P3 мониторов существуют коммерческие принтеры, которые превышают гамму AdobeRGB. sRGB и AdobeRGB уже не в состоянии охватить полный диапазон цветов, которые могут быть воссозданы на мониторе или принтере. По этой причине, стоит использовать более широкий диапазон цвета, если вы рассчитываете на печать или просмотр снимков на лучших принтерах и мониторах позже. Для этого подойдёт гамма ProPhoto RGB. И, как обсуждалось выше, более широкая гамма нуждается в большей битовой глубине 16-бит.
Как удалить полосатость
Если вы будете следовать рекомендациям из этой статьи, очень маловероятно, что вы столкнетесь с полосатостью в градиентах.
Но если вы столкнетесь с полосатостью (скорее всего при переходе в 8-разрядное изображение, вы можете предпринять следующие шаги, чтобы свести эту проблему к минимуму:
- Преобразуйте слой в смарт-объект.
- Добавьте размытие по Гауссу. Радиус установите таким, чтобы скрыть полосатость. Радиус, равный ширине полосатости в пикселях идеален.
- Используйте маску, чтобы применить размытие только там, где это необходимо.
- И, наконец, добавьте немного шума. Зернистость устраняет вид гладкого размытия и делает снимок более целостным. Если вы используете Photoshop CC, используйте фильтр Camera RAW, чтобы добавить шум.
Об авторе: Greg Benz – фотограф из Миннеаполиса, штат Миннесота. Мнения, выраженные в этой статье принадлежат исключительно автору. Вы можете узнать больше о его работах на сайте
Следите за новостями: Facebook, Вконтакте и Telegram
comments powered by HyperCommentsГлубина цвета — Википедия
Глубина́ цве́та (ка́чество цветопереда́чи, би́тность изображе́ния) — термин компьютерной графики, означающий количество бит (объём памяти), используемое для хранения и представления цвета при кодировании одного пикселя растровой графики или видеоизображения.
Часто выражается единицей бит на пиксел (англ. bits per pixel, bpp).
Монохромные изображения кодируются с помощью одномерной шкалы яркости. Обычно это набор из чёрного и белого цвета и промежуточных оттенков серого, но могут использоваться и другие комбинации: например, монохромные мониторы часто используют зелёный или оранжевый цвет свечения вместо белого.
4-битное изображение 8-битное изображениеИзображение кодируется с помощью дискретного набора цветов, каждый из которых описан с помощью палитры независимо друг от друга.
- 1-битный цвет (21 = 2 цвета): бинарный цвет, чаще всего представляется чёрным и белым цветами (или чёрным и зелёным)
- 2-битный цвет (22 = 4 цвета): CGA, БК.
- 3-битный цвет (23 = 8 цветов): множество устаревших персональных компьютеров с TV-выходом
- 4-битный цвет (24 = 16 цветов): известен как EGA и в меньшей степени как VGA-стандарт с высоким разрешением
- 5-битный цвет (25 = 32 цвета): Original Amiga chipset
- 6-битный цвет (26 = 64 цвета): Original Amiga chipset
- 8-битный цвет (28 = 256 цветов): устаревшие Unix-рабочие станции, VGA низкого разрешения, Super VGA, AGA (стоит заметить что тот же VGA-режим, так называемый X-Mode, за счет технологии установки палитры позволял отобразить 256 цветов из цветового набора 262 144 цветов)
- 12-битный цвет (212 = 4096 цветов): некоторые Silicon Graphics и Color NeXTstation системы. Отдельного упоминания заслуживает уникальный режим HAM оригинальных персональных компьютеров Amiga. В этом видеорежиме компьютер Amiga на экране мог отобразить до 4096 цветов, при этом один пиксель изображения кодировался только шестью битами.
С увеличением количества бит в представлении цвета, количество отображаемых цветов стало непрактично большим для цветовых палитр (20-битная глубина цвета требует больше памяти для сохранения цветовой палитры, чем памяти для сохранения самих пикселей изображения). При большой глубине цвета на практике кодируют яркости красной, зелёной и синей составляющих — такое кодирование называют RGB-моделью.
8-битный «реальный» цвет[править | править код]
Сильно ограниченная, однако «реальная» цветовая схема, в которой по три бита (по восемь возможных значений) для красной (R) и зелёной (G) составляющих, и два оставшихся бита на пиксель для кодирования синей (B) составляющей (четыре возможных значения), позволяют представить 256 (8×8×4) различных цвета. Нормальный человеческий глаз менее чувствителен к синей составляющей, чем к красной и зелёной, поэтому синяя составляющая представляется одним битом меньше. Такая схема использовалась в MSX2-серии компьютеров в 1990-х годах.
Не следует путать такую схему с 8 bpp индексным цветом, который может быть представлен выбором различных цветовых палитр.
12-битный «реальный» цвет[править | править код]
12-битный «реальный» цвет кодируется 4 битами (по 16 возможных значений) для каждой из R, G и B-составляющих, что позволяет представить 4096 (16×16×16) различных цветов. Такая глубина цвета иногда используется в простых устройствах с цветными дисплеями (например, в мобильных телефонах).
HighColor[править | править код]
HighColor или HiColor разработан для представления оттенков «реальной жизни», то есть наиболее удобно воспринимаемый человеческим глазом. Такой цвет кодируется 15 или 16 битами:
- 15-битный цвет использует 5 бит для представления красной составляющей, 5 для зелёной и 5 для синей, то есть 25 = 32 возможных значения каждого цвета, которые дают 32 768 (32×32×32) возможных цвета.
- 16-битный цвет использует 5 бит для представления красной составляющей, 5 для синей, но 6 бит (26 = 64 возможных значения) для представления зелёной, так как человеческий глаз более чувствителен к зелёной составляющей. Таким образом получаются 65 536 (32×64×32) цветов. 16-битный цвет упоминается как «тысячи цветов» (thousands of colors) в системах Macintosh.
- Большинство современных ЖК-дисплеев отображают 18-битный цвет (64×64×64 = 262 144 комбинации), но благодаря дизерингу разница с TrueColor-дисплеями на глаз незначительна.
TrueColor[править | править код]
24-битное изображениеTrueColor (от англ. true color — «истинный/настоящий цвет») приближен к цветам «реального мира», предоставляя 16,7 млн различных цветов. Такой цвет наиболее приятен для восприятия человеческим глазом различных фотографий, для обработки изображений.
- 24-битный TrueColor-цвет использует по 8 бит для представления красной, синей и зелёной составляющих. Кодируется 28 = 256 различных вариантов представления цвета для каждого канала, или всего 16 777 216 цветов (256×256×256). 24-битный цвет упоминается как «миллионы цветов» (millions of colors) в системах Macintosh.
24-битный «реальный» цвет + Альфа канал (32bpp)[править | править код]
«32-битный цвет» — это пример неправильного употребления термина при описании глубины цвета. Заблуждением является то, что 32-битный цвет позволяет представить 232 = 4 294 967 296 различных оттенков[1].
В реальности 32-битный цвет является 24-битным (TrueColor) с дополнительным 8-битным каналом, который либо заполнен нулями (не влияет на цвет), либо представляет собой альфа-канал, который задаёт прозрачность изображения для каждого пикселя — то есть существует 16 777 216 оттенков цветов и 256 градаций прозрачности[1].
Причиной, по которой используют «пустой» канал, является стремление оптимизировать работу с видеопамятью, которая у большинства современных[когда?] компьютеров имеет 32-битную адресацию и 32-битную шину данных[источник не указан 1355 дней].
Также 32-битным является представление цвета в системе CMYK (по 8 бит отводятся на голубой, пурпурный, жёлтый и чёрный цвета)[1].
Deep Color (30/36/48 бит)[править | править код]
В конце 1990-х годов некоторые high-end графические системы, например SGI, начали использовать более 8 бит на канал — например, 12 или 16 бит. Программы профессионального редактирования изображений стали сохранять по 16 бит на канал, предоставляя «защиту» от накапливания ошибок округления, погрешностей при вычислении в условиях ограниченной разрядной сетки чисел.
Для дальнейшего расширения динамического диапазона изображений были созданы различные модели. Например High Dynamic Range Imaging (HDRI), использует числа с плавающей запятой и позволяет наиболее точно описывать в изображениях интенсивный свет и глубокие тени в одном и том же цветовом пространстве. Различные модели описывают такие диапазоны, применяя более 32 бит на канал. Можно отметить созданный Industrial Light & Magic на рубеже XX и XXI веков формат OpenEXR, использующий 16-битные (половинной точности) числа с плавающей запятой, которые позволяют представить цветовые оттенки лучше, чем 16-битные целые числа. Предполагается, что такие схемы представления цвета заменят стандартные схемы, как только аппаратное обеспечение сможет с достаточной скоростью и эффективностью поддерживать новые форматы.
Поддержка Deep Color (30, 36, или 48 бит) была добавлена в аппаратный интерфейс передачи цифрового видеосигнала HDMI 1.3 в 2006 году[2].
Стандарт DisplayPort поддерживает глубину цвета более 24 бит[3][4].
В Windows 7 есть поддержка цветов с глубиной от 30 до 48 бит[5].
При этом типичные ЖК-дисплеи были способны отображать пиксели с глубиной не более 24 бит, а форматы 36 и 48 бит позволяют кодировать больше цветов, чем способен различать человеческий глаз[6][7].
Телевизионный цвет[править | править код]
Аддитивное смешение цветовМножество современных телевизоров и компьютерных дисплеев отображают изображения варьируя интенсивностью трёх основных цветов: синий, зелёный и красный. Яркий жёлтый, например, является композицией одинаковых по интенсивности красной и зелёной составляющих без добавления синей компоненты. Однако это только приближение, которое не даёт в действительности яркий жёлтый цвет. Именно поэтому последние технологии, как например Texas Instruments BrilliantColor расширяют типовые красные, зелёные и синие каналы новыми: голубым (сине-зелёным), пурпурным и жёлтым цветами[8]. Mitsubishi и Samsung используют упомянутую технологию в некоторых телевизионных системах.
Подразумевая использование 8-битных каналов 6-цветные изображения кодируются 48-битными цветами.
ATI FireGL V7350 видеоадаптеры поддерживают 40- и 64-битные цвета[9].
TrueColor — Википедия
Материал из Википедии — свободной энциклопедии
(перенаправлено с «Truecolor»)Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 28 апреля 2013; проверки требуют 6 правок. Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 28 апреля 2013; проверки требуют 6 правок.
24-битный цвет (являющийся подмножеством[1][2]TrueColor англ. «истинный цвет») в компьютерной графике — метод представления и хранения изображения, позволяющий отобразить большое количество цветов, полутонов и оттенков. Цвет представляется с использованием 256 уровней для каждой из трёх компонент модели RGB: красного(R), зелёного(G) и синего(B), что в результате даёт 16 777 216 (224) различных цветов.
Обычно при кодировании пикселя на каждый из каналов (красный, зелёный, синий каналы) отводится по одному байту; четвёртый байт (если используется) обычно отводится либо для хранения данных альфа-канала, либо просто игнорируется[3]. Такое выравнивание до четырёх байт оптимально подходит для 32-битной архитектуры. Использование 24-битной адресации требует реализации умножения на 3, что составляет бо́льшую вычислительную нагрузку, чем умножение на 4, которое может быть реализовано с помощью сдвига.
32-битный TrueColor может хранить альфа-канал, с помощью которого устанавливается степень прозрачности пикселей для отображения полупрозрачных изображений, например для отображения эффекта полупрозрачных окон, растворяющихся меню и теней. Некоторые видеоадаптеры способны обрабатывать альфа-канал аппаратно.
Количество бит при оцифровке сигнала[править | править код]
Не следует путать количество бит при оцифровке сигнала (сканером или цифровой камерой) и количество бит при хранении и выводе на экран.
Цвет с 256 уровнями на канал хранится в гамма-корректированом виде, в то время как с пикселей камеры оцифровывается сигнал в линейном виде. Он обычно и хранится в сырых данных камеры в формате Raw.
Наслаждайтесь миллиардами цветов с 10-битным HEVC / Intel corporate blog / Habr
Человеческий глаз способен видеть намного больше цветов, чем показывают ему современные видео дисплеи. Каким бы навороченным не был компьютер, он все равно может воспроизвести лишь конечное количество цветов. В этой статье мы расскажем об использовании 10-битной глубины цвета в сравнении с 8-битной, исходя из функционала процессоров Intel Core седьмого поколения и оптимизирующих возможностей Intel Software Tools. В статье вы также найдете ссылку на пример программы, реализующей 10-битное HEVC кодирование.Глубина цвета
Глубина цвета, известная также как битовая глубина — это количество битов, используемое для отображения цвета отдельного пикселя. Одно и то же изображение или кадр с различной глубиной цвета выглядят различно, поскольку количество цветов в пикселе зависит от глубины цвета.
Количество битов в изображении включает в себя набор битов на канал для каждого типа цвета в пикселе. Количество цветовых каналов в пикселе зависит от используемого цветового пространства. Например, цветовые каналы в цветовом пространстве RGBA — красный ( R), зеленый (G), синий (B) и альфа (A). Каждый дополнительный бит удваивает количество информации, которое мы можем хранить для каждого цвета. В 8-битном изображении общее количество доступных цветов пикселя равняется 256. В Таблице 1 показано возможное количество доступных цветов для каждой соответствующей глубины цвета.
Глубина канала | Оттенков на канал на пиксель | Общее количество возможных оттенков |
---|---|---|
8-бит | 256 | 16.78 миллионов |
10-бит | 1024 | 1.07 миллиарда |
12-бит | 4096 | 68.68 миллиардов |
- при обработке изображений или видео после съемки
- при использовании High Dynamic Range (HDR) мониторов или камер.
Если контент снят с глубиной 10 бит, важно не потерять ее при дальнейшей обработке, поскольку это может привести к снижению резкости, контраста и других важных характеристик. В том случае, если редактируется 8-битный контент, это также может привести к уменьшению глубины и вызвать эффект цветовых полос.
Эффект цветовых полос
При захвате изображения иногда случается так, что сенсор не может распознать минимальное различие между двумя двумя соседними цветами, и возникает проблема некорректного отображения цветов. Как результат, область рисунка закрашивается одним цветом за неимением более подходящего другого. Таким образом, на рисунке появляются цветные полосы вместо плавного перехода из одного цвета в другой.
Возможные варианты решения проблемы цветовых полос:
- увеличить глубину цвета на канал
- применить цветовую дискретизацию (не рассматривается в этой статье).
Неоткалиброванный дисплей может также вызвать эффект полос. Чтобы этого избежать, воспользуйтесь утилитой Intel Graphics Control Panel.
Рисунок 1. Сравнение 8-битного (слева) и 10-битного (справа) изображения. Слева виден эффект полос.
Рисунок 1 показывает разницу между 8-битным и 10-битным изображениями применительно к эффекту цветовых полос. На левом изображении необходимая цветовая детализация не была передана сенсором, что привело у меньшему, чем надо, количеству цветов и цветовым полосам. На правом фото цветовой информации достаточно и переход между цветами получился плавным. Для обеспечения плавности цветовых переходов необходим более широкий цветовой диапазон, описанный в стандарте BT2020.
Стандарт BT. 2020
Седьмое поколение процессоров Intel Xeon и Core поддерживает стандарт BT. 2020 (известный также как Rec. 2020) в таких случаях как создание/воспроизведение 4K Ultra-high definition (UHD) контента, использование HDR с поддержкой 10 битов и т.д. UHD-мониторы имеют разрешение 3840*2160 при различной диагонали. Поддержка стандарта BT.2020 улучшает качество картинки при столь высоком разрешении.
Рисунок 2. Сравнение цветовых пространств BT.2020 и BT.709
Рекомендации The International Telecommunications Union (ITU) BT.2020 представляют значительно больший диапазон цветов, чем ранее используемые BT.709. Сравнение соответствующих цветовых пространств показано на Рисунке 2, представляющим диаграмму цветности CIE 1931. Оси X и Y показывают относительные координаты цветности с длинами волн соответствующих цветовых пространств (синий шрифт). Желтый треугольник покрывает цветовое пространство по стандарту BT. 709. Черный треугольник показывает цветовое пространство BT. 2020, значительно большее по размеру и, следовательно, содержащее большее количество цветов для плавных переходов. BT. 2020 также определяет различные аспекты UHD TV такие как разрешение дисплея, частоту кадров, цветовую субдискретизацию и глубину цвета в добавление к цветовому пространству.
Процессоры Intel 7 поколения поддерживают профили HEVC Main 10 profile, VP9 Profile 2 и High Dynamic Range (HDR) видео рендеринг с использованием стандарта BT.2020.
Профиль HEVC Main 10
High Efficiency Video Coding (HEVC), также известный как H.265 — стандарт видео сжатия, наследник хорошо известного стандарта H.264/AVC. По сравнению с предшественниками, HEVC использует более сложные алгоритмы сжатия. Больше информации о стандарте можно узнать здесь. Профиль Main 10 позволяет использовать 8-битный или 10-битный цвет с цветовой субдискретизацией 4:2:0.
Поддержка декодирования HEVC 10b появилась начиная с 6 поколения процессоров Intel. Команда ниже показывает, как тестовая утилита sample_decode из набора примеров кода Intel Media SDK может быть использована для получения сырых кадров из простейшего HEVC потока.
sample_decode.exe h365 -p010 -i input.h365 -o raw_farmes.yuv -hw
Используемый выше входной поток (input.h365) может быть взят здесь. Выходной поток (raw_frames.yuv) должен быть в формате P010, используемом как исходный материал для утилиты sample_encode.
Аппаратная поддержка кодирования/декодирования HEVC 10b внедрена начиная с 7 поколения процессоров Intel. Кодирование 10-битного HEVC реализовано с помощью дополнительного кода modified_sample_encode, специально измененного для этой конкретной функциональности. Данный пример работает с Intel Media SDK 2016 R2. Инструкция по сборке приведена в руководстве по примерам медиа в образцах кода Intel Media SDK.
Ниже показан пример 10-битного кодирования с использованием sample_encode из добавленной modified_sample_encode.
sample_encode.exe h365 -i raw_frames.yuv -o output.265 -w 3840 -h 2160 -p010 -hw
Рисунок 3. Скриншот утилиты Video Quality Caliper, показывающий, показывающий, что кодированный поток имеет 10 бит на пиксель.
Профиль VP9 2
VP9 — формат видео кодирования, разработанный Google как наследник VP8. Платформы Intel седьмого поколения поддерживают аппаратное ускорение декодирования VP9 10-бит, тогда как кодирование пока комбинированное, софтово-хардварное.
Высокий динамический диапазон (High Dynamic Range, HDR)
Динамический диапазон — это отношение значения самой светлой к самой темной точке на изображении. Видео высокого динамического диапазона (HDR) позволяет получить лучший динамический диапазон, чем обычное (SDR) видео, использующее нелинейные операции для кодирования и декодирования уровня освещенности.
Видео контент HDR поддерживается при использовании кодека HEVC Main 10 или VP9.2, аппаратно ускоренных начиная с 7 поколения процессоров Intel. Для передачи контента HDR, система должна быть оснащена портом DisplayPort 1.4 или HDMI 2.0a. Данная функциональность пока находится на стадии тестирования и не включена в общедоступные релизы.
Заключение
Как мы выяснили, разработчики сейчас имеют возможность создавать красивое, реалистичное видео в самых современных форматах, расцвеченных ярками красками 10-битного цвета, идеальным для HD/UHD дисплеев. Используя процессоры Intel седьмого поколения для создания контента стандарта BT.2020, а также возможности оптимизации Intel Media SDK, мы уже сейчас можем заглянуть за пределы разрешения 4K UHD и стандартной на сегодня кадровой скорости. В дальнейшем область применения современных аппаратно-ускоренных видео кодеков будет расширяться.
В этой статье упоминались следующие программные средства (со ссылками для скачивания):
- Программное обеспечение — Intel Media SDK 2016 R2
- Входной видео поток — MHD_2013_2160p_ShowReel_R_9000f_24fps_RMN_QP23_10b.hevc из Бесплатные потоки H.265/HEVC
- Кодек — H.265/HEVC
- Средство анализа — Video Quality Caliper (VQC), компонент Intel Media Server Studio Professional Edition и Intel Video Pro Analyzer
- Тестовый стенд:
- ЦПУ: Intel Core i7-7500U CPU @ 2.70GHz
- ОС: Microsoft Windows 10 Professional 64-bit
- Графика: Intel HD Graphics 620
Полезные ссылки
О цветовых пространствах / Habr
Я по образованию программист, но по работе мне пришлось столкнуться с обработкой изображений. И тут для меня открылся удивительный и неизведанный мир цветовых пространств. Не думаю, что дизайнеры и фотографы узнают для себя что-то новое, но, возможно, кому-нибудь это знание окажется, как минимум полезно, а в лучшем случае интересно.Основная задача цветовых моделей – сделать возможным задание цветов унифицированным образом. По сути цветовые модели задают определённые системы координат, которые позволяют однозначно определить цвет.
Наиболее популярными на сегодняшний день являются следующие цветовые модели: RGB (используется в основном в мониторах и камерах), CMY(K) (используется в полиграфии), HSI (широко используется в машинном зрении и дизайне). Существует множество других моделей. Например, CIE XYZ (стандартные модели), YCbCr и др. Далее дан краткий обзор этих цветовых моделей.
Цветовой куб RGB
Из закона Грассмана возникает идея аддитивной (т.е. основанной на смешении цветов от непосредственно излучающих объектов) модели цветовоспроизведения. Впервые подобная модель была предложена Джеймсом Максвеллом в 1861 году, но наибольшее распространение она получила значительно позже.
В модели RGB (от англ. red – красный, green – зелёный, blue – голубой) все цвета получаются путём смешения трёх базовых (красного, зелёного и синего) цветов в различных пропорциях. Доля каждого базового цвета в итоговом может восприниматься, как координата в соответствующем трёхмерном пространстве, поэтому данную модель часто называют цветовым кубом. На Рис. 1 представлена модель цветового куба.
Чаще всего модель строится так, чтобы куб был единичным. Точки, соответствующие базовым цветам, расположены в вершинах куба, лежащих на осях: красный – (1;0;0), зелёный – (0;1;0), синий – (0;0;1). При этом вторичные цвета (полученные смешением двух базовых) расположены в других вершинах куба: голубой — (0;1;1), пурпурный — (1;0;1) и жёлтый – (1;1;0). Чёрный и белые цвета расположены в начале координат (0;0;0) и наиболее удалённой от начала координат точке (1;1;1). Рис. показывает только вершины куба.
Цветные изображения в модели RGB строятся из трёх отдельных изображений-каналов. В Табл. показано разложение исходного изображения на цветовые каналы.
В модели RGB для каждой составляющей цвета отводится определённое количество бит, например, если для кодирования каждой составляющей отводить 1 байт, то с помощью этой модели можно закодировать 2^(3*8)≈16 млн. цветов. На практике такое кодирование избыточно, т.к. большинство людей не способно различить такое количество цветов. Часто ограничиваются т.н. режимом «High Color» в котором на кодирование каждой компоненты отводится 5 бит. В некоторых приложениях используют 16-битный режим в котором на кодирование R и B составляющих отводится по 5 бит, а на кодирование G составляющей 6 бит. Этот режим, во-первых, учитывает более высокую чувствительность человека к зелёному цвету, а во-вторых, позволяет более эффективно использовать особенности архитектуры ЭВМ. Количество бит, отводимых на кодирование одного пиксела называется глубиной цвета. В Табл. приведены примеры кодирования одного и того же изображения с разной глубиной цвета.
Субтрактивные модели CMY и CMYK
Субтрактивная модель CMY (от англ. cyan — голубой, magenta — пурпурный, yellow — жёлтый) используется для получения твёрдых копий (печати) изображений, и в некотором роде является антиподом цветового RGB-куба. Если в RGB модели базовые цвета – это цвета источников света, то модель CMY – это модель поглощения цветов.
Например, бумага, покрытая жёлтым красителем не отражает синий свет, т.е. можно сказать, что жёлтый краситель вычитает из отражённого белого света синий. Аналогично голубой краситель вычитает из отражённого света красный, а пурпурный краситель вычитает зелёный. Именно поэтому данную модель принято называть субтрактивной. Алгоритм перевода из модели RGB в модель CMY очень прост:
При этом предполагается, что цвета RGB находятся в интервале [0;1]. Легко заметить, что для получения чёрного цвета в модели CMY необходимо смешать голубой, пурпурный и жёлтый в равных пропорциях. Этот метод имеет два серьёзных недостатка: во-первых, полученный в результате смешения чёрный цвет будет выглядеть светлее «настоящего» чёрного, во-вторых, это приводит к существенным затратам красителя. Поэтому на практике модель СMY расширяют до модели CMYK, добавляя к трём цветам чёрный (англ. black).
Цветовое пространство тон, насыщенность, интенсивность (HSI)
Рассмотренные ранее цветовые модели RGB и CMY(K) весьма просты в плане аппаратной реализации, но у них есть один существенный недостаток. Человеку очень тяжело оперировать цветами, заданными в этих моделях, т.к. человек, описывая цвета, пользуется не содержанием в описываемом цвете базовых составляющих, а несколько иными категориями.
Чаще всего люди оперируют следующими понятиями: цветовой тон, насыщенность и светлота. При этом, говоря о цветовом тоне, обычно имеют в виду именно цвет. Насыщенность показывает насколько описываемый цвет разбавлен белым (розовый, например, это смесь красного и белого). Понятие светлоты наиболее сложно для описания, и с некоторыми допущениями под светлотой можно понимать интенсивность света.
Если рассмотреть проекцию RGB-куба в направлении диагонали белый-чёрный, то получится шестиугольник:
Все серые цвета (лежащие на диагонали куба) при этом проецируются в центральную точку. Чтобы с помощью этой модели можно было закодировать все цвета, доступные в RGB-модели, необходимо добавить вертикальную ось светлоты (или интенсивности) (I). В итоге получается шестигранный конус:
При этом тон (H) задаётся углом относительно оси красного цвета, насыщенность (S) характеризует чистоту цвета (1 означает совершенно чистый цвет, а 0 соответствует оттенку серого). Важно понимать, что тон и насыщенность не определены при нулевой интенсивности.
Алгоритм перевода из RGB в HSI можно выполнить, воспользовавшись следующими формулами:
Цветовая модель HSI очень популярна среди дизайнеров и художников, т.к. в этой системе обеспечивается непосредственный контроль тона, насыщенности и яркости. Эти же свойства делают эту модель очень популярной в системах машинного зрения. В Табл. показано изменение изображения при увеличении и уменьшении интенсивности, тона (выполняется поворот на ±50°) и насыщенности.
Модель CIE XYZ
С целью унификации была разработана международная стандартная цветовая модель. В результате серии экспериментов международная комиссия по освещению (CIE) определила кривые сложения основных (красного, зелёного и синего) цветов. В этой системе каждому видимому цвету соответствует определённое соотношение основных цветов. При этом, для того, чтобы разработанная модель могла отражать все видимые человеком цвета пришлось ввести отрицательное количество базовых цветов. Чтобы уйти от отрицательных значений CIE, ввела т.н. нереальные или мнимые основные цвета: X (мнимый красный), Y (мнимый зелёный), Z (мнимый синий).
При описании цвета значения X,Y,Z называют стандартными основными возбуждениями, а полученные на их основе координаты – стандартными цветовыми координатами. Стандартные кривые сложения X(λ),Y(λ),Z(λ) (см. Рис.) описывают чувствительность среднестатистического наблюдателя к стандартным возбуждениям:
Помимо стандартных цветовых координат часто используют понятие относительных цветовых координат, которые можно вычислить по следующим формулам:
Легко заметить, что x+y+z=1, а это значит, что для однозначного задания относительных координат достаточно любой пары значений, а соответствующее цветовое пространство может быть представлено в виде двумерного графика:
Множество цветов, задаваемое таким способом, называют треугольником CIE.
Легко заметить, что треугольник CIE описывает только цветовой тон, но никак не описывает яркость. Для описания яркости вводят дополнительную ось, проходящую через точку с координатами (1/3;1/3) (т.н. точку белого). В результате получают цветовое тело CIE (см. Рис.):
Это тело содержит все цвета, видимые среднестатистическим наблюдателем. Основным недостатком этой системы является то, что используя её, мы можем констатировать только совпадение или различие двух цветов, но расстояние между двумя точками этого цветового пространства не соответствует зрительному восприятию различия цветов.
Модель CIELAB
Основной целью при разработке CIELAB было устранение нелинейности системы CIE XYZ с точки зрения человеческого восприятия. Под аббревиатурой LAB обычно понимается цветовое пространство CIE L*a*b*, которое на данный момент является международным стандартом.
В системе CIE L*a*b координата L означает светлоту (в диапазоне от 0 до 100), а координаты a,b – означают позицию между зелёным-пурпурным, и синим-жёлтым цветами. Формулы для перевода координат из CIE XYZ в CIE L*a*b* приведены ниже:
где (Xn,Yn,Zn) – координаты точки белого в пространстве CIE XYZ, а
На Рис. представлены срезы цветового тела CIE L*a*b* для двух значений светлоты:
По сравнению с системой CIE XYZ Евклидово расстояние (√((L1-L2 )^2+(a1^*-a2^* )^2+(b1^*-b2^* )^2 )) в системе CIE L*a*b* значительно лучше соответствует цветовому различию, воспринимаемому человеком, тем не менее, стандартной формулой цветового различия является чрезвычайно сложная CIEDE2000.
Телевизионные цветоразностные цветовые системы
В цветовых системах YIQ и YUV информация о цвете представляется в виде сигнала яркости (Y) и двух цветоразностных сигналов (IQ и UV соответственно).
Популярность этих цветовых систем обусловлена в первую очередь появлением цветного телевидения. Т.к. компонента Y по сути содержит исходное изображение в градациях серого, сигнал в системе YIQ мог быть принят и корректно отображён как на старых чёрно-белых телевизорах, так и на новых цветных.
Вторым, возможно более важным плюсом, этих пространств является разделение информации о цвете и яркости изображения. Дело в том, что человеческий глаз весьма чувствителен к изменению яркости, и значительно менее чувствителен к изменению цветности. Это позволяет передавать и хранить информацию о цветности с пониженной глубиной. Именно на этой особенности человеческого глаза построены самые популярные на сегодняшний день алгоритмы сжатия изображений (в т.ч. jpeg). Для перевода из пространства RGB в YIQ можно воспользоваться следующими формулами:
Все 8-битные цвета существуют в 24-битном цветовом пространстве? Если да, то как это сделать?
With 8 bit color depth there are 256 colors. With 24 bit color depth there are 16,777,216 colors. Is there a direct mapping between every color in the 8 bit space to a color in the 24 bit space? I would think the answer to this question is yes, but the comments to this answer suggest the mapping is only an approximation.
What I would like to do is create a palette of 8 bit colors in the 24 bit color space by specifying a 24 bit RGB value. I figured I could do this using this (obviously broken) logic:
3 bits for red == 8 unique values of red, 0-7
3 bits for green == 8 unique values of green, 0-7
2 bits for blue == 4 unique values of blue, 0-3
255/8 = 32 for red and green increment value
255/4 = 64 for blue increment value
{
"Red": [0,31,63,95,127,159,191,223,255],
"Green": [0,31,63,95,127,159,191,223,255],
"Blue": [0,63,127,191, 255]
}
So with 9 values of red, 9 values of green, and 5 values of blue I get 405 colors which is wrong. I know I need 8 values of red and green and 4 values of blue so I just adjusted things a bit:
255/87 = 36.57142857142857 for red and green increment value
255/43 = 85 for blue increment value
So this works for blue, but now my red and green increment value is not a whole number.
Once I got the mapping figured out I was going to loop through it like this:
for(r in rgbData.get("Red")) {
for(g in rgbData.get("Green")) {
for(b in rgbData.get("Blue")) {
colors.add("rgb ${r} ${g} ${b}")
}
}
}
This may be a totally incorrect approach to do what I want, just wanted to show I have tried something 🙂
UPDATE:
I tried the approach @Marc B suggested but it doesn’t seem right. For instance, there is no white in the map I generated (which is 255, 255, 255
using 24 bit RGB). Using his approach this makes sense to me because the highest RGB value is 224, 224, 192
as can be seen:
full red == 111
111 >> 5 == 11100000
full green == 111
111 >> 5 == 11100000
full blue == 11
11 >> 6 == 11000000
11100000 11100000 11000000 == 224, 224, 192
224, 224, 192 != white
Here is the map generated using his approach:
{
"Red": [0,32,64,96,128,160,196,224],
"Green": [0,32,64,96,128,160,196,224],
"Blue": [0,64,128,192]
}
And the palette it generates:
UPDATE 2:
After doing some more research I have realized that when «X colors» (X being some number like 256, 16,777,216, etc.) are referred to that those colors can be just about anything. There is not a predefined set of 256 colors that are «the» 256 colors, though there are (as several have already mentioned) predefined sets of 256 colors that are «the» 256 colors for a specific implementation. I was also able to find a GIMP .gpl
palette file on my organizations wiki that specified the 256 colors I am concerned with, so I can just copy the values out of there.
8-битный цвет — Википедия
Материал из Википедии — свободной энциклопедии
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 25 июня 2014; проверки требуют 9 правок. Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 25 июня 2014; проверки требуют 9 правок.8-би́тный цвет в компьютерной графике — это метод хранения информации изображения в памяти компьютера либо в файле изображения, при этом каждый пиксель кодируется одним 8-битным байтом (октетом). Соответственно максимальное количество цветов, которые могут быть отображены одновременно,— 256 (28).
8-битные видеорежимы появились вместе с ростом объёмов памяти компьютеров. Основное своё распространение получили с конца 80-х, когда появились MSX2 и VGA. В середине 90-х, с появлением доступных 1—2-мегабайтных видеоплат, на рабочих столах ОС 8-битные режимы уступили пальму первенства 16-битным. В играх они продержались несколько дольше из-за высокой скорости — например, StarCraft (1998) работал в режиме 640×480×8 и не замедлялся на компьютерах класса Pentium-100 даже в массовых боях. Вышедший в 2000 году Grand Prix 3 использовал 8-битные режимы в программном рендеринге.
В настоящее время простые мобильные видеочипы работают как минимум с 12-битным цветом; на настольных машинах применяется 24- или 32-битный truecolor. Однако 8-битные GIF и PNG всё ещё широко используются как метод сжатия графики. Некоторые программы удалённого управления (Virtual Network Computing, Remote Desktop Protocol) могут использовать 8-битные цвета для уменьшения требований к пропускной способности.
В компьютерной графике существуют такие форматы 8-битного цвета:
Индексированный цвет[править | править код]
Наиболее часто используемый формат — палитровый (индексированный). В этом случае из широкого цветового пространства (в VGA — 64³ = 262 144 цветов, на более поздних видеоадаптерах — 256³ = 16 777 216) выбираются любые 256 цветов. Их значения R, G и B хранятся в специальной таблице — палитре. В каждом из пикселей изображения хранится номер цвета в палитре — от 0 до 255.
8-битные графические форматы эффективнее (по сравнению с truecolor-форматами) сжимают картинки, у которых не более 256 различных цветов. Также варьирование количества цветов — один из методов сжатия с потерями.
Большинство 8-битных форматов изображений хранят используемую палитру из 256 цветов вместе с картинкой. Если такое изображение отображается на 8-битном графическом аппаратном обеспечении, палитра загружается в видеоплату. В этом случае цветовые гаммы других изображений на экране пострадают, так как их палитры могут быть несовместимы с вновь загруженной палитрой.
Преимущество индексированных цветов в высоком качестве изображения — широкий цветовой охват сочетается с небольшим расходом памяти. Также на 8-битном аппаратном обеспечении можно делать очень быстрые палитровые спецэффекты, принципиально недостижимые в 16- и 24-битном режиме на компьютерах того времени (начало-середина 90-х годов). Наконец, вместе с одной картинкой можно хранить несколько палитр (получается несколько картинок разных цветов).
Недостатком является то, что если в 8-битном видеорежиме надо отобразить одновременно несколько 8-битных картинок, приходится сводить их к одной общей палитре (при этом страдает качество). Также построение оптимальной палитры для полноцветного изображения может занять много времени. Поэтому в случаях, когда требуется скорость (веб, воспроизведение видео на truecolor-кодеке), применяют чёрно-белые или однородные палитры. Во времена 8-битных видеоплат широко применялись 8-битные кодеки — Smacker, Escape и другие.
Чёрно-белая палитра[править | править код]
Чёрно-белое изображение с 8-битной разрядностью: от чёрного (0) до белого (255) получается 256 градаций серого.
Вместо чёрно-белой шкалы мог быть любой другой цветовой градиент (например, сепия).
Однородные палитры[править | править код]
Другой формат представления 8-битных цветов — это «реальное» описание красной, зелёной и синей составляющей с низкой разрядностью. Такая форма представления цвета в компьютерной графике обычно называется «8-битным TrueColor» или «однородной палитрой» (англ. uniform palette). Вот некоторые из широко употребляемых однородных палитр.
- В этой палитре используется 3-битный красный цвет, 3-битный зелёный и 2-битный синий.
Бит 07 06 05 04 03 02 01 00 Данные R R R G G G B B (где R-красная, G-зелёная, B-синяя составляющие)
- Применялась в платформе бытовых компьютеров MSX2. Преимущество: простота аппаратной реализации (R, G и B — битовые поля). Недостаток в низкой разрядности по синему цвету (даже несмотря на то, что люди менее чувствительны к оттенкам синего).
- 6×6×6 (палитра Netscape)
- Безопасная палитра Netscape — палитра, в которой красная, зелёная и синяя компонента принимают значения от 0 до 5 (всего 6³ = 216 цветов). В truecolor «безопасными» являются цвета, у которых все три компоненты принимают значения
00
,33
,66
,99
,CC
илиFF
— например,6633FF
. - Применялась на заре веба — в середине 90-х годов, когда количество пользователей с 256-цветными видеоплатами всё ещё было значительным. Преимущество в простоте запоминания; также системе остаётся достаточно цветов на собственные нужды. Недостаток в том, что 8-битная разрядность используется не полностью, даже с учётом «системных» цветов.
Изредка применяются и другие палитры:
- 6×7×6 = 252 цвета.
- 6×8×5 = 240 цветов.