powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм поиска контура по набору координат
16 сообщений из 66, страница 3 из 3
Алгоритм поиска контура по набору координат
    #39878266
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь за дидактичность:
Хочу ещё пару слов к постановке. Это одинаково относится и к вопросу ТС, и к моей цели.
Сейчас мы немножко в положении. Я перейду на терминологию рисунков.
Нам сказали: "Мы превратили полутоновый рисунок в ч/б. Качественно или плохо, это наша проблема.
Мы хотим теперь минимально оконтурить, чтобы вырезать только рисунок, отбросив лишнее. Вот вы нам оконтурьте, по своим соображениям, не зная исходной фигуры, на которую это д.б. похоже, не зная будущих способов использования вырезки, не зная в какой области на самом деле будет применён алгоритм.
А мы ваше качество оценим (наверное глазками), ибо мы знаем, что может быть, и примерно поймём, качественно это сделано или нет."

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

Если меньше лирики:
- модель (пусть даже их 2-3) должна быть обоснованно адекватна предметной области
- какие-то показатели качества д.б. (мы пока не уверены, на что ориентироваться, даже если не существует "рисунка"-оригинала, показатели качества могут исходить из представлений о предполагаемом использовании)
- какие-то формализованные ограничения д.б.
- оценка кол-ва точек (10^2, ^3, ... ^1000 ...)
- серийность задачи (если нужно только одинажды, то может ручками просто? а сказать, что автоматически).
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878352
xMailer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98xMailerУпорядочить вершины по полярному кругу не получилось. а) Почему?
центр для определения угла я определил как
xc = sum(x)/count(x)
yc = sum(y)/count(y)
вес для сортировки относительно центра
angle = atan2(cx - x, cy - y)

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

Отверстий в фигуре в данной задаче не предусматривается
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878354
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Навскидку неск. подходов к показателям качества. От них же можно строить ограничения. Либо наоборот.
- числовой (%точек ...)
- площадной (%площади, макс и мин ширина/площадь разных участков)
- линейный (длина, ширина, периметр, их соотношения ...)
- статистический (М, Д, Д2, Д3 ... плотности, %ошибок, любые фантазии, вкл. корреляции чего-либо)
- когнитивный (похоже на ..., включает в себя ..., формируется из ...)
- оптимизационный (мин/макс некой ф-ции)
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878369
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xMailer, а зачем сортировка, послед-сть соединения вершин? а полученный граф из оставшихся точек на что?
Если полученное кач-во достаточно, то, определившись наобум с первой точкой, проложить путь на графе до всех соседей (из оставшихся). И так далее, по типу перебора в ширину.
А в глубину придётся "8"-ки специально обрабатывать.

С учётом 8-к сделать и нумерацию по мере прокладки на графе. В принципе она не линейно-кольцевая, а древовидно-кольцевая.

Кста, ещё показатель кач-ва. В мат-ке он называется что-то вроде индекс вектора вдоль участка кривой. Вычисляется как кол-во оборотов (касательной или нормали). + и - друг друга аннулируют. ИМХО, лучше вычислять "плавающий индекс", на нек-ром кол-ве точек, чтобы не прозевать сильно изъгибистые участки.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878374
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xMailer,
правда я до сих пор не понял, как ограничение по радиусу помогает выявить нужные точки. По-моему, если константа, то только мешает. Взять синусоиду, пару периодов. Центр масс у неё в середине. При константе выкинем всё, что близко к центру, и как с ними тогда тогда соединиться?
Возможно, что выявить методом 1-ранговости все, а из них взять только дальние.

На графе от точки к точке двигаться по периметру. И кста, из графа лучше ничего не выкидывать.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878375
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дополнюexp98 выявить методом 1-ранговости все, а из них взять только дальние.Остальные окучить выпуклой оболочкой. Но это скорее всего не то, что нужно.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878390
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AklinДелайте тестовые сценарии, попробую написать, что придумал...Можно потренироваться на этом рис. На тему выделения движущихся "объектов" У него отрезать нижнюю половину, бинаризовать, а тёмный треугольник под крылом допилить 2-мя способами:
- чтобы появился остров
- чтобы это оказалось полуостровом поизгибистей.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878525
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xMailer,
мне показалось, что вы хотите ограничить снизу толщину фигуры. Например, чтобы не было слишком тонкой талии.
Метода радиус-векторов часто не прокатывает. Приходит мысль измерять толщину в целом кол-ве клеток (dx<x0 OR dy<y0). Но тогда это делается уже постфактум.
Детектировать нетрудно, а вот ... о способе исправления пока глубоко не задумывался.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878526
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98AklinДелайте тестовые сценарии, попробую написать, что придумал...Подожду пример от мэйтона )) Правда у него ожидается односвязная область.
Эй. Что это за тоталиатор? Я ничего космического не обещал.

P.S. Soryan за остуствие. У меня полетел Wifi адаптер и я конфигурил новый. Какой-то китайский Netis.
Зато двухдиапазонный.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878531
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton У меня полетел Wifi адаптер и я конфигурил новый
Ты же взрослый дядька со взрослым компом, протяни уже провод от роутера (перфоратор на прокат можно взять)
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878536
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уже пофиксил.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878544
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По ящикам. На картинке есть груз ящиков по форме буквы Е.

Тривиальная упаковка говорит что надо исключить центральный ящик из привязки. Но мы видели
что в первом посту у автора есть сложная привязка которая учитывает экстремальные точки
внутренних ящиков.

Помогите определить включать ли внутренний ящик. И как.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878722
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из тех крох, что нам известны, у меня имхо, что надо бы к 2 вершинкам срединной перекладины притянуть.

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

2)Почему именно прямоуг-ки? хр3 - это вопрос. Автор нарисовал сетку, мэйтон - нет . Для сетки проще строить граф - вся разница. На самом деле для односвязной (пусть и с дырами) оласти у меня уже практически до конца сложилось в голове. Есть варианты,но они зависят от постановки. Поэтому именно к авторской задаче мой интерес уже испаряется. Её я считаю решённой, ну а кодить ... похожее уже кодил макет 5 лет назад, но тогда постановка была достаточная, и автор всерьёз интересовался.

3) Единственное, чего не могу ТСу однозначно рекомендовать - метод игнорирования слишком глубоких впадин. Вопрос фигня, но метод геометрический и итерационный, если делать по науке, сглаживая окрестностями с целью получить серединку хребта. Наверняка уже есть дискретные способы. Скажем, создать матрицу, охватывающую все точки по Х и У. Да и вообще, неплохо провести предварительный разведочный анализ исходной конфигурации заради параметров алгоритма, "эллипсоида рассеяния" фигуры, степени симметричости и пр.

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

а) геометрию перевести в граф
б) построить полный контур, какой бы извилистый он не был. Например методом 1-ранговых вершин. Начать можно практически с любой точки (правда потом по мере выбрасывания вершин из пути придётся начало передвигать).
в) аналитически(не знаю уж как) или по мере обхода периметра замерять текущую ширину (тем самым методом (3)) и, если она маленькая удалиьт из пути именно эту вершину, вернуться к предыдущей и соединить её со след-щей. Соединение происходит по некому правилу (непосредственный отрезок или нет).
г) Может получиться, что оставшаяся часть фигуры вся недостаточно широкая, может даже откат к предыдущей вершине не поможет. Это уж как ТС решит.

Ну и да, случай самопересечения "8" надо правильно обрабатывать.

Можно поиском кратчайшего пути, разомкнув предварительно 2 соседние вершины. Однако придётся задать веса ребрам графа, а потом каждое решение поверять,насколько оно узкое,и вносить поправки в веса. Ну и рез-т не гарантируется.

Примерно так.


Как ещё вариант фигуры на карте 2-х Америк отрезать северные штаты США от южных, Отрезать всё, в южном полушарии или по Амазонке, убрать острова Кубу, Гаити и т.д (или сделать их полуостровами). Нарисовать сетку. Очень извилистый пример будет.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39879023
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Афтор. Прокомментируй пожалуйста наши 2 последних сообщения.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39880152
xMailer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы была законченность в теме решил написать выбранное решение, которое позволило решить мою задачу и для ящиков подойдет (в такой конфигурации как на рисунке).
Мне помог отслеживающий алгоритм "жука" . По ссылке, да и в нете в основном его используют для обработки растра, но и в случае прямоугольников он отработал на ура, шаг отслеживания 0.5, кто прочитает про алгоритм поймет почему.
Всем спасибо!
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39880159
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоесть наши вопросы тебя уже не интересуют. Интересный ты собеседник. Ладно иди читай. Зачем тебе тогда
форум - непонятно.
...
Рейтинг: 0 / 0
16 сообщений из 66, страница 3 из 3
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм поиска контура по набору координат
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]