Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Сжатие изображений по блочному алгоритму JPEG.



Читайте также:
  1. V2: Изгиб с растяжением-сжатием
  2. V2: Испытания конструкционных материалов на растяжение и сжатие
  3. ГТУ со ступенчатым сжатием с промежуточным охлаждением и со ступенчатым расширением и промежуточным подводом теплоты
  4. Дальнейшее «сжатие» задачи
  5. Добавление изображений
  6. Изгиб с растяжением? Сжатием
  7. Имена файлов изображений и атрибут alt

Как известно, все множество цветовых оттенков может быть задано различными пропорциями яркости трех цветовых составляющих, - в частности, красного (Red – R), зеленого (Green – G) и голубого (Blue – B). В памяти компьютера изображение чаще всего представляется как матрица (растр) точек - пикселей.

(Наряду с таким «растровым» представлением существует и так называемое «векторное», когда элементы изображения - кривые – описываются математическими уравнениями. К «векторному» описанию изображения применимы способы сжатия данных без потерь. Здесь мы будем говорить о методах, применяемых по отношению к растровым изображениям).

Каждому пикселю отвечает три кодовых слова, характеризующих яркость составляющих RGB. Чаще всего для каждого из них отводится один байт (именно так кодируются цвета пикселей например в популярных графических форматах tif и bmp).

 

Особенности человеческого зрения заключаются, в частности, в том, что глаз слабо различает мелкие детали изображения и более чувствителен к изменениям яркости, чем к цветовым переходам. Эти особенности использует популярный алгоритм сжатия с потерями информации JPEG. В настоящее время широко используется «блочная» версия алгоритма, в которой все изображение разбивается на блоки 8х8 и в дальнейшем эти блоки «огрубляются» таким образом, чтобы код, который их описывает, стал как можно короче (исходное описание каждого такого блока требует 8х8х3=192 байта).

 

Алгоритм JPEG. Включает следующие этапы:

1. Осуществляется переход от RGB - представление к так называемому кодированию YUV. Здесь Y – яркостная составляющая (Y=R+G+B), а U и V – цветовые (V=R, V=G). Оба способа взаимообратимы, но YUV–представление позволяет выделить яркостную составляющую, к которой нужно относиться более бережно, чем к цветовым

  1. Выделяются блоки 8х8 пикселей. При этом каждой из составляющих YUV отвечает матрица коэффициентов Pij. (Например, в матрице U значение Pij=0 означает, что у данной точки отсутствует красная цветовая составляющая, а Pij=255 значит, что она будет максимально яркой).
  2. Выполняется так называемое «прореживание». Четверки блоков изображения 8х8 объединяются в «макроблоки» 16х16, а затем для цветовых составляющих U и V из соответствующих матриц исключаются все четные строки и столбцы. При этом матрица яркостной составляющей Y остается нетронутой (рис.8.). В итоге количество коэффициентов сокращается вдвое (вместе 4х3=12 блоков остается 6).

 

Рис.8 «Прореживание» в алгоритме JPEG

 

  1. Для всех оставшихся блоков изображения выполняется так называемоедискретное косинус-преобразование (ДКП). При этом матрицы NxN (N=8) коэффициентов Р преобразуются в матрицы D в соответствии со следующей процедурой:

 

 

Смысл этого преобразования заключается в том, что коэффициенты dij отражают «амплитуду колебаний» яркости пикселей. Например, если все пиксели блока имеют одинаковую яркость, то максимальными будет коэффициент d11, а остальные dij = 0. Чем больше деталей в изображении, тем большими будут значения “удаленных” коэффициентов

 

Как правило, значения коэффициентов в направлении “обхода” (рис.9) быстро уменьшаются, и это дает возможность эффективно сжимать информацию, представлению в таком виде

Рис. 9 Направление обхода коэффициентов матрицы D, полученной в результате ДКП

 

5. Ключевой этап алгоритма – “огрубление” коэффициентов (рис.10)

Если все коэффициенты “отмасштабировать”, поделив, скажем, на 8, то длина кода для каждого из них сократится на 3 бита из 8. Но поскольку “удаленные” коэффициенты (правая нижняя часть матрицы) обычно малы, они просто обнуляются в результате масштабирования (рис.4.6). Нужно сказать, что именно на этом этапе информация о деталях изображения необратимо теряется.

 

Огрубление коэффициентов dij/8

Рис. 10 Огрубление коэффициентов матрицы D

Регулируя величину делителя, можно задавать соотношение – «степень сжатия – качество восстановленного изображения».

6. Последний этап – кодирование оставшихся коэффициентов. Он включает несколько шагов:

- коэффициенты записываются в цепочку в порядке “обхода” (в примере цепочка имеет вид 16 8 6 1 3 4 0 0 0 1…;

- последовательности нулей в цепочке кодируются методом повторов;

- длины “нулевых” серий кодируются по Хаффману.

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

 


Дата добавления: 2015-07-10; просмотров: 92 | Нарушение авторских прав






mybiblioteka.su - 2015-2024 год. (0.011 сек.)