- •Министерство образования и науки российской федерации федеральное агентство по образованию
- •Захарова ю.Ф. Дискретная математика и ее приложения
- •Введение
- •Глава 1. Введение в теорию множеств.
- •1.1. Основные определения.
- •1.2. Задание множеств
- •1.3. Операции над множествами
- •1.4. Разбиения и покрытия
- •1.5. Представление множеств в эвм.
- •1.5.1. Включение множеств.
- •1.5.2. Объединение множеств.
- •1.5.3. Пересечение множеств.
- •Глава 2. Булева алгебра.
- •2.1. Основные элементарные функции.
- •2.2. Основные элементарные тождества.
- •2.3. Формы представления булевых функций.
- •2.4. Минимизация булевых функций.
- •2.4.1. Метод Куайна.
- •2.4.2. Метод Карно.
- •Глава 3. Исчисление высказываний и исчисление предикатов.
- •3.1. Исчисление высказываний.
- •3.2. Исчисление предикатов.
- •Глава 4. Теория сжатия текстовой информации.
- •4.1. Метод Хаффмена
- •4.1.1. Общие положения
- •4.1.2. Краткое описание метода Хаффмена.
- •4.1.3. Пример использования метода Хаффмена.
- •4.2. Метод Зива Лемпеля (lz-метод)
- •4.2.1. Основные определения
- •4.2.2. Краткое описание lz-метода
- •4.2.3. Пример lz-метода
- •4.3. Метод Зива-Лемпеля-Велча (lzw-метод)
- •4.3.1. Общие положения
- •4.3.2. Краткое описание lzw-метода
- •4.3.3. Пример lzw-метода.
- •4.4. Метод Барроуза-Уиллера.
- •4.4.1. Общие положения.
- •4.4.2. 1 Этап. Преобразование Барроуза-Уилера.
- •4.4.3. 2 Этап. Mtf–метод.
- •4.4.4. 3 Этап. Статистический кодер.
- •4.4.5. Модификации различных этапов.
- •4.4.6. Сравнение алгоритмов сжатия на базе bwt с другими методами.
- •Глава 5. Теория сжатия графической информации. Введение.
- •5.2. Волновой метод (wavelet-метод)
- •5.2.1. Описание метода
- •5.2.2. Пример волнового метода
- •5.3. Дискретное косинус-преобразование (дкп-метод).
- •5.3.1. Описание метода.
- •5.3.2. Пример дкп-метода.
- •5.4. Классический алгоритм jpg.
- •5.5. Фрактальный алгоритм.
- •Глава 6. Введение в криптографию. Введение.
- •6.1. Методы перестановки
- •6.1.1. Матрицы
- •6.1.2. Маршруты Гамильтона
- •6.1.3. Электрический монтаж
- •6.1.4. Особенности перестановки
- •6.2. Методы подстановки
- •6.2.1. Вектор замен
- •6.2.2. Таблицы Вижинера
- •6.3. Метод замены. Использование алгебры матриц.
- •6.4. Аддитивные методы
- •6.5. Стеганология
- •6.6. Ключ. Основные понятия, связанные с ключом и алгоритмом.
- •6.6.1. Основные понятия.
- •6.6.2. Ключ.
- •6.6.3. Случайные и псевдослучайные числа.
- •6.6.4. Действия по шифрованию информации.
- •6.7. Блочные и поточные шифры.
- •6.8. Алгоритмы des, Triple des и их заменяющие.
- •6.8.2. Алгоритм Triple des
- •6.8.3. Коммерческие алгоритмы, заменившие des
- •6.9. Системы с открытым ключом.
- •6.10. Электронная подпись.
- •6.11. Взлом защищенных файлов.
- •6.11.1. Атака на ключ
- •6.11.2. Атака на алгоритм.
- •6.11.3. Скомпрометированный пароль.
- •6.11.4. Подделка открытых ключей.
- •6.11.5. Не до конца удаленные файлы.
- •6.11.6. Вирусы и закладки.
- •6.11.7. Виртуальная память.
- •6.11.8. Нарушение режима физической безопасности. Радиоатака. Фальшивые даты подписи.
- •6.11.10. Утечка информации в многопользовательской среде.
- •Содержание
- •Глава 6. Введение в криптографию. 1
5.2.2. Пример волнового метода
Волновой метод рассмотрим на примере рисунка “Дракон”, заданного кодами цветов:
Т
огда
после первой и второй итерации рисунок
будет выглядеть, соответственно,
следующим образом:
5.3. Дискретное косинус-преобразование (дкп-метод).
5.3.1. Описание метода.
Будем рассматривать
изображение как целочисленную функцию
2-ух переменных
,
где
значение цвета, либо его номер в палитре,
либо, например, интенсивность – это
зависит от цветовой модели представления
изображения.
Эту функцию можно
разложить в ряд:
.
Рассмотрим
разложение в ряд Фурье. Здесь:
,
соответственно
получим разложение:
.
Т.к.
,
при
можно ограничиться конечными
и
.
Поскольку это есть разложение в ряд по
косинусам и синусам, то так можно судить
о периодичности изображения как функции.
Для сжатия изображений практически не
используется.
Более применимым и широко используемым является дискретное косинусное преобразование (ДКП) (DCT - Discrete Cosine Transform)
Пусть наше
изображение квадратное, т.е. размера
.
Рассмотрим прямое преобразование (Forward):
,
где
,
Существует и обратное преобразование (inverse):
,где
,
В чём же смысл, если коэффициентов столько же?
Рассмотрим некоторые:
- фактически
среднее арифметическое изображения;
- появляется первый
косинус (см. рис. 13).
Рисунок 13. График при i=1, j=0.
(см. рис. 14)
Рисунок 14. График при i=2, j=0.
Можно сделать вывод, что ДКП раскладывает изображение по амплитудам некоторых частот. Таким образом, получится матрица, где будет много коэффициентов близких к нулю.
5.3.2. Пример дкп-метода.
Дискретное косинус-преобразование рассмотрим на примере растрового рисунка “Гриб”:
Расчетные формулы прямого косинус-преобразования имеют следующий вид:
П
роцесс
квантования даст следующую матрицу:
Выполняя обратное косинус-преобразование
и
сравнивая исходный и полученный рисунки,
получаем:
5.4. Классический алгоритм jpg.
Будем рассматривать
изображение как целочисленную функцию
двух переменных
,
где
- значение цвета, либо его номер в палитре,
либо, например, интенсивность - это
зависит от цветовой модели представления
изображения,
- координаты данной точки.
Шаг 1. Воспользуемся принципом, заложенным в основу алгоритма JPEG (JPEG – Joint Photographic Expert Group - подразделение в рамках ISO - Международной организации по стандартизации; алгоритм разработан группой экспертов в области фотографии специально для сжатия 24-битных изображений). В частности, переведем изображение из цветового пространства RGB, с компонентами, отвечающими за красную (Red), зеленую (Green) и синюю (Blue) составляющие цвета точки, в цветовое пространство YCrCb (иногда называют YUV).
Здесь Y - яркостная составляющая, а Cr, Cb - компоненты, отвечающие за цвет (хроматический красный и хроматический синий). За счет того, что человеческий глаз менее чувствителен к цвету, чем к яркости, появляется возможность архивировать массивы для Cr и Cb компонент с большими потерями и, соответственно, большими коэффициентами сжатия. Подобное преобразование уже давно используется в телевидении. На сигналы, отвечающие за цвет, там выделяется более узкая полоса частот.
Упрощенные схемы прямого и обратного преобразований выглядят следующим образом:
где - матрица перехода.
Шаг 2. Изображение разбивается на матрицы 8х8. Формируем из каждой три рабочие матрицы дискретного косинус-преобразования (ДКП) - по 8 бит отдельно для каждой компоненты. При больших коэффициентах сжатия этот шаг может выполняться чуть сложнее.
В алгоритме JPEG изображение делится по компоненте Y - как и в первом случае, а для компонент Cr и Cb матрицы набираются через строчку и через столбец так, как это показано на риc 11. Т.е. из исходной матрицы размером 16x16 получается только одна рабочая матрица ДКП. При этом теряется 3/4 полезной информации о цветовых составляющих изображения, но осуществляется сжатие сразу в два раза. Мы можем поступать так благодаря работе в пространстве YCrCb. На результирующем RGB изображении при сравнительно небольших коэффициентах сжатия, как показала практика, это сказывается несильно.
Рис. 15. Стандартный алгоритм JPG.
Некоторым недостатком данного этапа является то, что информация о пропущенных "квадратах" является навсегда утеряной. Однако, в предположении, что - всего лишь функция, зависящая от двух переменных, в данном алгоритме могут быть использованы элементы теории приближения и данная функция может быть восстановлена с достаточной степенью точности даже при больших коэффициентах сжатия.
Шаг 3. Применяем ДКП к каждой рабочей матрице. При этом мы получаем матрицу, в которой коэффициенты в левом верхнем углу соответствуют низкочастотной составляющей изображения, а в правом нижнем — высокочастотной.
В упрощенном виде это преобразование можно представить так:
,
где
,
Шаг 4. Производим квантование. В принципе, это просто деление рабочей матрицы на матрицу квантования поэлементно. Для каждой компоненты (Y, U и V), в общем случае, задается своя матрица квантования q[u,v] (далее МК).
На этом шаге осуществляется управление степенью сжатия, и происходят самые большие потери. Понятно, что, задавая МК с большими коэффициентами, мы получим больше нулей и, следовательно, большую степень сжатия.
В стандарт JPEG включены рекомендованные МК, построенные опытным путем. Матрицы для большего или меньшего коэффициентов сжатия получают путем умножения исходной матрицы на некоторое число gamma.
С квантованием связаны и специфические эффекты алгоритма. При больших значениях коэффициента gamma потери в низких частотах могут быть настолько велики, что изображение распадется на квадраты 8х8. Потери в высоких частотах могут проявиться в так называемом “эффекте Гиббса”, когда вокруг контуров с резким переходом цвета образуется своеобразный “нимб”.
Шаг 5. Переводим матрицу 8x8 в 64-элементный вектор при помощи “зигзаг”-сканирования, т.е. берем элементы с индексами (0,0), (0,1), (1,0), (2,0)...
Таким образом, в начале вектора мы получаем коэффициенты матрицы, соответствующие низким частотам, а в конце — высоким.
Шаг 6. Свертываем вектор с помощью алгоритма группового кодирования. При этом получаем пары типа (пропустить, число), где “пропустить” является счетчиком пропускаемых нулей, а “число” — значение, которое необходимо поставить в следующую ячейку. Так, вектор 42 3 0 0 0 -2 0 0 0 0 1 ... будет свернут в пары (0,42) (0,3) (3,-2) (4,1) ... .
Шаг 7. Свертываем получившиеся пары кодированием по Хаффману с фиксированной таблицей.
Процесс восстановления изображения полностью симметричен на всех шагах алгоритма до предпоследнего.
Существенными положительными сторонами алгоритма является то, что:
Задается степень сжатия.
Выходное цветное изображение может иметь 24 бита на точку.
Отрицательными сторонами стандартного алгоритма JPEG является то, что:
1) При повышении степени сжатия изображение распадается на отдельные квадраты (8x8). Это связано с тем, что происходят большие потери в низких частотах при квантовании, и восстановить исходные данные становится невозможно.
2) Проявляется эффект Гиббса - ореолы по границам резких переходов цветов.
Не очень приятным свойством JPEG является также то, что нередко горизонтальные и вертикальные полосы на дисплее абсолютно не видны и могут проявиться только при печати в виде муарового узора. Он возникает при наложении наклонного растра печати на горизонтальные и вертикальные полосы изображения. Из-за этих сюрпризов JPEG не рекомендуется активно использовать в полиграфии, задавая высокие коэффициенты. Однако при архивации изображений, предназначенных для просмотра человеком, он на данный момент незаменим.
