Я знаю, что 24-битное изображение выделяет по 8 бит для R, G и B. Это только для цветового пространства RGB. Как распределяются биты в цветовом пространстве YCbCr для 24-битного изображения JPEG?
Есть несколько форматов для 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 может начинаться с 8 бит на канал R, G и B, но при сохранении в JPEG он сохраняется совсем по-другому, где нет реальной «битовой глубины», а вместо этого значения сохраняются как частотные коэффициенты заданной точности.
В JPEG более важным является скорость квантования , которая влияет на то, сколько информации выбрасывается на этапе квантования сжатия и, следовательно, насколько точным является каждый коэффициент. Эта скорость квантования устанавливается настройкой «качество» при сохранении JPEG в фотошопе. Это не связано с битовой глубиной, как в растровом изображении, и вы даже можете сказать, что изображение JPEG не имеет битовой глубины, в то время как в формате JPEG, хотя кодировщики/декодеры JPEG начинаются с/заканчиваются 24-битным растровое изображение.
Другим важным фактором, влияющим на сохранение JPEG, является тип субдискретизации цветности . В JPEG у вас есть возможность уменьшить вдвое горизонтальное или горизонтальное и вертикальное разрешение каналов цвета (Pr и Pb) по отношению к каналу яркости (яркости). При распаковке цветовые каналы интерполируются, и для большинства фотографических объектов это не имеет большого значения.
Вот примерное описание того, как изображение превращается в JPEG.
Значения RGB преобразуются в значения Y, Pb, Pr. Цветовое пространство YPbPr лучше подходит для эффективного сжатия, поскольку оно хранит информацию о яркости, которая содержит наиболее подробную информацию, только в одном канале. Это преобразование представляет собой простую арифметическую операцию, которая полностью обратима, за исключением случаев ошибки округления.
При использовании какой-либо субдискретизации цветности (другими словами, при использовании любого другого режима, кроме режима 4:4:4), вертикальное и/или горизонтальное разрешение каналов Pb и Pr уменьшается вдвое. Таким образом, эти каналы будут иметь размеры в пикселях, отличные от размера канала яркости. Это приводит к постоянной потере разрешения в цветовых каналах.
Для каждого канала изображение разбивается на блоки размером 8 пикселей на 8 пикселей, что дает 64 линейных значения для каждого такого блока в каждом канале. Если канал не кратен 8 пикселям ни в одном измерении, то краевые пиксели повторяются (и будут выброшены при распаковке — таким образом, сжатие JPEG всегда более эффективно с размерами, кратными 8 пикселям, или 16, если вы в субдискретизации цветности).
64 значения в каждом блоке претерпевают преобразование из пространственной области в частотную область, в данном случае называемое дискретным косинусным преобразованием. В итоге вы получите 64 коэффициента, каждый из которых представляет амплитуду конкретной частотной карты в области, занимаемой этим блоком. Первое значение — это самая низкая частота, которая фактически является средним значением всех пикселей, вплоть до последних значений, описывающих компонент с самой высокой частотой блока. Все более ранние значения отклоняются намного больше и более важны для внешнего вида конечного изображения, чем более поздние значения в блоке. Эта операция полностью обратима, если вы используете достаточную точность.
Затем следует шаг квантования, на котором каждый из 64 коэффициентов, полученных на предыдущем шаге, делится на некоторое число (которое называется коэффициентом квантования), а остаток отбрасывается. Именно здесь больше всего страдает точность сэмплов, но именно здесь вы получаете огромную экономию места с помощью JPEG по сравнению со сжатием без потерь. Поскольку все находится в частотной области с момента предыдущего преобразования, эта потеря точности делает все возможное для сохранения воспринимаемого качества изображения, чем простое уменьшение битовой глубины / точности пикселей до этого преобразования. Обратной стороной этой процедуры является простое умножение на то же число, на которое вы разделили коэффициенты, но, конечно, поскольку вы выбросили остатки, вы получите меньшую точность коэффициентов. Это приводит к постоянной потере качества,
После этого квантования многие из более поздних, менее значимых коэффициентов обычно равны нулю, поэтому они отбрасываются. Затем процедура кодирования переменной длины (без потерь) эффективно кодирует все оставшиеся коэффициенты, даже если каждый из них может использовать разное количество битов.
Невозможно сказать, что определенный коэффициент квантования эквивалентен определенной битовой глубине, поскольку квантование не дает полосатости, как при уменьшении битовой глубины, а вместо этого дает общую потерю восприятия в деталях, начиная с тех частей, где вы бы это заметили. меньше, потому что он имеет такую низкую амплитуду для своей частоты.
Представление цветности (Cb Cr) в отдельных каналах от яркости (Y) оказывает еще один положительный эффект на сжатие. Большая часть видимой информации находится в канале яркости. Человеческие глаза допускают как более низкое пространственное разрешение, так и более агрессивное квантование в каналах цветности. Таким образом, агрессивно сжатое изображение может в конечном итоге потреблять около 10% файлового пространства для цветности, а остальное — для яркости, и при этом выглядеть прилично.
В конце концов, это все еще сжатие с потерями.
Приблизительно 8 бит на каждый канал, но есть несколько разных способов сделать это. Подробности приведены в статье Википедии о YCbCr .
хубер
Джерри Коффин
Томасраттер
Марк Рэнсом
Томасраттер
Томасраттер