ФОРМАТ JPEG

JPEG (или JPG) - Joint Photographic Expert Group - формат для цифровых фотографий, разработанный "объединённой группой экспертов в области фотографии" в 1991 году.

Этот формат работает в наших смартфонах, фотоаппаратах. Даже в самых навороченных профессиональных фотоаппаратах наряду с другими форматами обязательно есть и jpeg.

Формат использует 24-х битовую цветовую схему RGB. Его замечательное свойство - внутренняя регулируемая компрессия. Рассмотрим, как это работает.  

Для начала посчитаем, сколько будет без сжатия весить типичная фотография в 10 мегапикселей (у меня на смартфоне установлено для фото 16:9, 4096х2304=9437184, то есть как раз примерно 10 Мпс). 24 бита = 3 байта для кодировки цвета на каждый пиксель. Итого, 30 млн. байт, или ~ 30 Мбайт на одну фотографию. В то же время реально фотографии весят 0,9 - 1,5 Мбайта, - работает внутренняя компрессия jpeg.

Рассмотрим фотографию и её фрагмент.

 

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

Это - объяснение в первом приближении. На самом деле всё сложнее: группы пикселей могут быть не обязательно "квадратными", не обязательно связанными, а чтобы между группами не было резких переходов, применяется функциональное сглаживание.

Сжатие, понятно, идёт с потерями качества. Но: найдена граница сжатия, до которой человеческий глаз не замечает потери качества, воспринимает сжатую фотографию так же, как несжатый оригинал. Эта степень сжатия как стандарт установлена в непрофессиональных камерах и смартфонах. Степень сжатия не слабая - примерно в 15 - 30 раз по памяти. Так, фотография вверху слева весит 14 Кбайт, а в несжатом виде весила бы 220 Кбайт. Степень сжатия при одинаковых настройках для разных фотографий разная, если на фото много мелких деталей, сжимается хуже.

При сохранении картинки в формате jpeg всегда появляется ползунок для регулировки степени сжатия:

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

Поиграем с ползунком в редакторе GIMP.

 
  Несжатое изображение весило бы 350 Кбайт
Стандартно сжатое в смартфоне изображение,

15 Кбайт

Дожатое до 50 у.е.,

12 Кбайт

Дожатое до 10 у.е.,

3,5 Кбайт

Дожатое до 1 у.е.,

2 Кбайт

Видно, что сжатие выше установленного стандарта роняет качество, а выигрыша по памяти практически не даёт.