Текущее время: Вт окт 24, 2017 10:25 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
СообщениеДобавлено: Вт окт 05, 2010 10:26 am 

Зарегистрирован: Вт окт 05, 2010 10:18 am
Сообщения: 6
Требуется автоматическое распознавание сетки нестандартного размера и характера искажений. Сетка не из картографии, но задача распознавания полностью идентична ...
Есть искаженная сетка с квадратными ячейками и есть правильный образец. Нужно восстановить растр учитывая исправления трансформацию сетки.
Нужна консультация- по условиям жду предложений. я не специалист в Easy Trace, упроки не помогли. Нужна пошаговая инструкция
Заранее благодарен , Дмитрий
ссылка на картинку прилагается ICQ 337445072
arhi3d(@)yandex.ru


Вложения:
сетка-нужная.jpg
сетка-нужная.jpg [ 111.09 Кб | Просмотров: 7110 ]
сетка-нужная2.jpg
сетка-нужная2.jpg [ 102.47 Кб | Просмотров: 7110 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт окт 05, 2010 10:29 am 

Зарегистрирован: Вт окт 05, 2010 10:18 am
Сообщения: 6
Вместо сетки может быть массив пронумерованых точек распологающихся в местах пересечения линий, но тогда нужен алгоритм идентификации имени и координат точек с образцами


Вложения:
точки 3.jpg
точки 3.jpg [ 2.64 Мб | Просмотров: 7109 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт окт 05, 2010 10:47 am 
Site Admin

Зарегистрирован: Пн авг 11, 2003 10:03 am
Сообщения: 266
Откуда: Easy Trace Group
Для начала. в пост лучше вложить фрагмент оригинального растра и его характеристики (размер, dpi, формат).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт окт 05, 2010 1:13 pm 

Зарегистрирован: Вт окт 05, 2010 10:18 am
Сообщения: 6
Дело в том что если сделать шаблон -файл для исправления сетки которую я уже выложил, то автоматически и оригинальный растр( то что нужно) будет исправлено...ТОесть исправите эту сетку- значит и растр тоже исправится.
Спасибо что ответили оперативно. Очень надеюсь на плодотворное сотрудничество. От его результатов очень зависит и будущее моего проекта и вашей программы Easy Trace


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт окт 05, 2010 3:53 pm 
Site Admin

Зарегистрирован: Вт мар 18, 2003 3:36 pm
Сообщения: 338
Откуда: Easy Trace Group
Распознать такую "сетку" наша утилита не сможет - она умеет работать с прямоугольными сетками, которые искажены в результате сканирования, усыхания растра и т.д.
Если искажения носят параболический характер, можно попробовать для начала трансформировать растр с помощью квадратичного преобразования. Т.е. привязать растр по произвольному набору точек, выбрать квадратичное преобразование и задать 6 опорных точек с известными целевыми координатами. Возможно, это несколько выпрямит растр - настолько, что линии станут почти прямыми и их сможет распознать утилита.
Кроме того, просто руками расставить все узлы для локально-аффинного преобразования - работы минут на 15, при небольшом опыте и с использованием функций автоподачи. Однако, следует сказать, что локально-аффинное преобразование полностью сетку не распрямит - поскольку все же линейное. Т.е. узлы-то будут стоять на местах, а вот ребра будут извиваться аки змеи. Насколько сильно они будут отклоняться от прямых - нужно пробовать, но очевидно, что линейным преобразованием нелинейные искажения убрать не удастся.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср окт 06, 2010 10:11 am 

Зарегистрирован: Вт окт 05, 2010 10:18 am
Сообщения: 6
По телефону я говорил что сетка будет в реале состоять из десятков тыс ячеек....как вы собираетесь раставлять столько точек вручную..ислючено
вы сами сказали что можно векторизировать и в точках пересечения линий поставить вершины и по этим вершинам уже как по опорным точкам выпрямлять....Тут проблема только одна- нужно чтобы в прямая сетка с координатами вершин имела те же имена вершин что и искривленная...тоесть нужно чтобы программа автоматически привязала вершины и выпрямила сетку сведя их друг с другом


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср окт 06, 2010 10:42 am 
Site Admin

Зарегистрирован: Вт мар 18, 2003 3:36 pm
Сообщения: 338
Откуда: Easy Trace Group
Насчет десятков тысяч точек я не помню, возможно, упустила.
Да, линии можно векторизовать и получить точки в узлах. Однако прямого способа отделить именно эти точки в программе сейчас нет (там ведь будут и другие точки - просто вершины этих кривых). Но это только одна проблема. И ее можно попытаться решить с помощью оптимизации топологии - редуцировать линии так, чтобы остались одни узлы (они по-любому останутся неподвижными).

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

Понятно, что алгоритмически задача сопоставления так или иначе решаема, особенно, если понимать, откуда ноги растут. Однако зачем это делать в рамках Easy Trace - большой вопрос. Уж больно специфична задача.

Теоретически можно попытаться решить задачу сопоставления отдельно: получить из Easy Trace координаты реальных узлов кривой сетки на растре, выполнить сопоставление с известными и породить текстовый файл пар точек (CPT), который подсунуть Easy Trace при коррекции растра. Однако тут встает вопрос, справится ли наша коррекция с сеткой из десятков тысяч узлов. И ответить на него я не могу: до сих пор мы сталкивались максимум с несколькими сотнями.
Ну и, разумеется, не стоит забывать о ранее сказанном - весьма спорном применении локально-аффинного преобразования к исправлению таких сильных нелинейных искажений.

Если говорить о задаче в чистом виде, вне контекста Easy Trace, я бы решала ее примерно так: выяснить тип искажений - полином, скажем, 2 или 3 степени, затем определить параметры этого полинома по нескольким точкам (зависит от степени полинома) и применить к растру соответствующее преобразование.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср окт 06, 2010 11:29 am 

Зарегистрирован: Вт окт 05, 2010 10:18 am
Сообщения: 6
Из разговора с вашим коллегой я понял что можно векторизировать линии сетки и программа может определить их пересечение и на этом месте поставить точку.
Если это так , то проблема идентификации соответствий точек решена будет легко.
Достаточно посчитать в каком ряду (по линии) находится искомая точка и сверить с позицией ее прототипа на другой сетке (которяа может быть предварительно распознана и обозначена тем же способом)
Ну а получив нужные имена всех точек на обоих сетках и их координаты думаю не трудно произвести трансформацию уже существующими способами опорных точек, только не в ручном а автоматическом режиме


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср окт 06, 2010 11:39 am 

Зарегистрирован: Вт окт 05, 2010 10:18 am
Сообщения: 6
по поводу алгоритма распознавания сетки с коректировкой растра...Возникает резонный вопрос если у вас получается сносно исправлять в диапазоне до 7 пикс..почему нельзя расширить эту зону
Понятно что тут будут допущения..
Могу только сказать что помехи в пределах 5-10% от площади самого квадрата -сетки допустимы


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср окт 06, 2010 12:18 pm 
Site Admin

Зарегистрирован: Вт мар 18, 2003 3:36 pm
Сообщения: 338
Откуда: Easy Trace Group
Тут у нас некоторая путаница в понятиях...
Алгоритм распознавания сетки никакого отношения к коррекции растра не имеет - это отдельные утилиты.
Вопрос насчет допуска совершенно не резонный - не все определяется размером допуска. Линии вашей искаженной сетки принципиально не похожи на прямые ни при каком допуске.
Насчет идентификации точек - вы поняли не совсем правильно. Программа может автовекторизовать линии, и в местах пересечения линий действительно будут - но не точки! - а вершины, которые ничем не отличаются от других вершин векторизованных линий. Вы ведь не думаете, что такие кривые будут представлены парой точек? Их будет много, в зависимости от заданной гладкости. И чтобы отделить один вершины от других (по факту их общности или как-то еще) - нужно предпринимать дополнительные усилия - по программированию.
Насчет "достаточно посчитать в каком ряду" - ну да, я уже говорила, что написать это можно, прослеживая каждую линию, выстроить точки вдоль нее. Вопрос в том, кто это будет писать и зачем.

Давайте уж расставим точки над Е:
Может ли программа в своем нынешнем виде выполнить поставленную задачу? - НЕТ
Можно ли с привлечением дополнительного программирования эту задачу решить? - ДА
Будут ли наши разработчики этим заниматься? - НЕТ

Я не знаю ни какова на самом деле ваша задача, ни каковы ваши возможности, но если вопрос стоит серьезно, то еще раз повторю, что не слишком сложно написать отдельную программу, которая будут перерабатывать данные, полученные от Easy Trace, и готовить для Easy Trace опорные точки. Но это не к нам.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт окт 07, 2010 8:54 am 
Site Admin

Зарегистрирован: Пн авг 11, 2003 10:03 am
Сообщения: 266
Откуда: Easy Trace Group
Tatiana писал(а):
Да, линии можно векторизовать и получить точки в узлах. Однако прямого способа отделить именно эти точки в программе сейчас нет (там ведь будут и другие точки - просто вершины этих кривых).

Насчёт точек пересечений дело обстоит несколько иначе. После векторизации сетки, достаточно выполнить утилиту "Проверка топологии" что бы найти все узлы сетки.

Затем, утилитой "Преобразование объектов" пометки ошибок, отмечающие найденные узлы, преобразуются в точки. Так что создать массив точек/перекрестий сетки не проблема.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт окт 07, 2010 9:13 am 
Site Admin

Зарегистрирован: Вт мар 18, 2003 3:36 pm
Сообщения: 338
Откуда: Easy Trace Group
Да, верно, эту возможность я упустила. Но это решение только первой части - выделить точки; в целом проблему это не решает.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
phpBB SEO