Фрактальное сжатие изображений c#. Основы фрактального сжатия изображений. Изображения в градациях серого

Ключевые слова: нейронные сети; сжатие изображений; машинное обучение; фракталы.

Аннотация

В данной работе представлен метод сокращения времени кодирования для фрактального сжатия изображений. Данный подход сочетает выделение характеристик вместе с классификацией доменов, используя самоорганизующуюся нейронную сеть. Выделение особенностей сокращает объем задачи и позволяет нейронной сети обучаться на изображении, отличном от кодируемого. Самоорганизующаяся нейронная сеть для классификации вводит понятие кластерной топологии, а также устраняет необходимость априорного задания множества подходящих классов изображения. Сеть организует сама себя в соответствии с распределением характеристик изображения, получаемым в процессе обучения. В работе представлены результаты, которые показывают, что классификационный подход может сократить время кодирования на два порядка, сохраняя при этом сравнительную точность и эффективность сжатия.

1. Введение

Фрактальное кодирование изображений представляет собой подающий надежды подход в приложениях сжатия изображений, таких как веб-сайты Интернет . Однако, потребность во времени для этапа кодирования в этом подходе было сдерживающим препятствием его принятию как практического метода. Процесс кодирования заключается в отображении доменных блоков в ранговые блоки изображения. Для каждого рангового блока алгоритм ищет такой доменный блок и соответствующее преобразование, которые обеспечат наилучшее соответствие ранговому блоку. Классификация доменных блоков может значительно ускорить выполнение кодирования, сокращая количество доменов, среди которых нужно проводить поиск . Использование самоорганизующихся нейронных сетей с целью классификации доменов уже было исследовано . Эти сети дают улучшение, по сравнению с базовыми подходами к классификации, благодаря определению топологии кластеров классов. Вклад данной работы состоит в комбинировании классификации доменов с помощью самоорганизующейся нейронной сети вместе с выделением характеристик с целью обеспечения еще более быстрого кодирования изображений. Небольшой набор характеристик изображения, измеряющих тоновые и текстурные качества, вычисляются для каждого доменного и рангового блока. Таким образом, каждый блок имеет ассоциированный с ним вектор характеристик, размер которого не зависит от размера блока. Выделение характеристик является выгодным по двум причинам. Во-первых, получаемое в результате снижение объема задачи сокращает количество вычислений, необходимых в процессе поиска доменов. Во-вторых, так как характеристики независимы от структуры конкретных доменов, то становится возможным обучать самоорганизующуюся сеть на одном изображении и применять полученную в результате сеть для классификации на других изображениях. Таким образом, время обучения сети не является частью общего времени кодирования. Измерения времени фрактального кодирования изображений обычно выражают в терминах времени выполнения на рабочей станции Sun или Silicon Graphics. Представленный здесь подход обеспечивает сопоставимые измерения при выполнении на ПК Pentium 120 MHz.

2. Фрактальное кодирование изображений

Фрактально кодирование изображений основано на теории систем итерируемых функций (далее сокращенно СИФ, от англ. Iterated Function System - IFS). Теория СИФ имеет в своей основе теорему о сжимающих отображениях (далее сокращенно ТОС, от англ. Contraction Mapping Theorem - CMT) из классического анализа, которая используется для построения фрактальных изображений итеративным образом. Фрактальное изображение является фиксированной точкой в пространстве изображения, что гарантируется ТОС, и это изображение называется аттрактором СИФ. Обратная задача, решаемая фрактальным кодированием изображений, начинается с рассмотрения заданного изображения и вычисления СИФ, представляющей изображение, близкое к заданному, - его аттрактор. Код фрактального изображения обычно (хотя, не всегда) требует меньшего объема для хранения, чем изображение-оригинал, что проявляет этот метод как метод сжатия. Эмпирические результаты показывают, что во многих случаях фрактальный метод настолько же хорош, как и JPEG, который считают стандартом сжатия на сегодня .

Фрактальное сжатие изображений использует специальную разновидность СИФ, называемую системой итерируемых кусочно-определенных функций (далее сокращенно СИКФ, от анг. Partitioned Iterated Function System - PIFS). СИКФ состоит из полного метрического пространства X , набора поддоменов D i ⊂ X, i = 1,...,n , и набора сжимающих преобразований w i ~ : D i → X, i = 1,...,n . Мы рассматриваем изображения в градациях серого как функции действительные значений f(x, y) , определенные на квадратной области I 2 = I×I . Пусть w i ~ (x, y) - аффинное преобразование I 2 → I 2 , такое что

при условии, что w i ~ - обратимо и (x,y) ∈ R i . Константа s i расширяет или сужает диапазон значений функции f и, коль скоро мы говорим об изображениях в градациях серого, то она управляет контрастностью. Аналогично, константа o i увеличивает или уменьшает значения градаций серого, или управляет яркостью. Преобразование w i ~ называется пространственной составляющей преобразования w i .

Базовый алгоритм выполняется следующим образом. Разбиваем изображение на не перекрывающиеся прямоугольные ранговые блоки {R i } . Блоки R i могут быть одинакового размера, но чаще используется некоторая разновидность разбиения с переменным размером блоков, что дает возможность плотно заполнять ранговыми блоками маленького размера части изображения, содержащие мелкие детали. Представленные здесь результаты, были получены с использованием схемы разбиения методом квадро-дерева (quadtree partition scheme), описанной в . Покрываем изображение последовательностью доменных блоков, возможно перекрывающихся. Домены могут быть разных размеров и обычно их количество исчисляется сотнями и тысячами. Аффинное преобразование (2.1) является пространственным сжимающим преобразованием, если |det A i |

(2.3)

была небольшой. Для оцифрованных изображений интеграл (2.3) заменяется суммированием по пикселям. Если после нахождения наилучшего w i величина (2.3) оказывается все еще больше некоторой заранее определенной погрешности, то схема разбиения методом квадро-дерева разбивает ранг на четыре более малых прямоугольника, и процесс поиска оптимального преобразования повторяется для этих меньших блоков. Этот процесс продолжается до тех пор, пока величина (2.3) не станет меньше допустимой погрешности или пока не достигается заранее определенная максимальная глубина квадро-дерева. Изображение декодируется итеративным применением преобразования W к изображению f , где

W(f)(x,y) = w i (f)(x,y) для (x,y) ∈ R i

Если преобразования {w i } были выбраны корректно, то итерирование W 0n (f) будет близко к исходному изображению при некотором достаточном значении n . Этап кодирования требует значительных вычислений из-за большого количества доменов, среди которых нужно осуществлять поиск для каждого рангового блока, а также из-за вычислений, проводимых при каждом сравнении домена с рангом. В этой работе сокращение вычислительных потребностей этапа кодирования решается в двух направлениях. Во-первых, вводится понятие характеристик изображения, определяемых для каждого доменного и рангового блока. Тогда потенциально подходящие домены могут быть выбраны на основе значений небольшого количества этих характеристик, чем значений самих пикселей. Во-вторых, предлагается организация доменных блоков в кластерную топологию посредством самоорганизующейся нейронной сети. Это еще больше сокращает время кодирования, позволяя сети быстро определять месторасположение в пространстве характеристик тех доменных блоков, которые похожи на ранговые блоки.

3. Выделение характеристик

Один из способов ускорить процесс фрактального кодирования изображений - это выделение небольшого количества характеристик, описывающих доменные и ранговые блоки. Тогда сравнение доменных и ранговых блоков проводится на основании этих характеристик, а не по отдельным пикселям, что сокращает объем работы. В данной работе используется шесть характеристик, которые описывают распределение текстуры и контрастности изображения. Выделение характеристик само по себе обеспечивает значительное ускорение процесса кодирования.

Здесь используются следующие шесть характеристик: 1) стандартное отклонение (standard deviation), σ; 2) асимметрия (skewness), которая представляет собой сумму кубов разностей между значениями пикселей и средним значением блока, нормированных кубом σ; 3) межпиксельная контрастность (neighbor contrast), которая измеряет разность между значениями соседних пикселей; 4) бета (beta), которая показывает насколько сильно отличаются значения пикселей от значения в центре блока; 5) горизонтальный градиент (horizontal gradient), который характеризует изменение значений пикселей блока по горизонтали; 6) вертикальный градиент (vertical gradient), который характеризует изменение значений пикселей блока в направлении сверху вниз. Среднее пиксельное значение не используется в качестве характеристики, поскольку контрастность и яркость меняются в процессе сопоставления доменного и рангового блоков. При сравнении расстояний в пространстве характеристик, вектор характеристик нормализуют для того, чтобы набольшие значения характеристик не доминировали при сравнении.

4. Самоорганизующиеся нейронные сети

Следующее улучшение, которое может быть сделано - это классификация доменов и рангов на основе этих характеристик и сравнение рангов только с доменными похожих классов. Используемая здесь схема классификации доменов основана на самоорганизующейся нейронной сети Кохонена . Этот тип сети состоит из решетки (lattice) узловых позиций (node positions). С каждым узлом решетки связан весовой вектор, который имеет ту же размерность, что и размерность векторов характеристик. Размерность используемых здесь векторов характеристик составляет 6. А используемая здесь решетка узлов состоит из 10 строк и 10 столбцов. Каждый узел представляет класс доменных блоков изображения, поэтому общее количество узлов мы стремимся сохранить довольно малым. Можно рассматривать и другие способы организации узлов, такие как матрицы более высокой размерности.

Процесс обучения происходит независимо, без какого-либо контроля со стороны человека. Сеть весовых векторов инициализируется случайными значениями. Затем в сеть поступает входной вектор характеристик, и мы отыскиваем весовой вектор, самый близкий к входному вектору. То есть, мы находим i’j’ , такие что

||v – w i’j’ || ≤ ||v – w ij || для всех i, j

где v - это входной вектор характеристик, а w - весовой вектор в узле ij . Веса, смежные по решетке с выбранным весом w i’j’ адаптируются, чтобы больше походить на входной вектор. Эта адаптация выражается формулой

w ij new = w ij old + ε·exp(α·||v–w ij old || 2)·(v– w ij old)

где ij - это индексы узлов, которые находятся в окрестности узла i’j’ . Размер этой окрестности сокращается с каждой новой итерацией процесса обучения. Параметр ε - это шаг итерации, и α обратно пропорционально этому шагу. Программная реализация представленных результатов приведена в .

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

5. Результаты

В таблице 1 представлены результаты сравнения фрактального сжатия изображений с использованием трех различных методов, применительно к изображениям, показанным на рисунках 1 и 2. «Базовый» («base») метод - это стандартный метод разбиения квадро-деревом, обсуждаемый в , без классификации доменов. Величина «уровень квадро-дерева» («quadtree level») обозначает максимально допустимую глубину квадро-дерева. Здесь большое число обуславливает более малые ранговые блоки, что приводит к лучшему качеству декодируемого изображения, но при этом к худшей компрессии. «Порог ошибки» («error threshold») - это параметр, контролирующий условие разбиения ранговых блоков на более малые блоки следующего более высокого уровня квадро-дерева. Значения ошибок вычисляются путем сравнения исходного растрового изображения с изображением, декодированным с использованием 6 итераций (большее количество итераций дало бы немного меньшие ошибки). «Средняя ошибка, %» («average error») - это средняя ошибка, приходящаяся на один пиксель, в то время как «PSNR» - это пиковое отношение сигнал-шум, вычисляемое как в . Метод «FO» (features-only) на основе только характеристик сравнивает доменные и ранговые блоки по шести характеристикам, рассмотренных в разделе 3. Последний метод («SO») классифицирует домены с использованием самоорганизующейся нейронной сети с выделением характеристик, как было рассмотрено выше. В каждом случае всего было использовано 320 доменных блоков. Большее количество доменов привело бы к увеличению времени кодирования и в какой-то степени лучшим коэффициентам сжатия.

Коэффициенты сжатия оцениваются отношением в среднем 4 байт для каждого рангового блока к 66614 байтам исходного растрового изображения. SO-метод работает приблизительно в два раза быстрее FO-метода и в сто раз быстрее базового метода («время на блок» выражает меру времени выполнения, которая не зависит от конечной точности изображения; приведенные здесь значения времени соответствуют ПК Pentium 120MHz). Самоорганизующаяся сеть была обучена отдельно на изображении, отличном от представленных здесь двух изображений, поэтому время обучения не включено в общее время для этого метода. Степень сжатия и качество декодированного изображения, как при ускоренных методах, так и при базовом методе, соизмеримы.

Таблица 1 — Результаты фрактального сжатия изображений при использовании самоорганизующейся классификации доменов («SO»-метод), сравнении доменов на основе только характеристик («FO»), и базовом методе («Base»)

Изображение

Порог ошибки

Уровень квадро-дерева

Количество блоков

Время, (с)

Время на блок, (с)

Средняя ошибка, %

Коэфф. сжатия

(а) (б)

Рисунок 2 — (а): Исходное растровое изображение «Leaves» (256×256, 256 градаций серого); (б): Декодированное изображение (6 итераций, уровень квадро-дерева равен 7, средняя пиксельная ошибка равна 3.05%, сжатие 1.6:1). Более высокий уровень детализации в этом изображении приводит к уменьшению быстродействия

6. Выводы

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

Литература

  1. E. DeJesus, “Walking, Talking Web”, Byte, January, 1997, 81-84.
  2. Y. Fisher, ed., Fractal Image Compression, (New York: Springer-Verlag, 1995).
  3. A. Jacquin, “Image coding based on a fractal theory of iterated contractive image transformations”, IEEE Trans. Image Proc. 1, 1992, 18-30.
  4. A. Bogdan and H. Meadows, “Kohonen neural network for image coding based on iteration transformation theory”, Proc. SPIE 1766, 1992, 425-436.
  5. R. Hamzaoui, “Codebook clustering by self-organizing maps for fractal image compression”, NATO ASI Conf. On Fractal Image Encoding and Analysis, July, 1995.
  6. M. Barnsley, Fractals Everywhere, 2nd ed. (Boston: Academic Press, 1993).
  7. T. Kohonen, Self-Organization and Associative Memory, (Springer-Verlag, 1989).
  8. S. Welstead, Neural Network and Fuzzy Logic Applications in C/C++, (New York: John Wiley and Sons, 1994).

При векторном квантовании одновременно кодируется группа из N отсчетов цифрового сигнала (N- мерный вектор). В случае одномерного сигнала векторами могут быть группы по N последовательных отсчетов. В случае изображения векторами могут быть блоки из нескольких смежных по горизонтали и по вертикали элементов изображения. На рис. 5.54 представлена структурная схема системы передачи информации, в котором используется векторное квантование .

Смысл векторного квантования заключается в следующем. Множество всех встречающихся в сигнале N -мерных векторов разбиваются на L подмножеств так, что входящие в каждое подмножества векторы мало отличаются друг от друга. В каждом подмножестве выбирается один эталонный вектор, представляющий все векторы этого подмножества. Все эталонные векторы записываются в кодовую книгу и каждому из них присваивается определенное кодовое слово.

Входной цифровой сигнал x(n) поступает на вход кодера. Процедура кодирования заключается в том, что для каждого N-мерного вектора в кодовой книге находится наиболее близкий к нему эталонный вектор, код которого поступает на выход кодера. Таким образом, для каждой группы из N -отсчетов входного сигнала x(n) передается одно кодовое слово u(k).


В декодере в соответствии с принятым кодовым словом u(k) (штрих показывает, что сигнал пришел канал связи) из кодовой книги считывается эталонный вектор, преобразуемый в группу из N отсчетов выходного сигнала y(n) . Кодовая книга может изменяться в зависимости от свойств кодируемого сигнала.

Векторное квантование относится к методам сжатия с потерями, и так как реальные группы из N отсчетов входного сигнала X(n) в выходном сигнале y(n) заменяются эталонными N - мерными векторами. Одним из достоинств векторного квантования является простота декодера, в котором выполняется только операция считывания эталонного вектора из кодовой книги.

В то же время поиск в кодере эталонного вектора наиболее близкого к кодируемому требует большого объема вычислений. Наиболее близкий эталонный вектор считывается из кодовой книги, когда достигается минимальное значение квадратичной ошибки квантования E :

E= S(а j -b j) 2 ,

где а j - элементы входного вектора; b j – элементы эталонного вектора.

Близким к векторному квантованию является фрактальное кодирование изображений, при котором в качестве элементов кодовой книги используются блоки, вырезанные из самого исходного изображения .

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


Однако большой объем вычислений при кодировании препятствует применению этих методов в системах цифрового телевидения .

Контрольные вопросы

1. В какой последовательности кодируются по стандарту JPEG блоки цветного изображения?

2. Почему квантование коэффициентов ДКП создает менее заметные искажения, чем кантование самого изображения?

3. Каким образом в стандарте JPEG осуществляется управление степенью сжатия?

4. В чем состоит сущность кодирования с переменной длиной кодовых слов?

5. Что означает термин “гибридное кодирование” применительно к стандартам MPEG-1, MPEG-2?

6. Зачем перед кодированием по MPEG-1, MPEG-2 выполняется перестановка кадров в GOP?

7. В чем различаются кадровый и полевой режимы кодирования в MPEG-1, MPEG-2?

8. Почему для B -кадров достигается наибольшая степень сжатия?

9. Каково назначение буферного ЗУ в кодере MPEG-2?

10. Что такое масштабируемость?

11. Что такое уровни и профили MPEG-2?

12. Как выделяются данные разных ТВ-программ из транспортного потока MPEG-2?

1. Фракталы и история возникновения метода фрактального сжатия

В декабре 1992 года, перед самым Рождеством, компания Microsoft выпустила свой новый компакт-диск Microsoft Encarta. С тех пор эта мультимедиа-энциклопедия, содержащая информацию о животных, цветах, деревьях и живописных местах, не покидает списки наиболее популярных энциклопедий на компакт-дисках. В недавнем опросе Microsoft Encarta опять заняла первое место, опередив ближайшего конкурента - Комптоновскую мультимедиа-энциклопедию. Причина подобной популярности кроется в удобстве использования, высоком качестве статей и, главное, в большом количестве материалов. На диск записано 7 часов звука, 100 анимационных роликов, примерно 800 масштабируемых карт, а также 7000.качественных фотографий. И все это - на одном диске! Напомним, что обычный компакт-диск в 650 Мбайт без использования компрессии может содержать либо 56 минут качественного звука, либо 1 час видео разрешения с разрешением 320х200 в формате MPEG-1, либо 700 полноцветных изображений размером 640х480. Чтобы разместить больше информации, необходимы достаточно эффективные алгоритмы архивации. Мы не будем останавливаться на методах архивации для видео и звука. Речь пойдет о новом перспективном алгоритме - фрактальном сжатии графической информации.

Понятия «фрактал» и «фрактальная геометрия» (fractus - состоящий из фрагментов, лат.) были предложены математиком Б. Мандельбротом в 1975 г. для обозначения нерегулярных, но самоподобных структур. Рождение фрактальной геометрии обычно связывают с выходом в 1977 году книги Б. Мандельброта "Фрактальная геометрия природы". Одна из основных идей книги заключалась в том, что средствами традиционной геометрии (то есть используя линии и поверхности), чрезвычайно сложно представить природные объекты. Фрактальная геометрия задает их очень просто.

Определение фрактала, данное Мандельбротом, звучит так: "Фракталом называется структура, состоящая из частей, которые в каком-то смысле подобны целому"

Одним из основных свойств фракталов является самоподобие. В самом простом случае небольшая часть фрактала содержит информацию о всём фрактале. Фракталы, эти красивые образы динамических систем, ранее использовались в машинной графике в основном для построения изображений неба, листьев, гор, травы. Красивое и, что важнее, достоверно имитирующее природный объект изображение могло быть задано всего несколькими коэффициентами.

Существует большое разнообразие фракталов. Потенциально наиболее полезным видом фракталов являются фракталы на основе системы итеративных функций (Iterated Function System - IFS) . Метод IFS применительно к построению фрактальных изображений, изобретённый большим их знатоком Майклом Барнсли (Michael Barnsley) и его коллегами из Технологического института шт. Джорджия (Georgia Institute of Technology) , базируется на самоподобии элементов изображения и заключается в моделировании рисунка несколькими меньшими фрагментами его самого. Специальные уравнения позволяют переносить, поворачивать и изменять масштаб участков изображения; таким образом, эти участки служат компоновочными блоками остальной части картины.

Одним из наиболее поразительных (и знаменитых) IFS -изображений является чёрный папоротник, в котором каждый лист в действительности представляет собой миниатюрный вариант самого папоротника (см. рис.). Несмотря на то, что картинка создана компьютером методом аффинных преобразований, папоротник выглядит совершенно как настоящий. Выдвинуто предположение, что природа при кодировании генетической структуры растений и деревьев пользуется чем-то близким к методу IFS -фракталов.

IFS -фракталы имеют одно вполне реальное и полезное применение: с их помощью можно сжимать большие растровые изображения до долей их нормальных размеров. Этот утверждение следует из теоремы Банаха о сжимающих преобразованиях (также известной как Collage Theorem ) и является результатом работы исследователя Технологического института шт. Джорджия Майкла Барнсли в области IFS . Вооружившись этим выводом, он ушёл из института, запатентовал свое открытие и основал компанию Iterated Systems Incorporated . О своём достижении он рассказал миру в журнале Byte за январь 1988 г. Однако там отсутствовали какие-либо сведения о решении обратной задачи: как по заданному изображению найти аффинные преобразования. К тому моменту у этой задачи не было даже намёка на решение. В статье Барнсли было показано несколько реалистичных фрактальных изображений, но все они были созданы вручную.

В идеале хотелось бы уметь находить для любого изображения систему аффинных преобразований (IFSM) , воспроизводящую изображение с заданной точностью. Однако решение находилось немного в стороне. Первым нашёл его именно студент Барнсли, Арно Жакан (Arnaud Jacquin) . Предложенный метод получил название «Система итерируемых кусочно-определённых функций» (Partitioned Iterated Function System - PIFS) . Согласно этой схеме, отдельные части изображения подобны не всему изображению, а только его частям.

2. Математические основы фрактального сжатия

Фрактальные методы сжатия позволяют сжать информацию в 10 000 раз. Все известные программы фрактальной компрессии базируются на алгоритме Джеквина - сотрудника Барнсли, который в 1992 году при защите диссертации описал практический алгоритм фрактального сжатия. Несомненным достоинством работы было то, что вмешательство человека в процесс сжатия удалось полностью исключить.

Рассмотрим механизм фрактального сжатия данных. Фрактальная архивация основана на том, что с помощью коэффициентов системы итерируемых функций изображение представляется в более компактной форме. Прежде чем рассматривать процесс архивации, разберем, как IFS строит изображение. Строго говоря, IFS - это набор трехмерных аффинных преобразований, переводящих одно изображение в другое. Преобразованию подвергаются точки в трехмерном пространстве (x координата, у координата, яркость). Наиболее наглядно этот процесс продемонстрировал сам Барнсли в своей книге "Фрактальное сжатие изображения". В ней введено понятие Фотокопировальной Машины, состоящей из экрана, на котором изображена исходная картинка, и системы линз, проецирующих изображение на другой экран. Каждая линза проецирует часть исходного изображения. Расставляя линзы и меняя их характеристики, можно управлять получаемым изображением. На линзы накладывается требование они должны уменьшать в размерах проектируемую часть изображения. Кроме того, они могут менять яркость фрагмента и проецируют не круги, а области с произвольной границей. Одна шаг Машины состоит в построении с помощью проецирования по исходному изображению нового. Утверждается, что на некотором шаге изображение перестанет изменяться. Оно будет зависеть только от расположения и характеристик линз и не будет зависеть от исходной картинки. Это изображение называется неподвижной точкой или аттрактором данной IFS. Collage Theorem гарантирует наличие ровно одной неподвижной точки для каждой IFS. Поскольку отображение линз является сжимающим, каждая линза в явном виде задает самоподобные области в нашем изображении. Благодаря самоподобию мы получаем сложную структуру изображения при любом увеличении. Наиболее известны два изображения, полученных с помощью IFS треугольник Серпинского и папоротник Барнсли Первое задается тремя, а второе - питью аффинными преобразованиями (или, в нашей терминологии, линзами). Каждое преобразование задается буквально считанными байтами, в то время, как изображение, построенное с их помощью, может занимать и несколько мегабайт. Становится понятно, как работает архиватор, и почему ему требуется так много времени. Фактически, фрактальная компрессия - это поиск самоподобных областей в изображении и определение для них параметров аффинных преобразований. В худшем случае, если не будет применяться оптимизирующий алгоритм, потребуется перебор и сравнение всех возможных фрагментов изображения разного размера. Даже для небольших изображений при учете дискретности мы получим астрономическое число перебираемых вариантов. Даже резкое сужение классов преобразований, например, за счет масштабирования только в определенное число раз, не позволит добиться приемлемого времени. Кроме того, при этом теряется качество изображения. Подавляющее большинство исследований в области фрактальной компрессии сейчас направлены на уменьшение времени архивации, необходимого для получения качественного изображения.

Итак, рассмотрим математическое обоснование возможности фрактального сжатия.

Есть отображение, где - множество всех возможных изображений. W является объединением отображений w i :

Такие отображения называются сжимающими , и для них справедливо следующее утверждение:

Если к какому-то изображению F 0 мы начнём многократно применять отображение W таким образом, что

Это конечное изображение F называют аттрактором , или неподвижной точкой отображения W . Также известно, что если преобразования w i являются сжимающими, то их объединение W тоже является сжимающим.

3. Типовая схема фрактального сжатия

С учётом вышесказанного, схема компрессии выглядит так: изображение R разбивают на кусочки r i , называемые ранговыми областями . Далее для каждой области r i находят область d i и преобразование w i такие, что выполняются следующие условия:

1. d i по размерам больше r i .

2. w i (r i ) имеет ту же форму, размеры и положение, что и r i .

3. Коэффициент u преобразования w i должен быть меньше единицы.

4. Значение должно быть как можно меньше.

Первые три условия означают, что отображение w i будет сжимающим. А в силу четвёртого условия кодируемое изображение R и его образ W (R) будут похожи друг на друга. В идеале R = W (R) . А это означает, что наше изображение R и будет являться неподвижной точкой W . Именно здесь используется подобие различных частей изображения (отсюда и название - «фрактальная компрессия» ). Как оказалось, практически все реальные изображения содержат такие похожие друг на друга, с точностью до аффинного преобразования, части.

Таким образом, для компрессии изображения W нужно:

1. Разбить изображение на ранговые области r i (непересекающиеся области, покрывающие все изображение).

2. Для каждой ранговой области r i найти область d i (называемую доменной ), и отображение w i , с указанными выше свойствами.

3. Запомнить коэффициенты аффинных преобразований W , положения доменных областей d i , а также разбиение изображения на домены.

Соответственно, для декомпрессии изображения нужно будет:

1. Создать какое-то (любое) начальное изображение R 0 .

2. Многократно применить к нему отображение W (объединение w i ).

3. Так как отображение W сжимающее, то в результате, после достаточного количества итераций, изображение придёт к аттрактору и перестанет меняться. Аттрактор и является нашим исходным изображением. Декомпрессия завершена.

Именно это и позволяет при развертывании увеличивать его в несколько раз. Особенно впечатляют примеры, в которых при увеличении изображений природных объектов проявляются новые детали, действительно этим объектам присущие (например, когда при увеличении фотографии скалы она приобретает новые, более мелкие неровности).

4. Оценка коэффициента сжатия и вычислительных затрат

Размер данных для полного определения ранговой области рассчитывается по формуле:

где Nb и Mb - количество бит, необходимых для хранения каждой из координат, рассчитываются по следующим формулам:

где V и H - вертикальный и горизонтальный размеры изображения, Size - размер доменного блока, Step - шаг поиска доменной области.

Для хранения преобразования T необходимо 3 бита.

Для хранения U и V необходимо 9 и 7 бит соответственно.

Для примера возьмём изображение размером 256x256 пикселей, и будем исследовать доменную область с шагом 4 пикселя.

Nd = Md = (256 - 8 + 1) / 4 = 62

Nb = Mb = CEIL (log 2 62) = 6

Z = 12 + 3 + 6 + 6 = 27

Коэффициент сжатия S составляет

S = (8 * 8 * 8) / 27 = 19

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

А теперь оценим вычислительную сложность данного алгоритма. На этапе компрессии мы должны перебрать все доменные области - 1"024 штуки, для каждой - все ранговые - 58"081 штука (при шаге 1), а для каждой из них, в свою очередь, - все 8 преобразований. Итого получается 1"024 х 58"081 х 8 = 475"799"552 действия. При этом эти действия не тривиальны и включают несколько матричных операций, которые, в свою очередь, включают операции умножения и деления чисел с плавающей точкой.

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

Идея фрактального сжатия изображений зародилась относительно недавно – в 70-х годах прошлого века. Считается, что наиболее активно эта область начала развиваться после выхода книги Бенуа Мандельброта “Фрактальная геометрия природы”. Точного определения фрактальных объектов не существует, но принято считать, что фракталы – это объекты, обладающее свойством самоподобия, т. е. такие, где часть объекта выглядит как целый объект. Классическим примером фрактала является лист папоротника – так называемый папоротник Барнсли.

Идея фрактального сжатия основывается именно на свойстве самоподобия. Но существуют две проблемы: во – первых, ничто не гарантирует наличие свойства самоподобия у произвольного изображения; во – вторых, если даже объект и является фрактальным, как выделить ту область (или области), на основе которых сроится изображение. Следовательно, необходим некий теоретический базис, позволяющий решать эти проблемы. Такой базис существует и приведен ниже.

2.ТЕОРЕТИЧЕСКИЙ БАЗИС.

2.1ЧЕРНО – БЕЛЫЕ ИЗОБРАЖЕНИЯ.

2.1.1.Метрические пространства.

Метрикой d в пространстве X называется функция двух аргументов d(x,y) такая, что:

Тогда (X,d) – метрическое пространство. Последовательность точек называется сходящейся к точке x, если

Метрическое пространство, где каждая последовательность Коши сходится к точке этого пространства, называется полным метрическим пространством.

Точка x называется предельной точкой множества X, если существует последовательность точек из Х, сходящаяся к точке x.

Множество в метрическом пространстве называется замкнутым , если оно содержит все свои предельные точки. Множество B из (X, d) называется ограниченным , если существует точка x 0 из X и конечное значение R > 0, такие что для любого x из B выполняется условие d(x,x 0)

2.1.2 Компактные множества и пространство Хаусдорфа.

Множество C в метрическом пространстве (X, d) называется компактным , если каждая бесконечная последовательность из C имеет сходящуюся в С подпоследовательность.

Определим пространство Хаусдорфа.

Пусть (Х, d) – полное метрическое пространство. Определим H(X) как пространство, состоящее из компактных подмножеств множества Х. Т.е., каждая точка в H(X) – это компактное подмножество из Х.

Рассмотрим произвольную точку x из Х и произвольное B из H(X). Положим по определению

d(x, B) = min{d(x, y): y Î B}.

В силу компактности множества B минимум существует и ограничен. Рассмотрим теперь произвольные A,B Î H(X) и определим расстояние между ними как d(A, B) = max{d(x, B): x Î A} Компактность А обеспечивает существование и конечность максимума, но d(A, B) не задает метрику, т.к., в общем случае d(A, B) № d(B,A).

Определим новую меру расстояния h(A, B):

h(A, B) = max{d(A, B), d(B, A)}.

Теперь мы получили метрику в пространстве H(X). Метрика h называется метрикой Хаусдорфа , а метрическое пространство (H(X), h) – метрическим пространством Хаусдорфа .

2.1.3 Сжимающие отображения.

Преобразование f: X® X в метрическом пространстве (X, d) называется сжимающим отображением, если существует константа s, 0 £ s £ s*d(x 1 , x 2) для всех x 1 , x 2 Î X. Константа s называется коэффициентом сжатия отображения f. Точка х 0 называется неподвижной точкой (аттрактором) сжимающего отображения f, если f(x 0) = x 0 .

Теорема о сжимающих отображениях.

Пусть f: X® X сжимающее отображение на полном метрическом пространстве (X, d). Тогда f имеет одну и только одну неподвижную точку х 0 Î Х, и для любого х 0 Î Х f n (x)® x 0 .

2.1.4. Системы итерируемых функцмй.

Пусть {w 1 , … , w N } – конечный набор сжимающих отображений в (X, d) с коэффициентами сжатия s 1 , … , s N . Определим отображение W, на компактные множества точек из Х следующим образом:

W(B) = w 1 (B) И … И w N (B) для каждого B Î Н(Х).

Таким образом получили сжимающее отображение W: H(X) ® H(X) с коэффициентом сжатия

s = max{s 1 , …, s N }

Система итерируемых функций (IFS) состоит из полного метрического пространства (Х, d) и конечного множества сжимающих отображений w n:X ® X с коэффициентами сжатия s n . Коэффициент сжатия IFS определяется как s = max{s 1 , …, s N }.

IFS будем обозначать как {X, w n: n = 1,2,…, N}.

Теорема коллажа. Пусть L – точка пространства Н(Х). Задано некоторое e > 0. Выберем IFS {X, w n: n = 1,2,…,N} с коэффициентом сжатия s, 0 Ј e, Тогда h(L,A) Ј h(L, W(L))/(1-s) Ј e / (1-s) , Где A – аттрактор данной IFS.

2.1.5. Аффинные преобразования.

Аффинные преобразования – преобразования вида

Аффинные преобразования осуществляют сжатие/растяжение, перенос и поворот объекта.

2.1.5. Кодирование изображений.

Для получения коэффициентов нужного аффинного преобразования (в простейших случаях) достаточно решить 2 системы их 3-х уравнений с 3-мя неизвестными. В качестве примера рассмотрим построение Треугольника Серпинского. Это изображение описывается 3-мя преобразованиями:

1-е переводит точки {1,2,3} в точки {1,4,6};

2-e: {1,2,3} – в {4,2,5};

3-e: {1,2,3} – в {6,5,3},

(см. рисунок слева внизу).

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

2.1.7 Декодирование изображений.

2.1.7.1 Детерминистический алгоритм.

Детерминистический алгоритм для построения изображения, являющегося аттрактором IFS, напрямую применяет теорему о сжимающем отображении к любому начальному изображению B из H(X). Алгоритм строит последовательность изображений А n , многократно применяя IFS отображение W = {w 1, … , w N}. Если мы положим A 0 =B, то процесс может быть записан в виде A n = W(A n-1). По теореме о сжимающем отображении, A n сходится к аттрактору данной IFS.Ниже приведен пример работы детерминистического алгоритма – первые несколько итераций и конечное изображение, близкое к аттрактору.

2.1.7.2 Вероятностный алгоритм.

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

Более предпочтительным является использование вероятностного алгоритма: Вероятностный алгоритм связывает с каждым преобразованием w i из IFS вероятность p i . Эти вероятности определяют, насколько плотно каждая часть изображения – аттрактора покрыта точками.Вероятности преобразований можно вычислять как отношение модуля определителя основной матрицы преобразования к сумме модулей определителей основных матриц всех преобразований из IFS.

Алгоритм построения изображения:

1) For n = 1 to number_of_points_in_image do

2) (x,y) = random(B)

3) for I=1 to number_of_iterations do

4)   p = random(0,1)

5)   (x,y) = W k (x,y) //где вероятность р соответствует преобр-ю W k

Ниже приведен пример работы вероятностного алгоритма.

Можно заметить, что для вероятностного алгоритма существуют особые точки – черные изображения. Если работа вероятностного алгоритма начинается с них, то аттрактор не будет получен никогда. Отсюда вытекает следующее утверждение: если в начальном изображении присутствует хотя бы одна черная точка, то существует отличная от нуля вероятность того, что в результате работы вероятностного алгоритма получится чисто черное изображение, причем эта вероятность тем больше, чем больше количество черных точек в изображении.

Действительно, пусть изображение имеет размеры n x m. Тогда общее число точек в нем N = n x m. Пусть число черных точек равно b, пусть число точек, используемых для построения изображения равно M. Вероятность того, что случайно выбранная точка окажется черной, равна b/N.

Вероятность того, что все выбранные точки окажутся черными, равна

Таким образом, для того, чтобы алгоритм сработал корректно с вероятностью большей, чем 1-e , где e О (0, 1), требуется выполнение неравенства log b/N e £ M

Рассмотрим пример. Пусть e = 0,01. Тогда для корректной работы вероятностного алгоритма при начальном изображении размера 300х300 с единственной белой точкой требуется

M > log 89999/90000 0.01 > 414463

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

2.1 ИЗОБРАЖЕНИЯ В ГРАДАЦИЯХ СЕРОГО.

2.2.1 Метрическое пространство.

Изображения в градациях серого можно рассматривать как вещественные функции f(x,y) , определенные на единичном квадрате I2=I x I..

На этих функциях можно ввести метрику следующим образом:

Пусть F – пространство вещественных функции, интегрируемых с квадратом на I2 с введенной метрикой. Тогда (F,d) – полное метрическое пространство и в нем выполняется теорема о сжимающих отображениях.

Поскольку работать мы будем с цифровыми изображениями, которые по сути являются матрицами фиксированных значений функции f(x,y), взятых в фиксированных точках (xi, yj), в этом случае можно пользоваться среднеквадратичной метрикой (rms):

2.2.2 PIFS и аффинные преобразования изображений в градациях серого.

В этом разделе используются IFS специального вида – системы итерируемых кусочно-определенных функций (PIFS) . PIFS состоит из полного метрического пространства X, набора подобластей D i из Х и набора сжимающих отображений w i: D i ® X, i=1, 2, … , n.

2.2.2.1 Аффинные преобразования.

Пусть w 0 i – аффинное преобразование, переводящее в себя единичный квадрат I2. W 0 i (x,y) = A i (x,y)T +b i , где А i – некоторая матрица размера 2х2, b i – вектор размера 2х1. Пусть D i – некоторая подобласть I2, и пусть R i – область значений преобразования w 0 i: w 0 i (D i) = R i . Определим отображение w i:F ® F, действующее на изображение f(x,y) :

(если w 0i - обратимо и (х,у) из R i).

Константа s i управляет контрастностью, o i управляет яркостью. w i – это базовое аффинное преобразование изображений в градациях серого.

2.2.2.2 Сжимающие отображения.

Для того, чтобы отображение wi было сжимающим потребуем выполнение условия

d 2 (w i (f), w i (g)) Ј s*d 2 (f, g).

Теорема о сжимающем отображении.

Пусть {R i } образуют покрытие множества I2, и при этом попарно не пересекаются. Пусть v i – PIFS вида v i:D i ® R i для некоторого множества доменных областей D i .Для каждого v i определим соответствующее сжатие w i на пространстве изображений F указанным выше способом. Пусть W(f(x,y)) = w i (f(x,y)) для (x ,y) из R i . Тогда W является сжатием на F, имеет единственную неподвижную точку f W и W n (f) ® f W при n ® Ґ для любых изображений f.

Теорема коллажа.

Пусть задано изображение в градациях серого f . Пусть W – сжимающее отображение такое, что d 2 (f,W(f)) Ј e . Тогда d 2 (f, f W) Ј e /(1-s), где s - коэффициент сжатия отображения W, f w - аттрактор PIFS.

2.2.3 Фрактальное кодирование.

При фрактальном кодировании изображений мы пытаемся найти множество сжимающих отображений, которые отображают доменные блоки в множество ранговых блоков.

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

1)Разбиваем исходное изображение на непересекающиеся ранговые блоки.

2)Покрываем изображение последовательностью доменных блоков, возможно пересекающихся (домены могут быть разных размеров и обычно их количество исчисляется тысячами).

3)Для каждого рангового блока находим домен и соответствующее преобразование, которое наилучшим образом покрывает ранговый блок

4)Если достаточно точного соответствия не получаем, то разбиваем ранговые блоки на меньшие. Продолжаем этот процесс до тех пор, пока не добьемся приемлемого соответствия, или размер ранговых блоков не достигнет некоторого заранее определенного предела.

2.2.4 Декодирование изображений.

Изображение декодируется путем итеративного применения преобразования W к произвольному начальному изображению g, где W(g(x,y)) = w i (g(x,y)), для (x,y) из R i . Если преобразования были выбраны корректны, то итерация W n (g) будет близка к исходному значению f при некотором приемлемом значении n. Важно, что в соответствии с теоремой о сжимающем отображении процесс будет сходиться независимо от выбора начального изображения. В качестве примера можно рассмотреть построение изображения «вид на УрГУ» на основе изображения «вид на УПИ». Слева направо – начальное изображение, 1-ая итерация, 2-ая итерация, аттрактор.

3.РЕАЛИЗАЦИЯ.

Все приведенные выше построения являются довольно абстрактными, и механизм их работы не всегда очевиден. Для иллюстрации в процессе работы были написаны программы (работающие с ЧБ изображениями, т. к. этот случай является более простым), позволяющие наглядно продемонстрировать некоторые вышеописанные процессы. Ниже приведены описания программ.

3.1 Программа Fract0.

1. Фракталы и история возникновения метода фрактального сжатия

Понятия «фрактал» и «фрактальная геометрия» (fractus – состоящий из фрагментов, лат.) были предложены математиком Б. Мандельбротом в 1975 г. для обозначения нерегулярных, но самоподобных структур. Рождение фрактальной геометрии связывают с выходом в 1977 г. книги Б. Мандельброта «Фрактальная геометрия природы», в которой объединены в единую систему научные результаты учёных, работавших в период 1875-1925 гг. в этой области (Пуанкаре, Жюлиа, Кантор и др.).

Одним из основных свойств фракталов является самоподобие. В самом простом случае небольшая часть фрактала содержит информацию о всём фрактале.

С точки зрения машинной графики, фрактальная геометрия незаменима при генерации сложных неевклидовых объектов, образы которых весьма похожи на природные, и когда требуется с помощью нескольких коэффициентов задать линии и поверхности очень сложной формы.

Существует большое разнообразие фракталов. Потенциально наиболее полезным видом фракталов являются фракталы на основе системы итеративных функций (Iterated Function System – IFS). Метод IFS применительно к построению фрактальных изображений, изобретённый большим их знатоком Майклом Барнсли (Michael Barnsley) и его коллегами из Технологического института шт. Джорджия (Georgia Institute of Technology), базируется на самоподобии элементов изображения и заключается в моделировании рисунка несколькими меньшими фрагментами его самого. Специальные уравнения позволяют переносить, поворачивать и изменять масштаб участков изображения; таким образом, эти участки служат компоновочными блоками остальной части картины.

Одним из наиболее поразительных (и знаменитых) IFS-изображений является чёрный папоротник, в котором каждый лист в действительности представляет собой миниатюрный вариант самого папоротника (см. рис.). Несмотря на то, что картинка создана компьютером методом аффинных преобразований, папоротник выглядит совершенно как настоящий. Выдвинуто предположение, что природа при кодировании генетической структуры растений и деревьев пользуется чем-то близким к методу IFS-фракталов.

IFS-фракталы имеют одно вполне реальное и полезное применение: с их помощью можно сжимать большие растровые изображения до долей их нормальных размеров. Этот утверждение следует из теоремы Банаха о сжимающих преобразованиях (также известной как Collage Theorem) и является результатом работы исследователя Технологического института шт. Джорджия Майкла Барнсли в области IFS. Вооружившись этим выводом, он ушёл из института, запатентовал своё открытие и основал компанию Iterated Systems Incorporated. О своём достижении он рассказал миру в журнале Byte за январь 1988 г. Однако там отсутствовали какие-либо сведения о решении обратной задачи: как по заданному изображению найти аффинные преобразования. К тому моменту у этой задачи не было даже намёка на решение. В статье Барнсли было показано несколько реалистичных фрактальных изображений, но все они были созданы вручную.

В идеале хотелось бы уметь находить для любого изображения систему аффинных преобразований (IFSM), воспроизводящую изображение с заданной точностью. Однако решение находилось немного в стороне. Первым нашёл его именно студент Барнсли, Арно Жакан (Arnaud Jacquin). Предложенный метод получил название «Система итерируемых кусочно-определённых функций» (Partitioned Iterated Function System – PIFS). Согласно этой схеме, отдельные части изображения подобны не всему изображению, а только его частям.

2. Математические основы фрактального сжатия

Итак, рассмотрим математическое обоснование возможности фрактального сжатия.

Есть отображение , где – множество всех возможных изображений. W является объединением отображений w i :

где R – изображение, а d i – какие-то (возможно, перекрывающиеся) области изображения D . Каждое преобразование w i переводит d i в r i . Таким образом:

Будет логично представить изображение в виде функции двух переменных f (x, y) . На множестве всех таких функций введём метрику (расстояние между изображениями), например, таким образом:

Согласно теореме Банаха, существует определённый класс отображений, для которых существует константа c < 1 такая, что для любых изображений f и g выполняется неравенство

Такие отображения называются сжимающими , и для них справедливо следующее утверждение:

Если к какому-то изображению F 0 мы начнём многократно применять отображение W таким образом, что то в пределе, при i , стремящемся к бесконечности, мы получим одно и то же изображение вне зависимости от того, какое изображение мы взяли в качестве F 0 :

Это конечное изображение F называют аттрактором , или неподвижной точкой отображения W . Также известно, что если преобразования w i являются сжимающими, то их объединение W тоже является сжимающим.

3. Типовая схема фрактального сжатия

С учётом вышесказанного, схема компрессии выглядит так: изображение R разбивают на кусочки r i , называемые ранговыми областями . Далее для каждой области r i находят область d i и преобразование w i такие, что выполняются следующие условия:

  1. d i по размерам больше r i .
  2. w i (r i) имеет ту же форму, размеры и положение, что и r i .
  3. Коэффициент u преобразования w i должен быть меньше единицы.
  4. Значение должно быть как можно меньше.

Первые три условия означают, что отображение w i будет сжимающим. А в силу четвёртого условия кодируемое изображение R и его образ W (R) будут похожи друг на друга. В идеале R = W (R) . А это означает, что наше изображение R и будет являться неподвижной точкой W . Именно здесь используется подобие различных частей изображения (отсюда и название – «фрактальная компрессия» ). Как оказалось, практически все реальные изображения содержат такие похожие друг на друга, с точностью до аффинного преобразования, части.

Таким образом, для компрессии изображения W нужно:

  1. Разбить изображение на ранговые области r i (непересекающиеся области, покрывающие все изображение).
  2. Для каждой ранговой области r i найти область d i (называемую доменной ), и отображение w i , с указанными выше свойствами.
  3. Запомнить коэффициенты аффинных преобразований W , положения доменных областей d i , а также разбиение изображения на домены.

Соответственно, для декомпрессии изображения нужно будет:

  1. Создать какое-то (любое) начальное изображение R 0 .
  2. Многократно применить к нему отображение W (объединение w i ).
  3. Так как отображение W сжимающее, то в результате, после достаточного количества итераций, изображение придёт к аттрактору и перестанет меняться. Аттрактор и является нашим исходным изображением. Декомпрессия завершена.

Пусть дано изображение M x N точек (где M и N кратны 8), 256 градаций серого. Ранговые и доменные области будем брать квадратными. Исходное изображение разобьём на ранговые области размером 8 х 8 точек. Доменные области будем искать размером 16 х 16 точек путём перебора всех возможных положений. Существует всего 8 аффинных преобразований, переводящих квадрат в квадрат (повороты на 0°, 90°, 180°, 270°, зеркальные отражения относительно центральной горизонтали, центральной вертикали, от главной и побочной диагоналей). Осталось найти только коэффициенты для преобразования цвета. Но значения u и v (контрастности и яркости) можно легко найти аналитически.

Если есть две последовательности значений цвета пикселов a 1 , a 2 , …, a N (доменной области) и b 1 , b 2 , …, b N (ранговой области), то можно минимизировать среднеквадратичное отклонение цвета пикселов, представляющее собой вариант метрики различия изображений:

Для этого достаточно приравнять частные производные R по u и по v к нулю, и решить уравнение относительно u и v . Получатся такие выражения:

при этом, если

Итак, какие же данные необходимо хранить в результате. Сетка разбиения на ранговые области постоянная для всех изображений, её хранить не надо. Остаётся положение ранговых областей (верхнего левого угла), номер преобразования и коэффициенты яркости и контрастности.

4. Оценка коэффициента сжатия и вычислительных затрат

Размер данных для полного определения ранговой области рассчитывается по формуле:

где X – количество бит, необходимых для хранения координат нижнего левого угла домена, T – количество бит, необходимых для хранения типа аффинного преобразования, U и V – для хранения коэффициентов контраста и яркости.

где Nb и Mb – количество бит, необходимых для хранения каждой из координат, рассчитываются по следующим формулам:

Здесь CEIL – функция округления до максимального целого, Md и Nd – количество доменов, умещающихся по горизонтали и вертикали, которые рассчитываются по формулам:

где V и H – вертикальный и горизонтальный размеры изображения, Size – размер доменного блока, Step – шаг поиска доменной области.

Для хранения преобразования T необходимо 3 бита.

Для хранения U и V необходимо 9 и 7 бит соответственно.

Для примера возьмём изображение размером 256 x 256 пикселей, и будем исследовать доменную область с шагом 4 пикселя.

Nd = Md = (256 - 8 + 1) / 4 = 62

Nb = Mb = CEIL (log 2 62) = 6

Z = 12 + 3 + 6 + 6 = 27

Коэффициент сжатия S составляет

S = (8 * 8 * 8) / 27 = 19

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

А теперь оценим вычислительную сложность данного алгоритма. На этапе компрессии мы должны перебрать все доменные области – 1 024 штуки, для каждой – все ранговые – 58 081 штука (при шаге 1), а для каждой из них, в свою очередь, – все 8 преобразований. Итого получается 1 024 х 58 081 х 8 = 475 799 552 действия. При этом эти действия не тривиальны и включают несколько матричных операций, которые, в свою очередь, включают операции умножения и деления чисел с плавающей точкой.

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

5. Оптимизация алгоритма компрессии

Алгоритм нуждается в оптимизации по нескольким направлениям: по скорости, по качеству получаемого изображения, по степени компрессии.

Для снижения вычислительных затрат можно предпринять следующие меры:

  1. Исследовать доменную область не полностью, а с некоторым шагом. Это также позволит увеличить степень сжатия, но скажется на качестве изображения.
  2. Искать не лучшую доменную область, а удовлетворяющую некоторому E . Хотя это может значительно увеличить скорость сжатия, но такой приём так же может значительно снизить качество результирующего изображения. В данном случае качество в значительной степени зависит от адекватности метрики различия между изображениями.
  3. При поиске доменной области подвергать преобразованию не доменную область, а ранговую. Для этого удобно хранить 8 вариантов ранговых областей с различными преобразованиями. При этом в результирующий файл нужно записать обратное преобразование. Для всех преобразований, кроме двух, обратным является само это преобразование. Для поворота на 90° и 270° необходимо записать поворот на 270° и 90° соответственно. Это значительно сократит вычислительные затраты, но также значительно увеличатся затраты оперативной памяти.
  4. Для поиска доменной области можно использовать не перебор, а какой-либо из алгоритмов условной нелинейной глобальной оптимизации, такой, как алгоритм моделирования отжига или генетический алгоритм. В этом случае будет всего три варьируемых параметра (координаты доменной области и номер аффинного преобразования), а целевой функцией – среднеквадратичное отклонение доменной области от ранговой.

Для улучшения качества: в случае необнаружения доменной области, удовлетворяющей заданному E , ранговую область можно разбить на 4 подобласти и произвести поиск домена для каждой из них. Это можно делать и дальше рекурсивно, до достижения некоторого минимального размера либо единичного пиксела. Но это увеличит вычислительные затраты и снизит коэффициент сжатия.

Для увеличения коэффициента компрессии можно идентифицировать однотонные блоки. Однотонным блоком будем называть ранговую область, у которой среднеквадратичное отклонение от собственного среднего значения не превышает некоторого E" . При этом в выходной файл будет записана только средняя яркость точки, за счёт чего будет достигнуто сжатие 1 к 64 (для ранговых областей размером 8).

6. Реализация

В данной статье описываеться лишь простейший вариант алгоритма фрактального сжатия. Майкл Барнслн и Алан Слоун нашли метод решения данной задачи, который действует в отношении любого растрового изображения, даже если в нём не заметны очевидные элементы самоподобия. Все подробности этого метода не обнародованы, но то обстоятельство, что пакет Microsoft Encarta использует библиотеку сжатия Барнсли, служит достаточным свидетельством в пользу его эффективности и обшей применимости к изображениям всех типов.

О методе Барнсли-Слоуна нам известно лишь то, что с помощью стандартных приёмов обработки изображений (кстати, описание многих из них Вы так же можете найти на этом сайте), таких, как выделение краёв и анализ текстурных вариаций, изображение делится на сегменты нерегулярной формы. Затем выполняется ряд преобразований, определяющих изображение как объединение этих сегментов, и преобразования записываются в виде IFS-наборов. Посредством итерационного процесса, подобного тому, который использовался при построении изображения папоротника, с поразительной точностью осуществляется реконструкция изображения. Число аффинных преобразований не фиксируется на 8; в некоторых кодированных изображениях может использоваться 100 или более афинных преобразований.

Я, в свою очередь, могу представить вариант реализации описанного выше алгоритма, который не отличаеться ни скоростью, ни высоким качеством, но тем не менее может служить несложным средством исследования. В архиве.rar, доступном для скачивания , также представлены исходные тексты.

Более совершенный вариант реализации Вы можете найти на сайте