
Компьютерное моделирование процессов и систем / Ухо_Глаз / Фрактальное_сжатие / Алгоритм фрактального сжатия
.doc
Фрактальное сжатие изображений — это алгоритм сжатия изображений с потерями основанный на применении систем итерируемых функций (Iteration Function System), являющимися аффинными преобразованиями к изображениям. Данный алгоритм известен тем, что в некоторых случаях позволяет получить очень высокие коэффициенты сжатия (лучшие примеры — до 10000 раз при приемлемом визуальном качестве) для реальных фотографий природных объектов, что недоступно для других алгоритмов сжатия изображений в принципе.
Сущность фрактального сжатия
Основа метода фрактального кодирования — это обнаружение самоподобных участков в изображении. Впервые возможность применения теории систем итерируемых функций ( Iterated Function System, сокр. IFS) к проблеме сжатия изображения была исследована Майклом Барнсли и Аланом Слоуном . Они запатентовали свою идею в 1990 и 1991 гг . Джеквин представил метод фрактального кодирования, в котором используются системы доменных и ранговых блоков изображения, блоков квадратной формы, покрывающих все изображение. Этот подход стал основой для большинства методов фрактального кодирования, применяемых сегодня. Он был усовершенствован Ювалом Фишером и рядом других исследователей.
В соответствии с данным методом изображение разбивается на множество неперекрывающихся ранговых подизображений и определяется множество перекрывающихся доменных подизображений . Для каждого рангового блока алгоритм кодирования находит наиболее подходящий доменный блок и аффинное преобразование, которое переводит этот доменный блок в данный ранговый блок. Структура изображения отображается в систему ранговых блоков, доменных блоков и преобразований.
Идея заключается в следующем: предположим что исходное изображение является неподвижной точкой некоего сжимающего отображения. Тогда можно вместо самого изображения запомнить каким-либо образом это отображение, а для восстановления достаточно многократно применить это отображение к любому стартовому изображению.
По теореме Банаха, такие итерации всегда приводят к неподвижной точке, то есть к исходному изображению. На практике вся трудность заключается в отыскании по изображению наиболее подходящего сжимающего отображения и в компактном его хранении. Как правило, алгоритмы поиска отображения (то есть алгоритмы сжатия) в значительной степени переборные и требуют больших вычислительных затрат. В то же время, алгоритмы восстановления достаточно эффективны и быстры.
Вкратце метод, предложенный Барнсли, можно описать следующим образом. Изображение кодируется несколькими простыми преобразованиями (в нашем случае аффинными), то есть определяется коэффициентами этих преобразований (в нашем случае A, B, C, D, E, F).
Слово фрактал введено в 1975 году Бенуа Мандельбротом. Оно произведено от латинского fractus, от которого происходят английские термины fraction, fractional - дробь, дробный. С математической точки зрения фрактал - это, прежде всего множество с дробной размерностью. Мы хорошо представляем себе, что точка имеет размерность 0, отрезок и окружность - размерность 1, круг и сфера - размерность 2. С одномерными объектами мы связываем понятие длины, с двумерными - площади и так далее. Но как можно представить себе множество с размерностью 3/2? По-видимому, для этого требуется нечто промежуточное между длиной и площадью, и если длину условно назвать 1-мерой, а площадь - 2-мерой, то требуется (3/2)-мера.[7] В 1919 году Ф. Хаусдорф действительно определил такую a-меру и на этой
основе каждому множеству в евклидовом пространстве сопоставил число, названное им метрической размерностью. Он же привел первые примеры множеств с дробной размерностью. Оказалось, что дробную размерность имеют канторово множество, кривая Кох и другие экзотические объекты, до недавнего времени малоизвестные за пределами математики.[7] Бенуа Мандельброт в своих книгах привел яркие примеры применения фракталов к объяснению некоторых природных явлений. Мандельброт уделил большое внимание интересному свойству, которым обладают многие фракталы. Дело в том, что часто фрактал можно разбить на сколь угодно малые части так, что каждая часть окажется просто уменьшенной копией целого. Иначе говоря, если мы будем смотреть на фрактал в микроскоп, то с удивлением увидим ту же самую картину, что и без микроскопа. Это свойство самоподобия резко отличает фракталы от объектов классической геометрии. Необходимо отметить, что свойство самоподобия характерно только для регулярных фракталов.Многие регулярные фракталы строятся путем бесконечного повторения нескольких простых операций - заменой одного элемента некоторой комбинацией других, ему подобных. Затем эта же операция повторяется с каждым из этих элементов, и так далее до бесконечности. На методе простой замены основан первый алгоритм построения фракталов. Возникает вопрос, нельзя ли эту "процедуру замены" перевести на язык математических формул. Таким образом, в середине 80-х годов появился метод Систем Итерируемых Функций - СИФ (Iterated Function System - IFS) как простое средство получения фрактальных структур. Таким образом, некоторые из вышеперечисленных фракталов можно получить с помощью метода СИФ. Метод Систем Итерируемых функций является основой для второго алгоритма построения фрактальных структур. Вместо детерминированного способа построения регулярных фракталов в алгоритм создания фрактальных структур был включен некоторый элемент случайности, что приводит к построению случайных фракталов. Многие фракталы могут быть получены с помощью этих двух алгоритмов. Тогда в первом случае они построены как регулярные фракталы, а во втором как случайные. Одним из наиболее ярких примеров среди различных систем итерируемых функций является открытая М. Брансли система из четырех сжимающих аффинных преобразований, аттрактором для которой является множество точек, поразительно напоминающее по форме изображение листа папоротника. Третьим алгоритмом создания фрактальных объектов на плоскости является использование комплексных отображений, сопоставляющих одному комплексному числу другое комплексное число по некоторому итерационному правилу. Примером фрактала полученного с помощью комплексных отображений является множество Жюлиа.
Пусть
d - обычная Евклидова размерность
пространства, в котором находится
фрактальный объект (d = 1 - линия, d = 2 -
плоскость, d = 3 - обычное трехмерное
пространство). Покроем теперь этот
объект целиком d-мерными "шарами"
(куб, квадрат или просто отрезок прямой)
радиуса l. Предположим, что нам потребовалось
для этого не менее чем N(l) шаров. Тогда,
если при достаточно малых l величина
N(l) меняется с l по степенному закону
N(l)~1/lD,
то D - называется хаусдорфовой или
фрактальной размерностью этого объекта.
Эту формулу можно переписать в виде
Это
и служит общим определением фрактальной
размерности D. В соответствии с ним D
является локальной характеристикой
данного объекта.[2,стр.15]
В евклидовом пространстве R2 расстояние d1(x,y) между точками x=(x1,x2) и
В
евклидовом пространстве R2
расстояние d1(x,y)
между точками x=(x1,x2)
и y=(y1,y2)
определяется с помощью следующей формулы
Расстояние
в пространстве R2
можно также измерять функцией
d2(x,y)=|x1-y1|+|x2-y2|.
Две приведенные функции, являясь мерами
расстояния, по-разному определяют
расстояния между двумя точками. Ниже
приведены четыре неотъемлемых свойства
функции расстояния:
-
Расстояния от точки x до y и от точки y до x равны: d(x,y)=d(y,x)
-
Расстояние от точки x до этой же точки x равно нулю: d(x,x)=0
-
Расстояние по прямой - это кратчайшее расстояние между двумя точками: d(x,y)<=d(x,z)+d(z,y)
-
Для двух точек x и y функция расстояния должна быть вещественной, конечной и положительной:
Метрика
- функция расстояния, удовлетворяющая
вышеперечисленным свойствам.
Метрическое
пространство
(X,d) - множество точек X вместе с метрикой
d, определенной на X.
Преобразование
- сопоставление, согласно заранее
определенному правилу, точке в одном
пространстве точки в другом (возможно
и в том же самом пространстве).
Отображение
- обозначается, fn:
X->X, это преобразование которое переводит
пространство X1
в пространство X2.
Сжимающее
отображение
- преобразование R2
в метрическом пространстве f: X->X при
условии существования коэффициента
сжатия преобразования f: 0<=s<1 такого,
что d(f(x1),f(x2))<=s*d(x1,x2)
для всех
.
Система
итерируемых функций
(Iterated Function System) состоит из полного
метрического пространства (X,d) и конечного
множества сжимающих отображений
fn:
X->X с коэффициентами сжатия Sn.
[5, стр.36-37]
Прежде
чем раскрывать смысл понятия - сжимающие
аффинные преобразования, рассмотрим
линейное преобразование
на
комплексной плоскости Z, которое переводит
равносторонний треугольник с длиной
стороны равной единице в равносторонний
треугольник в два раза меньшего размера
представленный на рис.2.1
Рисунок
2.1 - Преобразование f
Рассмотренное
выше линейное преобразование на
комплексной плоскости является частным
случаем аффинного преобразования
плоскости
xn+1=a*xn+b*yn+e
yn+1=c*xn+d*yn+f
Его можно представить в матричном
виде
Так,
например, рассмотренное преобразование
можно записать в виде
Прежде чем раскрывать смысл понятия -
сжимающие аффинные преобразования,
рассмотрим линейное преобразование
на
комплексной плоскости Z, которое переводит
равносторонний треугольник с длиной
стороны равной единице в равносторонний
треугольник в два раза меньшего размера
представленный на рис.2.1
Рисунок
2.1 - Преобразование f
Рассмотренное
выше линейное преобразование на
комплексной плоскости является частным
случаем аффинного преобразования
плоскости
xn+1=a*xn+b*yn+e
yn+1=c*xn+d*yn+f
Его можно представить в матричном
виде
Так,
например, рассмотренное преобразование
можно записать в виде
В
общем случае аффинное преобразование
на плоскости задается шестью независимыми
действительными числами. Два числа e и
f описывают обычную трансляцию, а четыре
числа a, b, c, d задают произвольное линейное
преобразование при неизменном положении
начала координат (0,0).
Для наглядности
вышесказанного на рис.2.2 представлено
действие аффинного преобразования на
единичный квадрат ABCD при e = f = 0.
Рисунок
2.2 - Анимированный рисунок:
действие аффинного преобразования на
единичный квадрат ABCD при e = f = 0.
Если
при аффинном преобразовании не меняется
направление обхода произвольного
контура, то его, согласно рис.2.2, можно
представить себе как произведение 3-х
преобразований:
-
первое переводит единичный квадрат в произвольный прямоугольник со сторонами r1 и r2. Это соответствует простому масштабированию двух координатных осей
-
второе преобразование описывает превращение прямоугольника в параллелограмм со сторонами r1,
и углом
между ними
-
третье преобразование есть простой поворот полученного параллелограмма на угол
вокруг начала координат [2, стр.49-50]
Фрактал
салфетка Серпинского может быть построен
как с помощью метода простой замены,
который применяют для построения
регулярных фракталов, так и с помощью
метода IFS.
Рассмотрим
алгоритм построения, основанный на
методе простой замены. Правильный
треугольник делим средними линиями на
четыре равных треугольника и внутренность
центрального выбрасываем. С тремя
оставшимися треугольниками делаем то
же самое и так бесконечное число раз.
После определенного числа выбрасываний
остается множество S, представленное
на рис.3.1, которое представляет собой
салфетку Серпинского.
Рисунок
3.1 - Салфетка Серпинского
Фрактальная
размерность салфетки Серпинского
подсчитывается по формуле
D=ln3/ln2=1,5849
Салфетка имеет нулевую площадь, так
как нетрудно проверить, что в процессе
ее