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