🔍 КАК ЭТО УСТРОЕНО

Почему JPEG теряет качество, а ты этого не замечаешь

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

JPEG честно признаётся, что теряет часть картинки — вопрос лишь в том, какую часть и почему вы этого не видите.
Сжатие с потерями выбрасывает то, что глаз всё равно не разглядит. Гениальность JPEG — в умении точно угадать, что именно можно потерять.

Фотография с телефона в исходном виде весит десятки мегабайт. В формате JPEG — пару мегабайт, и на экране разница почти не видна. Но это не сжатие без потерь: часть информации стирается насовсем, и распаковать оригинал уже нельзя. Секрет в том, что JPEG теряет именно то, к чему наше зрение нечувствительно.

Глаз — плохой измеритель деталей

Человеческое зрение устроено неравномерно. Мы отлично замечаем разницу в яркости, но гораздо хуже — разницу в цвете. И почти не видим мелких цветовых перепадов на фоне крупных. JPEG это эксплуатирует на полную.

Первый шаг — картинку переводят из привычных красного-зелёного-синего в систему «яркость + два цветовых канала». После этого цветовые каналы можно смело прорядить: хранить цвет с вдвое меньшим разрешением, чем яркость. Глаз подмены не замечает — а данных уже стало меньше.

Картинку раскладывают на волны

Дальше начинается самое интересное. Изображение режут на квадратики 8×8 пикселей, и каждый такой квадратик раскладывают на сумму простых узоров — от ровной заливки до всё более частой «ряби». Эта математическая операция называется дискретным косинусным преобразованием (DCT). По сути картинка превращается из набора пикселей в набор «сколько здесь крупных деталей, сколько средних, сколько мельчайших».

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

Квантование: ручка громкости потерь

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

Когда вы двигаете ползунок «качество» при сохранении JPEG, вы как раз меняете эту таблицу. Высокое качество — мягкое округление, мало потерь, большой файл. Низкое качество — агрессивное округление, картинка рассыпается на квадраты, зато файл крошечный.

КачествоЧто происходитРазмер
95потери почти незаметныбольшой
75хороший компромисссредний
30видны блоки 8×8 и «грязь»маленький

Почему пересохранять JPEG нельзя

Раз потеря необратима, каждое новое сохранение в JPEG округляет уже округлённое. Сохранили, открыли, чуть поправили, снова сохранили — и так десять раз. Картинка деградирует, как ксерокопия ксерокопии: появляются ореолы вокруг контуров, «грязь» в небе, заметные квадраты. Это явление называют поколенческой потерей.

Отсюда практическое правило: храните исходники в формате без потерь (например, PNG для графики или RAW для фотоснимков), а в JPEG переводите только финальную версию для публикации. И никогда не используйте JPEG для скриншотов с текстом — резкие границы букв состоят как раз из той «мелкой ряби», которую формат безжалостно размывает, оставляя вокруг символов заметные артефакты.

Заодно становится понятно, почему JPEG так любят фотографии и так не любят логотипы. Живой снимок полон плавных переходов и шума, где потеря мелких деталей незаметна, — формат на нём блистает. А плакат с крупными плоскими заливками и чёткими линиями раскрывает все слабости: вокруг резких краёв появляются ореолы, а ровный фон покрывается еле заметной рябью. Для такой графики честнее форматы без потерь, которые сохранят каждый пиксель границы нетронутым.

JPEG — не плохой формат. Он гениально подогнан под несовершенство нашего зрения. Просто важно понимать, за что именно вы платите уменьшением файла.

#JPEG#данные#зрение#изображения#сжатие