Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Derevo_PZOZ_Lab / обр_изо_№6.doc
Скачиваний:
17
Добавлен:
23.03.2015
Размер:
310.78 Кб
Скачать

5) Зигзагообразная перестановка 64 dct коэффициентов

Так, после того, как мы выполнили DCT-преобразование над блоком величин 8х8, у нас есть новый блок 8х8. Затем, этот блок 8х8 просматривается по зигзагу подобно этому: (Числа в блоке 8х8 указывают порядок, в котором мы просматриваем 2-мерную матрицу 8х8)

О, 1, 5, 6,14,15,27,28,

2. 4, 7,13,16,26,29,42,

3,8,12,17,25,30,41,43,

9,11/18,24,31,40,44,53,

10,19,23,32,39,45,52,54,

20,22,33,38,46,51,55,60,

21,34,37,47,50,56,59,61,

35,36,48,49,57,58, 62,63

Как видите, сначала - верхний левый угод (0,0), затем величина в (0,1), затем (1,0), затем (2,0), (1,1), (0,2), (0,3), (1,2), (2,1), (3,0) и т.п.

После того, как пройдена по зигзагу матрица 8х8, имеем вектор с 64 коэффициентами (0...63) Смысл этого зигзагообразного вектора - в том, что производится просмотр коэффициентов 8х8 DCT в порядке повышения пространственных частот. Так, получается вектор отсортированный по критерию пространственной частоты: первая величина на векторе (индекс 0) соответствует самой низкой частоте в изображении - она обозначается DC. С увеличением индекса на векторе, получаются величины соответствующие высоким частотам (величина с индексом 63 соответствует амплитуде самой высокой частоте в блоке 8х8). Остальная часть коэффициентов DCT обозначается АС.

6) Квантование

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

для (i = 0; i<=63; i++) вектор[i] = (округлить) (вектор[i] / таблица_квантования[i] + 0.5).

Вот пример таблицы квантования для яркости (Y) данной в приложении JPEG стандарта. (Дается в форме блока 8х8; полученного из 64 векторных величин, зигзагообразным преобразованием)

  1. 11 10 16 24 40 51 61

12 12 14 19 26 58 60 55

14 13 16 24 40 57 69 56

  1. 17 22 29 51 87 80 62

18 22 37 56 68 109 103 77

  1. 35 55 64 81 104 113 92

  1. 64 78 87 103 121 120 101

  2. 72 92 95 98 112 100 103 99

Эта таблица опирается на "психовизуальный порог". Большинство существующих шифраторов просто копируют этот пример, но величины не оптимизируются (шифратор может использовать любую другую таблицу квантования) таблица определяется в JPEG файле с DQT (Определение Таблицы Квантования) маркером. Обычно присутствует одна таблица для Y, и другие для оттенка (СЬ и Cr).

Процесс квантования играет ключевую роль в JPEG сжатии. Это - процесс, который удаляет высокие частоты, представленные в исходном изображении - впоследствии высокую детализацию.. Это сделано посредством деления величин в высоких индексах на векторе (амплитуды высоких частот) на большие величины, чем величины, на которыми разделены амплитуды более низких частот. Больше величины в таблице квантования - больше потери (впоследствии визуальные потери) введенные этим процессом, и меньше - лучше визуальное качество.

Другой важный факт - в большинстве изображений цвет изменяется медленно от одного пикселя к другому так что большинство образов будут иметь небольшое количество высокой детализации -> небольшая сумма (небольшие амплитуды) высоких пространственных частот - но у них есть много информации об изображении, содержащейся на низких пространственных частотах.

Впоследствии на новом квантованном векторе, на высоких пространственных частотах, будет много последовательных нулей.

На этом этапе посчитаем матрицу квантования, используя этот псевдо код:

for i:=0 to 8 do for j:=0 to 8 do Q[i,j] = 1+((l+i+j)*q);

где q - это коэффициент качества, от него зависит степень потери качества сжатого изображения для q = 2 имеем матрицу квантования:

3 5 7 9 11 13 15 171

5 7 9 11 13 15 17 191

7 9 11 13 15 17 19 21)

Q = 9 11 13 15 17 19 21 23

11 13 15 17 19 21 23 251

13 15 17 19 21 23 25 27

  1. 17 19 21 23 25 27 29

  2. 17 19 21 23 25 27 29 31

теперь нужно каждое число в матрице квантования разделить на число в соответствущей позиции в матрице RES, в результате получим А =

:

30

0

0

0

0

0

0

0

-7

8

1

1

0

0

0

0

-11

6

0

1

0

0

0

0

-5

-3

0

0

0

0

0

0

-7

-3

2

0

0

0

0

0

^4

4

0

0

0

0

0

0

-1

0

1

0

0

0

0

0

-3

1

0

0

0

0

0

0


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

1 2 б 7 15 16 28 29

3 5 8 14 17 1 27 1 30 43

4 9 13 18 26 31 42 44

  1. 12 19 25 32 41 45 54

11 20 24 33 40 46 53 55

  1. 23 34 39 47 52 56 61

  2. 35 38 48 51 j57 60 62

36 i 37 49 50 58 59 63 64 .

итак получилась последовательность:

30 0 -7 -11 8 0 0 1 6 -5 -7 -3 0 1 0 0 0 1 0 -3 -4 -1 4 2 0 0 0 0 0 0 0 0 0 0 0 -3 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Соседние файлы в папке Derevo_PZOZ_Lab