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

Главная / категория «Советы по юзабилити дизайна сайта » / «Как работает формат JPEG?»


 

Знание некоторых принципов возмещает незнание многих фактов. Сегодня мы поговорим о технологии сжатия 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 байта) на блок превращаются в горстку бит, которые описывают зрительные характеристики всего участка изображения.

 


Создан: 04.03.2011 17:31:31  Изменён: 21.01.2015 19:25:09
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Категории
Создание форума - от 8.000 руб
Вопросы заказчиков сайтов
Советы заказчикам сайтов
PHP-Fusion-7
-- Описание PHP-Fusion для новичков
-- PHP-Fusion панели
-- Плагин Доски объявлений для PHP-Fusion
-- Сборник плагинов и модов PHP-Fusion
Категории
Раскрутка интернет-магазина
Общие советы юзабилити сайта
-- Советы по юзабилити дизайна сайта
-- Советы по юзабилити интернет-магазина
-- Юзабилити регистрации пользователей и комментирования
-- Советы по юзабилити меню
-- Советы по юзабилити текста
-- Веб-аналитика. Счётчики посещаемости. Google Analitics
Где поставить ссылку бесплатно?
-- Раскрутка вне поисковиков
-- Наполнение и оптимизация страниц
Видео-анализ юзабилити сайта
Обмен ссылками: советы и скрипты
Яндекс.Метрика
Переключатель дизайна
AFT_White_L
25.09.2017 03:55:23