Как цветовое пространство YCbCr представлено в изображении JPEG?

Я знаю, что 24-битное изображение выделяет по 8 бит для R, G и B. Это только для цветового пространства RGB. Как распределяются биты в цветовом пространстве YCbCr для 24-битного изображения JPEG?

Ответы (4)

Есть несколько форматов для YCbCr. вообще говоря, глаз более чувствителен к изменениям яркости (Y, яркость), чем к изменениям цветности (Cb, Cr, цвет). Таким образом, можно стереть некоторую информацию о цветности, сохранив при этом качество изображения.

Таким образом, самым «дорогим» является формат 4:4:4, где на каждую яркостную (Y) компоненту приходится 1 красная разность (Cr) и одна синяя разность (Cb).

Затем, применяя принцип, который я упомянул, получается 4:2:2, где на каждые 2 компонента Y приходится 1 Cb и 1 Cr. И это идет еще дальше до 4:1:1 и 4:2:0 и т. д. Подробнее здесь .

Эти шаблоны, по-видимому, относятся к частотной дискретизации для видео, а не к кодированию JPEG.
@whuber: они часто используются при обсуждении кодирования видео, но JPEG также поддерживает яркость с удвоенным разрешением по сравнению с цветностью. Однако в случае с JPEG это необязательно — цветность может быть как в полном, так и в половинном разрешении.
GIMP будет использовать подвыборку цветности по умолчанию при сохранении JPEG, хотя это легко переопределить. Не могу вспомнить, относится ли это и к Photoshop.
@thomasrutter, Photoshop выбирает подвыборку на основе выбранной вами настройки качества. Это не самостоятельный вариант.
Цифры, кстати, относятся к количеству выборок на 4 горизонтальных пикселя для Y, Pr и Pb. Таким образом, 4:4:4 означает, что все три канала производят выборку каждого пикселя; 4:2:2 означает, что каналы Pr и Pb производят выборку только каждого второго пикселя по горизонтали; 4:1:1 (я не думаю, что это когда-либо используется в фотографии, только в видео) означает, что Pr и Pb производят выборку только каждого четвертого пикселя по горизонтали. 4:2:0 — особое отклонение от этого правила. Это НЕ означает, что канала Pb нет. Это означает, что каналы Pr и Pb делятся пополам как по горизонтали, так и по вертикали, а не только по горизонтали.
Я имел в виду Y Pb Pr, тогда как в цифровой форме он обычно называется Y Cb Cr.

JPEG может начинаться с 8 бит на канал R, G и B, но при сохранении в JPEG он сохраняется совсем по-другому, где нет реальной «битовой глубины», а вместо этого значения сохраняются как частотные коэффициенты заданной точности.

В JPEG более важным является скорость квантования , которая влияет на то, сколько информации выбрасывается на этапе квантования сжатия и, следовательно, насколько точным является каждый коэффициент. Эта скорость квантования устанавливается настройкой «качество» при сохранении JPEG в фотошопе. Это не связано с битовой глубиной, как в растровом изображении, и вы даже можете сказать, что изображение JPEG не имеет битовой глубины, в то время как в формате JPEG, хотя кодировщики/декодеры JPEG начинаются с/заканчиваются 24-битным растровое изображение.

Другим важным фактором, влияющим на сохранение JPEG, является тип субдискретизации цветности . В JPEG у вас есть возможность уменьшить вдвое горизонтальное или горизонтальное и вертикальное разрешение каналов цвета (Pr и Pb) по отношению к каналу яркости (яркости). При распаковке цветовые каналы интерполируются, и для большинства фотографических объектов это не имеет большого значения.

Вот примерное описание того, как изображение превращается в JPEG.

  1. Значения RGB преобразуются в значения Y, Pb, Pr. Цветовое пространство YPbPr лучше подходит для эффективного сжатия, поскольку оно хранит информацию о яркости, которая содержит наиболее подробную информацию, только в одном канале. Это преобразование представляет собой простую арифметическую операцию, которая полностью обратима, за исключением случаев ошибки округления.

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

  3. Для каждого канала изображение разбивается на блоки размером 8 пикселей на 8 пикселей, что дает 64 линейных значения для каждого такого блока в каждом канале. Если канал не кратен 8 пикселям ни в одном измерении, то краевые пиксели повторяются (и будут выброшены при распаковке — таким образом, сжатие JPEG всегда более эффективно с размерами, кратными 8 пикселям, или 16, если вы в субдискретизации цветности).

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

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

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

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

Я думаю, мой мозг просто взорвался.
Подвыборка цветности не просто приводит к «потере разрешения». Он вносит очень заметные артефакты, особенно в красном канале.
@Mark Ransom, эти артефакты являются не чем иным, как результатом уменьшения вдвое разрешения в цветовых каналах и интерполяции, необходимой для учета этого после декомпрессии. Он никогда не должен создавать никаких «заметных артефактов», кроме тех, которые вызваны размытием разрешения, хотя могут существовать некоторые декодеры, которые портят эту интерполяцию или выполняют очень простую интерполяцию ближайшего соседа, что приводит к блочности, которая весьма заметна для красного цвета. детали на черном (или пурпурном на синем и т. д.). Например, это была распространенная проблема на некоторых ранних DVD-плеерах.
Я не думаю, что когда-либо видел лучшее, более простое для понимания объяснение сжатия изображений в формате jpeg или действительно с потерями. определенный +1
Извините, я не имел в виду, что субдискретизация вызывает артефакты. Просто существующие ошибки квантования увеличиваются в 2 раза, что делает их гораздо более заметными. Я думаю, важно знать, что видимый эффект субдискретизации — это больше, чем просто небольшая дополнительная размытость.
Да, ты прав. Вам необходимо выбрать соответствующий коэффициент квантования/настройку качества, и если вы выполняете субдискретизацию цветности, это может повлиять на ваш выбор.

Представление цветности (Cb Cr) в отдельных каналах от яркости (Y) оказывает еще один положительный эффект на сжатие. Большая часть видимой информации находится в канале яркости. Человеческие глаза допускают как более низкое пространственное разрешение, так и более агрессивное квантование в каналах цветности. Таким образом, агрессивно сжатое изображение может в конечном итоге потреблять около 10% файлового пространства для цветности, а остальное — для яркости, и при этом выглядеть прилично.

В конце концов, это все еще сжатие с потерями.

Приблизительно 8 бит на каждый канал, но есть несколько разных способов сделать это. Подробности приведены в статье Википедии о YCbCr .

Об этом было сказано в вопросе. Дайте более развернутый ответ.
@Nick Где именно было сказано «это» в вопросе? Вопрос в его нынешнем виде гласит: «Как распределяются биты в цветовом пространстве YCbCr для 24-битного изображения JPEG?» Я сказал, как они распределяются, предполагая, как это сделал бы любой, кто понимает вопрос, что это каналы Y, Cb и Cr. Мой ответ - правильное резюме статьи в Википедии. Политика SE заключается в том, чтобы предоставлять резюме, а не копировать материалы оптом (хотя, признаюсь, легко привести некоторые пограничные примеры длинных цитат в других местах на этом сайте).
Я думаю, что такой ответ, хотя и не так хорош, как полное объяснение, намного лучше, чем тот, который просто вырезает и вставляет из Википедии или даже перефразирует всю статью в Википедии. Если Википедия хороша, рассказывать о ней людям полезно. И если это все , что ваш ответ вносит, то быть искренним и просто давать краткое резюме и ссылку - это именно то, что нужно сделать.