Технология автовекторизации точечных линий

Обсуждение бесплатной версии EasyTrace
Ответить
Григорий Степанов
Easy Trace – эксперт
Сообщения: 329
Зарегистрирован: 03 сен 2009, 11:13
Репутация: 64
Откуда: Россия, г.Рязань
Контактная информация:

Технология автовекторизации точечных линий

Сообщение Григорий Степанов » 17 сен 2010, 08:43

До недавнего времени точечные линии в Easy Trace векторизовались в ручном или полуавтоматическом режиме. Однако, они вполне поддаются и автоматической оцифровке. Как это делается можно увидеть в видеоролике Оцифровка точечных линий в Easy Trace Pro.

Технология оцифровки состоит из следующих шагов:

1. выделение специального "растра точек";
2. оконтуривание точек;
3. выделение окружностей из контуров точек;
4. преобразование окружностей в короткие штрихи;
5. сшивка коротких штрихов как отрезков линий без учёта направления.

Как следует из названия первого шага, основная задача при выделении растра это сохранение точек - качество выделенных линий не имеет значения. Есть ряд тонкостей:

Во-первых, чем выше разрешение растра (больше его DPI), тем ближе форма точек к кругу.

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

В третьих, выделяя чёрный растр точек, на заключительной стадии его обработки надо обязательно применить:

1. "Размытие" - диаметр маски равен половине диаметра точки, фактор 1.5. Это позволяет сгладить границы точек, приблизив их форму к круглой;

2. "Усиление резкости" - диаметр маски равен диаметру точек, фактор до 1000. Это позволяет "отклеить" точки, прилипшие к линиям или друг к другу;

3. Выделение тематических слоёв - отсечение по яркости, что окончательно отделяет точки от фона.

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

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

Четвертый шаг - преобразование окружностей в штрихи длиной 2-3 pix так, чтобы можно было воспользоваться опцией утилиты сшивки разрывов "Рассматривать линии как точки, если их длина не превышает …".

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

1. Сначала сшить наиболее достоверные участки линий. Для этого необходимо установить длину поиска продолжения чуть больше дистанции между соседними точками и допуск на угол схождения линий около 140 градусов;

2. Пройтись "векторной стёркой" по явным ошибкам ("мусорные" точки, ошибки сшивки в "тесных" местах);

3. Выполнить заключительную сшивку. Дистанция поиска 2,5 интервала между точками. Угол схождения отрицательный -20 градусов.


Для пользователей ранних версий

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

1. При выделении растра точек обязательно используется размытие + отсев по яркости для удаления мелких посторонних точек;

2. После выделения чёрный растр утоньшается (оскелечивается). Там, где были точки, остаются островки из 1-5 pix;

3. Применяется Масочный фильтр по стратегии "Штрихи из точек" с целью преобразования точек в штрихи;

4. Выполняется Автоматическая трассировка – Трассировка линий;

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

Далее, сборка линий из штрихов выполняется как описано для пользователей новых версий.

Однако у "старого" способа оцифровки точечных линий существуют некоторые недостатки. Дело в том, что после оскелечивания "свернутся" в точку может достаточно крупный, но округлый объект. В свою очередь, масочный фильтр преобразует в штрихи ЛЮБЫЕ пиксельные конгломераты, укладывающиеся в маску 3х3. Поэтому и возникает проблема, связанная с "лишними" точками, и как следствие необходимость их редактирования.
wws писал(а):Фраза "Пройтись «векторной стёркой» по явный ошибкам" фактически объясняет почему "Точечные линии обычно векторизуются в ручном или полуавтоматическом режиме."
Это не критика. :D Спасибо за справку. Вообще техподдержка в EasyTrace вызывает у меня пока только положимтельные эмоции. Так держать!

_________________
Навигационные карты Архангельской области
Рекомендация по правке ошибок имеет корни в проекте "Мурманская область". Там были пережатые JPEG растры и ВСЕ МЕСТА ПЕРЕСЕЧЕНИЙ РЕК И ИЗОЛИНИЙ (красный + синий = чёрный) порождали фантомные точки. Отсюда ошибки и рекомендация по сшивке в два приёма.

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

Способ, который мы предлагаем сейчас, основан на выделении точек как округлых объектов в заданном диапазоне диаметров. То есть отсев идёт как по форме (круглый не круглый) так и по диаметру (слишком большой \ маленький). Отсюда и высокая достоверность распознавания.

Даже на грязном серошкальном материале (растрах ВИСХАГИ) по этой технологии удалось "вытащить" линии с точность 90-95%. Причём растр был очень среднего разрешения. Ролик с этим пример выложим обязательно и довольно скоро. Думаю что не только ролик, но и пример проекта - что бы было можно проверить своими руками...

Ответить

Вернуться в «EasyTrace»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость