Повышение производительности фрактального кодирования изображений с помощью перцептивных хеш-функций
Анализ вопроса фрактального кодирования изображения для задач распознавания образов. Требования к вычислительным ресурсам классической реализации алгоритма фрактального кодирования. Размер памяти, занимаемой под доменный пул, для изображения 512x512.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 27.05.2018 |
Размер файла | 233,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
УДК 004.62
Повышение производительности фрактального кодирования изображений с помощью перцептивных хеш-функций
В.К. Гулаков, С.Б. Клепинин
Аннотация
фрактальный кодирование изображение память
Рассмотрен вопрос фрактального кодирования изображения для задач распознавания образов. Проанализированы требования к вычислительным ресурсам классической реализации алгоритма фрактального кодирования. Выдвинуто и реализовано предложение по её улучшению. Представлены практические результаты, а также сравнительный анализ двух имплементаций.
Ключевые слова: фракталы, системы итерируемых функций, распознавание изображений, фрактальный код изображения, перцептивное хеширование, фрактальное кодирование.
Фракталы как математические объекты с интересными свойствами (самоподобие, дробная размерность, отсутствие четкой характеристической меры) были известны таким математикам, как Кантор, Пуанкаре, Гилберт, еще в конце XIX - начале XX века. Однако основоположником фрактальной математики считается Бенуа Мандельброт. Теория итерируемых функций, введенная Джоном Хатчинсоном, стала вторым шагом на пути практического использования фракталов. В дальнейшем эта теория была использована Михаилом Барнсли для определения теоремы коллажа, которая описывает, каким образом должна быть построена система итерируемых функций для получения фрактального изображения. ЭрнеЖаквин, один из студентов Барнсли, создал алгоритм, позволяющий преобразовать изображение в систему частично итерируемых функций [1].Эта реализация по сей день является основой большинства систем фрактального кодирования.
С одной стороны, геометрические фракталы обладают очень высокой визуальной сложностью, с другой стороны, эта сложность имеет маленький информационный вес, так как фракталы могут быть описаны и сгенерированы несложным алгоритмом. Также фракталы являются избыточными объектами в том смысле, что они, как правило, составлены из трансформированных копий себя или какой-то части себя. Эту избыточность и пытаются эксплуатировать фрактальные алгоритмы сжатия. В течение многих лет фрактальное кодирование использовалось только для целей компрессии изображений, было предложено множество подходов и реализаций [2]. Значительно позже фракталы стали использоваться и для задач распознавания образов. Системы строятся как на основе непосредственного сравнения векторов фрактальных кодов (наборов параметров сжимающих преобразований), так и с использованием математической основы фрактального кодирования (например, теоремы коллажа, теоремы о фиксированной точке) [3].
Фрактальный код изображения представляет собой набор сжимающих преобразований, трансформирующих доменные блоки в ранговые. Распределение соответствующих друг другу пар (доменный блок - ранговый блок) зависит от содержания изображения, а также от используемого алгоритма. Некоторые методы используют лучшее совпадение, другие - первое, удовлетворяющее определенному пороговому значению. Доменные блоки покрывают кодируемое изображение полностью и могут перекрываться. Ранговые блоки организованы в квадродерево[5] и пересекаться не могут.
Рассмотрим подробнее типичный алгоритм фрактального кодирования:
Входные данные:
- кодируемое изображение;
- начальный размер ранговых блоков в квадродереве;
- максимальная глубина квадродерева.
I. Создание пула доменных блоков:
1. Кодируемое изображение покрывается несколькими слоями доменных блоков квадратной формы. Слой - это множество доменных блоков одинакового размера. Количество слоев равно глубине квадродерева ранговых блоков. Доменный блок должен быть больше рангового блока, с которым он будет сравниваться в дальнейшем (в нашей реализации используется коэффициент 2). Устанавливается четкое соответствие между доменным слоем и уровнем квадродерева: все ранговые блоки этого уровня сравниваются только с блоками определенного доменного слоя. Доменные блоки в слое могут накладываться друг на друга, соответственно шаг размещения доменных блоков может быть фиксированным или относительным (в нашей реализации используется относительный, равный четвертой части размера доменного блока). Доменные блоки, полученные на этом шаге, будем называть оригинальными доменными блоками.
2. Каждый оригинальный доменный блок сжимается до размера рангового блока в соответствующем уровне квадродерева. Полученные блоки помещаются в соответствующий слой.
3. К полученным на предыдущем шаге доменным блокам применяются аффинные трансформации, такие как:
- поворот на 90 градусов;
- поворот на 180 градусов;
- поворот на 270 градусов;
- отражение относительно вертикальной оси;
- отражение относительно горизонтальной оси;
- отражение относительно главной диагонали;
- отражение относительно второстепенной диагонали.
Полученные доменные блоки помещаются в соответствующий слой. Блоки, полученные на шагах 2 и 3 данного алгоритма, будем называть производными доменными блоками.
II. Создание квадродерева. Кодируемое изображение покрывается сеткой непересекающихся ранговых блоков максимально допустимого размера (он передается в качестве входного параметра алгоритма). Для каждого выполняются следующие шаги:
1. Ранговый блок сравнивается с каждым доменным блоком из соответствующего доменного слоя (соответствие устанавливается так, чтобы размер рангового блока совпадал с размером доменных блоков в слое):
1.1. Подбираются значения контраста (s) и яркости (o), обеспечивающие минимальное различие рангового и доменных блоков:
(1)
Минимум достигается, когда частные производные функции выше по sи oравны 0.Это возможно при [3]
;
Где
;; di
-i-я точка доменного блока; ri-i-я точка рангового блока.
1.2. Параметры контраста и яркости, полученные на предыдущем шаге,применяются к доменному блоку и вычисляется расстояние между ранговым и доменным блоками по формуле (1).
2. Запоминается наиболее близкий доменный блок и расстояние до него.
3. Если текущий ранговый блок расположен не на максимальном уровне квадродерева, то выполняются следующие шаги:
3.1. Блок разбивается на 4 дочерних ранговых блока, для каждого из которых повторяются шаги 1-3.
3.2. Суммируется расстояние до наиболее близких доменных блоков дочерних ранговых блоков и сравнивается с аналогичным показателем родительского рангового блока. Если последний меньше, то дочерние узлы удаляются, текущий ранговый блок становится листовой вершиной квадродерева.
III. Сохранение фрактального кода. Совершается последовательный обход квадродерева, для каждой листовой вершины сохраняются (например, в CSV-файл) следующие параметры:
- координаты рангового блока;
- размер рангового блока;
- координаты оригинального доменного блока;
- размер оригинального доменного блока;
- набор трансформаций, примененных к оригинальному доменному блоку.
Если внимательно присмотреться к данному алгоритму, то можно заметить, что он подразумевает размещение в памяти доменного пула на все время кодирования. Какого же размера может достигать доменный пул? Допустим, мы кодируем изображение в градациях серого, на хранение каждого пикселя используется 4 байта (стандартная длина типа данных intв наиболее распространённых языках программирования). Обозначим через размер доменного пула в байтах, через - размер i-го слоя доменного пула в байтах.Тогда
.(2)
Здесь n - максимальная глубина квадродерева;
, (3)
где - количество доменных блоков в i-м слое доменного пула; - размер рангового блока на i-й глубине квадродерева (равен размеру доменного блока в i-м слое доменного пула).
, (4)
где - количество используемых трансформаций; - количество оригинальных доменов для i-го слоя доменного пула.
, (5)
где -функция округленияx до ближайшего целого в меньшую сторону; - исходный размер кодируемого изображения; - шаг размещения доменных блоков.
На основе формул (2 - 5) был рассчитан размер доменного пула для изображения размером 512 x 512 (таблица).
Таблица. Размер памяти, занимаемой под доменный пул, для изображения 512x512
1 |
512 |
8 |
32 |
7 |
3,249 |
25,992 |
106,463,232 |
|
2 |
4 |
16 |
14,641 |
117,128 |
119,939,072 |
|||
3 |
2 |
8 |
62,001 |
496,008 |
126,978,048 |
|||
Итого |
79,891 |
639,128 |
353,380,352 |
Также был рассчитан размер доменного пула для изображений размером от 128x128 до 512x512.Получившийся тренд представлен на рис. 1.
Из представленных данных легко сделать вывод, что для кодирования одного изображения размером 512x512 потребуется ~ 350 MB оперативной памяти, что очень много даже по современным меркам.
С другой стороны, шаги 1.1 и 1.2 представленного алгоритма являются очень тяжелыми в вычислительном смысле. Так, кодирование изображения размером 256x256 с максимальным размером рангового блока 32 пикселя и максимальной глубиной квадро-дерева 3 (на компьютере с процессором IntelCorei3 (2 ядра, 2.40GHz) и объемом оперативной памяти 4GB) заняло 1442767 миллисекунд (~24 минуты) (испытуемая реализация по максимуму использовала кеширование, никакое значение не вычислялось два раза).
Размещено на http://www.allbest.ru/
Итак, как показано выше, классический алгоритм фрактального кодирования требует большого объема оперативной памяти и выполняется неприемлемо долго. Для решения этих двух проблем предлагается использовать перцептивное хеширование [4]. Идея заключается в следующем: вместо того чтобы хранить куски изображений в доменных и ранговых блоках, достаточно хранить короткий хеш блока и осуществлять над ним в процессе кодирования операцию сравнения для выяснения близости доменных и ранговых блоков. Для сравнения можно использовать расстояние Хэмминга. Если хеш будет достаточно коротким (например, 64 бита), это очевидным образом сократит объем занимаемой памяти и уменьшит время кодирования.
Рассмотрим один из возможных алгоритмов получения перцептивного хеша для доменного/рангового блока изображения:
Размещено на http://www.allbest.ru/
Размер блока уменьшается до размера 8x8.Можно использовать обычный алгоритм, когда вместо четырех соседних пикселей получается один усредненной интенсивности.
1. Вычисляется среднее значение интенсивности для блока 8x8.
2. Каждому пикселю блока сопоставляется бит: если интенсивность пикселя больше средней - 1, в противном случае - 0.
3. Из полученных на шаге 3 значений создается 64-битный хеш.
Алгоритм достаточно простой (но не единственно возможный), что должно обеспечить приемлемое время кодирования. Сначала проводились эксперименты по проверке корректности алгоритма: было взято изображение размером 256x256 в градациях серого, закодировано, а затем декодировано. Результат проверки алгоритма представлен на рис. 2. Возможно, для применения в области сжатия изображений точность недостаточная, но для задач распознавания вполне пригодная, так как здесь более важно, чтобы фрактальный код верно передавал структуру кодируемого изображения. Далее проводились сравнительные замеры времени кодирования одних и тех же изображений с помощью классического алгоритма и хеш-функции (использовались одни и те же максимальный размер рангового блока, максимальная глубина квадродерева). Результаты представлены на рис. 3. Так, кодирование изображения 256x256 заняло всего 84 секунды, что примерно в 17 раз лучше показателей классического алгоритма.
Если посмотреть на график, то можно увидеть, что с увеличением размера изображения эффективность алгоритма на основе перцептивных хешей, по сравнению с классическим, только увеличивается.
Размещено на http://www.allbest.ru/
Таким образом, классический алгоритм фрактального кодирования изображений требует большого количества вычислительных ресурсов - как процессорного времени, так и оперативной памяти. Обойти данную проблему можно, отказавшись от сравнения непосредственно каждого пикселя ранговых и доменных блоков и перейдя на использование в этих целях перцептивных хешей. Представленные результаты экспериментальных замеров подтверждают сделанное предположение, показывая прирост в производительности на 1-2 порядка.
Список литературы
1. Jacquin, A.E.Fractal image coding: A review / A.E. Jacquin // Proceeding of the IEEE. - 1993. - Vol. 81.-№. 10.-P. 1451-1456.
2. Welstead, S. Fractal and wavelet image compression techniques / S. Welstead // SPIE Press.-1999.
3. Гулаков, В.К. Методы распознавания изображений на основе фрактального кодирования / В.К. Гулков, С.Б. Клепинин // Вестн.Брян. гос. техн. ун-та. - 2012. - №4(36). - С. 54 - 61.
4. Zauner, C. Implementation and Benchmarking of Perceptual Image Hash Functions / C.Zauner// Hagenberg. - 2010.
5. Гулаков, В.К. Многомерные структуры данных: монография / В.К. Гулаков, А.О. Трубаков. - Брянск: БГТУ, 2010. - 387 с.
Материал поступил в редколлегию 11.08.14.
Размещено на Allbest.ru
...Подобные документы
Методы кодирования изображения: кодированием длины серии, частотно-зависимое кодирование, метод Лемпеля-Зива. Размер строки при 16-битном цвете. Расчет размера всего исходного изображения. Примеры качественного и некачественного сжатия изображения.
презентация [2,0 M], добавлен 22.10.2013Методы арифметического кодирования. Основные функции программ, реализующие алгоритмы кодирования по методам Хаффмана, Голомба, Фибоначчи и Элиаса. Разработка программно-аппаратных средств оптимального арифметического кодирования и их экономический расчет.
дипломная работа [1,1 M], добавлен 26.05.2012Створення алгоритму фрактального стиснення з втратами для зображень. Основні принципи методу, його обґрунтування та алгоритм реалізації. Характеристика типової схеми фрактального стиснення. Побудова алгоритму, його представлення та афінне перетворення.
курсовая работа [932,1 K], добавлен 10.07.2017Появление технических систем автоматического распознавания. Человек как элемент или звено сложных автоматических систем. Возможности автоматических распознающих устройств. Этапы создания системы распознавания образов. Процессы измерения и кодирования.
презентация [523,7 K], добавлен 14.08.2013Определение понятий кода, кодирования и декодирования, виды, правила и задачи кодирования. Применение теорем Шеннона в теории связи. Классификация, параметры и построение помехоустойчивых кодов. Методы передачи кодов. Пример построения кода Шеннона.
курсовая работа [212,6 K], добавлен 25.02.2009Компьютерная графика как инструмент для синтеза (создания) изображений. Характеристика векторного, растрового и фрактального типов представления изображений, трёхмерная графика. Интерфейс программы "Photoshop", пример работы по коррекции фотографий.
курсовая работа [4,5 M], добавлен 19.01.2011Положения алгоритмов сжатия изображений. Классы приложений и изображений, критерии сравнения алгоритмов. Проблемы алгоритмов архивации с потерями. Конвейер операций, используемый в алгоритме JPEG. Характеристика фрактального и рекурсивного алгоритмов.
реферат [242,9 K], добавлен 24.04.2015Понятие информации и основные принципы ее кодирования, используемые методы и приемы, инструментарий и задачи. Специфические особенности процессов кодирования цифровой и текстовой, графической и звуковой информации. Логические основы работы компьютера.
курсовая работа [55,8 K], добавлен 23.04.2014Принцип действия и назначение факсимильной связи, сферы ее применения, оценка преимуществ и недостатков. Сущность и особенности использования адресно-позиционного кодирования. Алгоритм программы сжатия и восстановления изображения по методу АПК.
курсовая работа [23,3 K], добавлен 16.04.2010Анализ эффективности способов кодирования. Средний размер одного разряда и средняя длина кодового слова. Кодирование по методу Хаффмена. Кодирование информации по методу Шенона-Фано. Построение кодового дерево для различных методов кодирования.
контрольная работа [491,4 K], добавлен 15.10.2013Фракталы как структуры, состоящие из частей, которые в каком-то смысле подобны целому, их классификация и разновидности. Алгоритмы фрактального сжатия изображений. Универсальные и векторные графические форматы, их отличительные характеристики и свойства.
презентация [192,7 K], добавлен 12.02.2014Разработка программы кодирования текстового файла при помощи блочного алгоритма шифрования ТЕА типа "Сеть Фейштеля", который основан на битовых операциях с 64-битным блоком и имеет 128-битный ключ шифрования. Результаты кодирования и декодирования.
лабораторная работа [299,9 K], добавлен 18.07.2013Сущность и содержание двоичного кодирования, цели и задачи, этапы реализации данного процесса, оценка его эффективности. Принципы и особенности кодирования чисел и символов, а также рисунков и звука. Используемые методы и приемы, применяемые инструменты.
презентация [756,5 K], добавлен 29.10.2013Анализ способов кодирования информации. Разработка устройства кодирования (кодера) информации методом Хемминга. Реализация кодера–декодера на базе ИМС К555ВЖ1. Разработка стенда контроля передаваемой информации, принципиальная схема устройства.
дипломная работа [602,9 K], добавлен 30.08.2010Методика разработки и механизм отладки программы на языке Лисп, реализующей криптографический алгоритм кодирования информации с открытым ключом – RSA. Математические и алгоритмические основы решения задачи, его программная модель, составление блок-схемы.
курсовая работа [675,7 K], добавлен 20.01.2010Компьютерная графика. Пиксели, разрешение, размер изображения. Типы изображений. Черно-белые штриховые и полутоновые изображения. Индексированные цвета. Полноцветные изображения. Форматы файлов. Цвет и его модели. Цветовые модели: RGB, CMYK, HSB.
реферат [18,1 K], добавлен 20.02.2009Разработка приложения, целью которого ставится преобразование черно-белых полутоновых изображений в цветные. Обзор методики обработки изображения, способов преобразования изображения с помощью нейронной сети. Описания кластеризации цветового пространства.
дипломная работа [6,3 M], добавлен 17.06.2012Анализ методов сверточного кодирования. Понятие канала связи и корректирующих кодов, характеристика автомата типа Мура. Особенности сверточного декодирования Витерби. Сущность разработки программного обеспечения системы кодирования сверточным кодом.
дипломная работа [4,9 M], добавлен 11.03.2012Сущность линейного и двухмерного кодирования. Схема проверки подлинности штрих-кода. Анализ способов кодирования информации. Расчет контрольной цифры. Штриховое кодирование как эффективное направление автоматизации процесса ввода и обработки информации.
презентация [1,1 M], добавлен 05.10.2014Представление информации в двоичной системе. Необходимость кодирования в программировании. Кодирование графической информации, чисел, текста, звука. Разница между кодированием и шифрованием. Двоичное кодирование символьной (текстовой) информации.
реферат [31,7 K], добавлен 27.03.2010