- •Лабораторная работа №2
- •"Защита программ и данных от hcд".
- •Например, рисунок буквы т может быть закодирован следующим образом:
- •Понятно, что число кодируемых направлений можно увеличить. В этом случае данный подход может быть приемлем и для более сложных изображений.
- •8) Фрактальное сжатие изображений.
- •9) Разбиение исходyого множества символов на несколько алфавитов.
- •10) Смысловая архивация.
- •11) Поиск закономерностей.
- •12) Выбор алгоритма архивации.
8) Фрактальное сжатие изображений.
Фракталы - масштабируемые картинки, которые можно описать небольшим конечным набором инструкций [1].
Алгоритм сжатия.
1) Разбить полностью все изображение на пересекающиеся области (домены);
2) Разбить изображения на ранговые области размерам побольше. Ранговые области могут перекрываться и не обязательно должны охватывать все изображение;
3) Для каждого домена подобрать ранговую область, которая после аффинного преобразования наиболее точно аппроксимирует домен.
4) Сжать и сохранить параметры аффинного преобразования в файле С. Результат содержит: заголовок с информацией о расположении доменов и ранговых областей и таблицу аффинных коэффициентов для каждого домена.
Алгоритм восстановления.
Создадим два случайных изображения А и Б;
Преобразуем данные из области А в область Б. Разобьем изображение Б на домены, согласно заголовку файла С. Для каждого домена области Б проведем аффинное преобразование ранговых областей изображения А, описанное в файле С. В результате получим совершенно новое изображение.
Преобразуем данные из области Б в область А аналогично п. 2.
Повторяем процедуры 2) и 3) до тех пор, пока изображения А и Б не будут одинаковы.
Аффинное преобразование.
f( x) = ах+bу+е
f( y) = cx+dy+f
а, b, с, d – аффинные коэффициенты вращения, деформации" расширения/сжатия, е,f – коэффициенты перемещения.
Путем простого изменения аффинных коэффициентов любой объект заданный набором координат х, у можно вращать, деформировать, расширять/сжимать, перемещать.
Пример:
Исходные координаты: Х=(х1,х2 ,... хл ), Y= (у1, у2 ,... ул )
Новые координаты:
Х1 = a*X + b*Y + е
Y1 = c*X + d*Y + f
Решая эти системы уравнении, можно найти аффинные коэффициенты а, b, с, d, е, f.
9) Разбиение исходyого множества символов на несколько алфавитов.
Данный подход основан на уменьшении размера кода символа за счет разбиения всего множества символов на несколько алфавитов и введение служебного символа (первый вариант) или служебных символов (второй вариант) для переключения алфавитов.
Первый вариант.
все различные символы текста разбиваются на L алфавитов.
2) один из кодов каждого алфавита является служебным (всегда один и тот же код);
3) при переходе из одного алфавита к другому в текст включается служебный код. Число повторов служебного кода однозначно определяет номер алфавита.
V = SUM ( b * p ) + y
b - размер в битах кода символа;
p – число различных символов ;
y - число служебных символов для переключения алфавитов.
Для первого варианта у можно оценить по следующей формуле:
i = L + 1
у (минимальный) = SUM (i – 1) * b
i = 1
у (максимальный) = n * L/2.
Второй вариант.
все различные символы текста разбиваются на L алфавитов;
2) в каждом алфавите выделяется L одних и тех же служебных кодов;
3) при переходе от одного алфавита к другому в тексте включается служебный код соответствующий требуемому алфавиту.
Для второго варианта у можно оценить по следующей формуле:
у (минимальный) = (L -1) * b
у (максимальный) = n * b (L>1)
Характерным примером подобного способа кодирования является международный телеграфный код МТК-2 (Приложение к главе 1).
