Векторизация растровых фрагментов раппортной композиции ткани
В задачах компьютерного зрения при анализе изображений зачастую необходимо выделять в изображении различные кривые (прямые, окружности и т.д.). Для решения данной задачи существует целое семейство методов, основанных на преобразовании Хафа. Теоретические возможности этого преобразования позволяют не ограничиваться плоскостью и дискретными кривыми, его можно применять для поиска кривых в облаке точек на плоскости или в многомерном пространстве. Однако практическое применение преобразования Хафа затрудняется высокой сложностью алгоритма, как по времени, так и по памяти, поэтому большинство модификаций метода направлено на его ускорение.
Целью курсового проекта является разработка приложения, позволяющего векторизовать растровые изображения методом Хафа.
Основная идея
Пусть дано облако точек в пространстве R m
и семейство параметрически заданных кривых
где F – некоторая функция, φ – вектор параметров семейства кривых, x – координаты точек из R m . Каждое значение φ определяет одну кривую, а все множество значений φ образует фазовое пространство Ф кривых данного семейства.
В силу конечного объема памяти и дискретного машинного представления мы не можем рассматривать каждое значение φ в отдельности, поэтому фазовое пространство Ф разбивается на ячейки, для чего вводится регулярная сетка с заданным шагом дискретизации. Каждой ячейке ставится в соответствие счетчик. Набор всех счетчиков называется аккумулятором. Любая ячейка задаёт множество кривых, а значение счетчика ячейки определяется количеством точек из облака X, лежащих хотя бы на одной из этих кривых. Тогда если все точки из X лежат на одной кривой с параметром φ0, то в соответствующей ячейке значение счетчика будет максимально.
Базовый алгоритм
Базовый алгоритм выделения кривых состоит из следующих шагов:
- Выбор сетки дискретизации. На этом этапе предстоит выбрать шаг дискретизации для каждого параметра кривой. От этого выбора будет зависеть объем вычислений и эффективность алгоритма.
- Заполнение аккумулятора (матрицы счетчиков). Зачастую это самый долгий шаг алгоритма, поскольку заполнение производится путем полного перебора. Сложность алгоритма напрямую зависит от первого шага и составляет O(N*M), где N – количество точек, M – количество ячеек аккумулятора.
- Анализ аккумулятора (поиск пиков). В матрице аккумулятора ищется счетчик с максимальным значением.
- Выделение кривой. Каждая ячейка аккумулятора есть значение фазового пространства, а значит, она задает некоторую (искомую) кривую. Но поскольку значение на шаге 1 стало дискретным, может потребоваться уточнение кривой каким-либо иным методом по уже найденным точкам кривой.
- Вычитание из аккумулятора. Для точек выделенной кривой создается временный аккумулятор, который затем поточечно вычитается из основного.
- Переход на шаг 3.
Проблемы метода
На шаге 1 мы выбираем сетку дискретизации. В связи с этим выбором возможны следующие проблемы:
- Сетка выбрана слишком мелкой. Тогда, если в исходном облаке точек присутствовал шум, то даже точки одной кривой будут попадать в разные ячейки сетки, а значит, потенциальный максимум аккумулятора (соответствующий этой кривой) будет размыт и его будет сложнее или вообще невозможно найти.
- Сетка выбрана слишком крупной. Тогда существует вероятность того, что в одну ячейку попадут точки, лежащие на разных кривых.
- При любой сетке дискретизации, если точки облака X образуют кривую с параметром φ0, лежащим на границе ячейки, то из-за шума точки этой кривой будут попадать в соседние ячейки, и будет наблюдаться размытие пика в аккумуляторе. Это вообще фундаментальная проблема дискретизации.
Читайте также: Фурнитура для ткани в новосибирске
Заполнение аккумулятора на шаге 2 является самой трудоёмкой частью алгоритма, сложность которой зависит от размерности фазового пространства и сетки дискретизации. Чем больше размерность Ф и меньше сетка, тем больше ячеек в аккумуляторе. Значит, тем больше требуется памяти и времени для его хранения и заполнения. Именно поэтому на практике чаще всего фазовое пространство представляет собой плоскость, а преобразование Хафа применяется в основном для поиска прямых на плоскости.
Модификации метода
В связи с вышеперечисленными проблемами были разработаны модификации стандартного алгоритма (Standard Hough Transform).
Комбинаторное преобразование Хафа (Combinatorial Hough Transform)
Эта модификация разрабатывалась для быстрого поиска прямых линий на изображении. В таком случае у нас имеется плоское бинарное изображение (на нём точки интереса одного цвета, а точки фона другого). Поскольку производится поиск прямых линий, то размерность фазового пространства равна 2.
Идея метода состоит в изменении шага 2 (заполнение аккумулятора):
- Исходное бинарное изображение разбивается на небольшие участки.
- В каждом участке для каждой пары точек определяются параметры (ρ, θ) прямой, проходящей через эти точки.
- (ρ, θ) попадают в некоторую ячейку, и её счетчик соответственно увеличивается.
Первый шаг модификации необходим для сокращения числа переборов.
Если точек в участке мало и сетка дискретизации фазового пространства тоже мала, количество записей в аккумуляторе получается меньше.
Иерархическое преобразование Хафа (Hierarchical Hough Transform)
Это еще одна модификации для поиска линий на бинарном изображении.
Идея метода:
- Исходное изображение разбивается регулярной сеткой.
- В каждом фрагменте изображения выделяются прямые преобразованием Хафа.
- Производится иерархическое слияние найденных прямых. На каждом уровне рассматриваются 4 соседних фрагмента. Линии, выделенные в каждом из фрагментов, объединяются на основании преобразования Хафа для объединения фрагментов. Если линии не удалось слиться ни с одной линией соседних фрагментов, то она удаляется из рассмотрения.
- Слияние производится до получения одного исходного изображения.
В результате сложность алгоритма снижается за счет разбиения изображения (можно использовать более грубую сетку в фазовом пространстве).
Недостаток в том, что одна длинная линия может быть в результате представлена несколькими близкими линиями, поскольку разные концы отрезка могут быть неколлинеарными при близком рассмотрении, то есть на низких уровнях иерархического слияния.
Адаптивное преобразование Хафа (Adaptive Hough Transform)
Эта модификация позволяет использовать меньше места для хранения аккумулятора и быстрее выделять кривые. На протяжении всего процесса поиска используется аккумулятор заранее выбранного маленького размера, например, 9*9 или 3*3*3*3 в многомерном случае.
Алгоритм выглядит следующим образом:
- Задаем небольшой размер аккумулятора.
- До достижения заранее заданного размера ячейки в цикле уменьшать на каждой итерации размер ячейки.
- Заполнение аккумулятора. Выполняется, как и в стандартном варианте, но сложность за счет маленького размера аккумулятора существенно меньше.
- Поиск ячейки с максимальным значением счетчика.
- Ячейка принимается за новое фазовое пространство, переход на шаг 2. Таким образом, мы уменьшаем шаг дискретизации, но только в области интереса (в ячейке с максимальным счетчиком).
- Выделяем кривую.
Читайте также: Какая ткань подходит для штор в беседка
Главными достоинствами являются:
- меньшая сложность по времени и по памяти;
- практическое решение проблемы дискретизации, поскольку сетка дискретизации не регулярная и на каждой итерации уточняется.
Если исходное облако точек X образует несколько кривых из заданного семейства, то для выделения каждой необходимо повторить весь алгоритм сначала (предварительно выкинув из рассмотрения точки уже выделенных кривых).
Вероятностное преобразование Хафа (Probabilistic Hough Transform)
В этой модификации алгоритма рассматривается только доля α точек из X, при этом результат с некоторой вероятностью получается такой же, как и у стандартного алгоритма. Доля точек выбирается случайно с равномерной вероятностью.
Показано, что существует αthreshold, такое, что при α > αthreshold ошибок (относительно стандартного алгоритма) происходит очень мало, а при α vElement;
>;
class IObj
;
class TLine: public IObj
TLine()<>
void create(IObj*& aObj)
int find(SPoint*, const unsigned int&, const int&, void**);
void SelectFromPS(int);
void draw(Graphics::TBitmap*)<>
protected:
int find(SPoint*, const unsigned int&, const double&, const float&, int&);
// Вектор vLine хранит распознанные прямые
vector vLine;
float** pParamSpace;
int Arc, H;
float darc, dh;
>;
class TArc: public IObj
TArc()<>
void create(IObj*& aObj)
int find(SPoint*, const unsigned int&, const int&, void**);
void SelectFromPS(int);
void draw(Graphics::TBitmap*);
protected:
find(SPoint* p_pi, const unsigned int& n, const int& dH, const int& R);
float** pParamSpace;
int H;
int Rtemp;
float dh;
// Вектор vArc хранит распознанные окружности
vector vArc;
>;
Пример
Перед распознаванием посредством стандартного диалога «Файл открыть» указывается файл, содержащий распознаваемые образы (рис. 1).
Рис. 1. Распознавание прямых
Далее необходимо выбрать тип распознаваемых образов и указать, сколько образов должно быть найдено в рисунке (рис. 2).
Рис. 2. Параметры распознавания
Также есть возможность сохранять полученное фазовое пространство в формате XMCD для дальнейшего анализа. На рис. 3 средствами MatCad показано фазовое пространство рассматриваемого примера.
Рис. 3. Фазовое пространство, отвечающее рис. 1
Читайте также: Вязание с тканью бохо
В следующей версии планируется добавить
- динамическую загрузку распознаваемых элементов;
- автоматическое определение количества элементов.
«Раппорт как часть орнамента»
Мастер-класс рассчитан на детей с 10 лет.
Цель: организовать деятельность обучающихся в освоении построения раппорта и в последствии орнамента.
Задачи:
- Формировать знания и умения в освоении построения, составления раппорта;
- Воспитывать аккуратность в работе;
- Воспитывать трудолюбие, точность;
- Развивать индивидуальный подход к творческой деятельности;
- Развивать глазомер, моторику мышц руки;
- Развивать способность сравнивать и анализировать.
Наглядные пособия: Образцы, схемы построения раппорта; образцы орнаментальных композиций обучающихся прошлых лет.
Ведущие понятия: Композиция, раппорт, орнамент, симметрия, элемент.
Оборудование и материалы: компьютер, плакаты, бумага для черчения формат А3, линейка, циркуль, карандаши, ластик, фломастеры, гуашь.
Ход мастер-класса:
- Сообщение плана и целей мастер-класса.
- Проверка готовности детей к мастер-классу.
- Объяснение нового материала.
- Практическая работа.
- Итог работы.
Объяснение нового материала.
Раппорт – конструктивный элемент орнамента.
Среди многообразия орнаментальных композиций чаще всего встречаются раппортные композиции с открытой структурой, в которых тот или иной орнаментальный мотив (простой или более сложный) периодически повторяется через одинаковые интервалы в горизонтальном или вертикальном направлениях. Наибольшее распространение раппортные рисунки получили при орнаментации тканей, а также в архитектурном декоре и облицовочной проливной керамике.
Раппортом называется минимальная площадь повторяющегося рисунка, включающая мотивы и расстояние до соседнего мотива.

Закономерное повторение раппорта по горизонтальным и вертикальным рядам образует раппортную сетку — конструктивную основу рисунка.
Такой раппорт получил название сплошного сетчатого или коврового раппорта (ковры, ткани, мозаика, обои и т. п.).
В нем мотив вписан в прямоугольную или наклонную сетку, т. е. в прямоугольник или ромб. При соединении разных фигур или при более сложных фигурах, в которые вписаны мотивы, орнамент переходит в арабесковый.

Творческий процесс создания раппортного рисунка начинается с разработки орнаментального мотива.
Часто встречается необходимость раппортного повторения рисунка не в двух направлениях, а только в одном. Это так называемый ленточный раппорт: мотив закономерно повторяется только в одном направлении, образуя вертикальные или горизонтальные орнаментальные ряды. Например, ткани с каймовым рисунком, декоративные всевозможные обрамления, полосы, филенки и т. п. Мотивы чаще всего вписываются в прямоугольник или ромб; в случае ленточных обрамлений сложных фигур, многоугольных или круглых, мотив может быть вписан в трапецию.

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

Этапы практической работы мастер-класса
Выполнение чертежа при помощи линейки, циркуля и карандаша. Схемы раппорта. Подбор мотива.



Проработка мотива в цвете при помощи фломастеров, карандашей или красок (гуашь, акварель)
Выполнение чистового варианта

.jpg)

Итоговые работы проведенного мастер-класса.


Преподаватель: Жарикова Анна Владимировна, МКОУ ДОД «Детская школа искусств №3»,
- Свежие записи
- Балкон в многоквартирном доме: является ли он общедомовым имуществом?
- Штраф за остекление балкона в 2022: что это и как избежать наказания
- Штраф за мусор с балкона: сколько заплатить за выбрасывание окурков
- Оформление балконного окна: выбираем шторы из органзы
- Как выбрать идеальные шторы для маленькой кухни с балконом
- Правообладателям
- Политика конфиденциальности
Мастерица © 2023
Информация, опубликованная на сайте, носит исключительно ознакомительный характер
