16

Как работает JPEG

В наше время трудно найти человека, который не знает про JPEG, но многие ли понимают, как он сжимает?

Начнем с основ, пока не будем переходить к схеме кодера JPEG. Наш глаз воспринимает оттенки трех цветов: красного (R), зеленого (G), синего (B). Отсюда и пошло название цветовой модели RGB. По этому же принципу работают дисплеи — каждый пиксель включает в себя три светодиода. Иногда четыре и больше, но это не важно.


В эру черно-белого телевидения была придумана другая цветовая модель — YCbCr. В ней Y — это черно-белая составляющая изображения (яркость), а Cb и Cr — цветоразностные. Из YCbCr можно легко получить RGB практически без потерь в качестве. Справедливо и обратное. Формулы приводить не буду, оставлю ссылку в конце.


Для компонент Cb и Cr производится выборка с уменьшением числа передаваемых элементов изображения, так как человеческий глаз менее чувствителен к перепадам цвета. Это позволило экономить место уже на этапе представления изображения аж в 2 раза.

Итак, экономия места в JPEG начинается на этапе представления изображения. Вместо привычного RGB в нем используется YCbCr. Изображение разбивается на блоки 8х8 пикселей. Каждый блок подвергается Дискретному Косинусному Преобразованию (ДКП), которое переводит блок из пространственного в спектральный вид.

Визуальное представление есть в этом посте: http://pikabu.ru/story/naglyadnoe_obyasnenie_preobrazovaniya...


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


Почему эти нули так важны? Все просто. Отквантованные спектральные коэффициенты сжимают сериями.

Например серия: 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 19

Будет иметь вид: 4, 6, 8, 19

(первое число количество нулей, второе прерывающее серию)

Намного меньше чисел, неправда ли?


После сжатия серий результат подается на кодер Хаффмана, который делает сжатие еще более эффективным. Далее весь процесс повторяется для каждого блока изображения.

Многих наверное интересует момент, а что же так "жмет" изображения?

Во всем виновато квантование. Чем выше степень квантования, тем более сжатое изображение на выходе.  

Сразу хочу сказать, я опустил подробности зигзагообразного обхода, ограничения длины серий и другие подробности для упрощения повествования.


Надеюсь, Вам было интересно!


Баянометр ругался на картинки.


Ссылки на материалы:

1) JPEG: http://rain.ifmo.ru/cat/view.php/theory/data-compression/jpe...

2) Квантование: https://traditio.wiki/Квантование_(обработка_сигналов)

3) YCbCr: https://ru.wikipedia.org/wiki/YCbCr

0
DELETED
Автор поста оценил этот комментарий
А почему именно шакалы?
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

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

показать ответы
0
Автор поста оценил этот комментарий

Автор, тема интересная. Что скажешь про jpeg2000 (.jp2), если знаком, конечно. Почему этот формат не взлетел, например?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

В универе заставляли разбираться с различными форматами сжатия изображений и видео. JPEG2k имел сложный алгоритм для того времени и не имел нативной поддержки. А JPEG уже умели поддерживать различные платформы, в т.ч. на железе.


А так, сам формат позволяет эффективнее сжимать фотореалистичные изображения, но это совсем другая история :)

показать ответы
Автор поста оценил этот комментарий

прошел год, так что тут сложного?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

0
Автор поста оценил этот комментарий
Ты говришь "сложный". Расскажи в чём сложность, опиши его, пожалуйста. Если считаешь, что это не важно, можешь не отвечать.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Я себе пометил, чтобы не забыть ответить тебе. Разгребу завалы, скачаю стандарт, освежу память и отвечу.

показать ответы
0
Автор поста оценил этот комментарий

Сейчас в тренде webp, намного лутше чем жпег

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Не соглашусь, одна из первых статей рассказывает о недостатках формата: https://habrahabr.ru/post/275735/


Недавно сделали кодек на основе H.265 для изображений и анимаций. Но поддержки браузеров пока нативной нет.

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

Не могли бы Вы уточнить, как эти дополнения противоречат тому, что описано в статье?

Более того, не путайте, пожалуйста, артефакты кодирования с артефактами преобразования.

0
DELETED
Автор поста оценил этот комментарий
И ещё вопрос, почему нет прозрачного цвета?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
0
DELETED
Автор поста оценил этот комментарий
Это без сжатия который?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

да

0
DELETED
Автор поста оценил этот комментарий
А какой формат без потерь имеет лучший размер файла?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Зависит от применения. В web используют png. Для фотореалистичных изображений советуют lossless jpeg. Нужно учитывать свойства изображения, и уже тогда делать выбор.

показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества