Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

2000 г

Как работает формат JPEG?

Mike Melnikov (cherry-design@mail.ru)
Web-studio "Cherry-Design"

Знание некоторых принципов возмещает незнание многих фактов. Сегодня мы поговорим о технологии сжатия JPEG и о том, за счет чего достигаются столь сильные степени сжатия.

Процесс сжатия по схеме JPEG состоит из нескольких шагов. На первом шаге производится преобразование изображения из цветового пространства RGB в пространство YUV, основанное на характеристиках яркости и цветности. Вся дальнейшая работа производится именно с этим цветовым пространством, которое благодаря некоторым своим характеристикам позволяет получать нам столь большие степени сжатия.

Что же такого необычного в YUV представлении цвета по сравнению с RGB? А то, что оно наиболее близко к "естественному", тому, которое неосознанно выполняет человек. Y-компонента, или яркость, тесно связана с качеством картинки. Точнее сказать Y - это и есть картинка, только черно-белая. Компоненты U и V содержат информацию о цвете и позволяют нам раскрашивать Y-картинку.

На следующем после преобразования шаге изображение разделяется на квадратные участки размером 8х8 пикселей. После этого над каждым участком производится т.н. дискретное косинус-преобразование (ДКП). При этом выполняется анализ каждого блока, разложение его на составляющие цвета и подсчет частоты появления каждого цвета.

Человеческий глаз устроен таким образом, что наиболее чувствителен именно к яркостной составляющей изображения (Y-компонента) и наименее к цветовым. Причина этого феномена лежит в физиологии. Вы, наверно, помните, что зрачок, представляет собой оптическую линзу, которая фокусирует изображение на глазное дно, покрытое палочками и колбочками. Ну так вот, палочки - это сенсоры, воспринимающие именно яркостную составляющую, а колбочки - цветовую. Причем палочек на порядок больше, чем колбочек, и они гораздо более чувствительны к свету. Вспомните поговорку "Ночью все кошки серы". Почему так? Почему вечером все теряет цвет? Именно из-за того, что количества падающего на зрачок света не хватает для того, чтобы вызвать реакцию колбочки. Но и чувствительность человеческого глаза к разным цветам тоже величина не постоянная. Зрачок более чувствителен к нижней части цветового спектра, нежели к верхней. Формат JPG как раз и учитывает эти особенности.

Анализируя частотную информацию о появлении цветов, удается избавиться от части информации уже в процессе квантования. При этом цвета в верхней части спектра исключаются, что практически не сказывается на зрительном восприятии образа. Также исключается часть яркостной информации. Грубо говоря, JPG просто отбрасывает от яркостной составляющей половину полезного сигнала, а от цветовой 3/4. Это, конечно, примерно, т.к. существуют градации и более сложные схемы сжатия.

Количество информации, исключаемой при сжатии, зависит от требуемого качества изображения. При максимально-высоких уровнях сжатия детали полностью стираются, и блок становится серым. При средних и низких уровнях сжатия в файле сохраняется _примерная_ информация о цвете данного участка. Величина этой "примерности" напрямую зависит от степени сжатия. И это нужно понять, что в отличие от обычных форматов, сохраняющих изображение поточечно, JPG сохраняет примерные цвета. Если говорить научным языком, то JPG использует для сохранения ряды Фурье и при больших степенях сжатия просто отбрасывает члены ряда высшего порядка. И каждый раз при воспроизведении изображения на экране компьютер производит синтез. Причем, достаточно ресурсоемкий и заметный на медленных компьютерах. Из этого следует одно замечание - если Вы сохранили какой-нибудь рисунок в формате JPG, то восстановить его обратно до последнего пикселя невозможно! Именно из-за этого формат называется "форматом с потерями", и именно поэтому не рекомендуется пересжимать JPG-изображения, т.к. они обязательно станут хуже. А если это сделать 10 раз?

Информация о яркости и цвете затем кодируется так, что сохраняются только отличия между соседними блоками. В результате блоки представляются строками чисел, которые можно сжимать дальше. Поскольку в результате обработки блоки содержат много нулей, последняя стадия кодирования (выполняемая по алгоритму Хаффмана - подобного тому, что применяется в архиваторах) дает хорошие результаты. Отсюда еще небольшое замечание - сжимать JPG-файл архиватором не имеет никакого смысла, ведь он уже сжат. Полученный архив наверняка будет больше по размеру, чем исходная фотография.

Таким образом, первоначальные 24 бита на элемент изображения или 1536 бит (192 байта) на блок превращаются в горстку бит, которые описывают зрительные характеристики всего участка изображения.

Статья появилась, как результат переписки с Сергеем Ереминым по поводу оптимизации JPEG - за что ему большое спасибо.

Назад | Содержание | Вперед

 

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в 21 локации

От 104 рублей в месяц

Безлимитный трафик. Защита от ДДоС.

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...