powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм поиска контура по набору координат
66 сообщений из 66, показаны все 3 страниц
Алгоритм поиска контура по набору координат
    #39877103
xMailer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Подбирал алгоритм долго, но так и нашел того что требуется, может кто более плотно с геометрией работал.
Есть набор прямоугольников, каждый из которых представлен в виде 4 координат вершин см скрин 1, как можно собрать координаты контур, для отрисовки полигона скрин 2.
1. поиск выпуклой оболочки (Грэхем, Джарвис) - не годится, см скрин 3
2. группировка всех координат, координаты с кол-вом однократным повторений в наборе - являются вершины, да работает, но возможно наличие не соприкасаемых прямоугольников, скрин 4 и тогда не будет работать

Буду благодарен любой информации.
Спасибо!

скриныскрин 1

скрин 2

скрин 3

скрин 4

Модератор: Для картинок есть тэг [ img ]
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877120
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xMailer1. поиск выпуклой оболочки (Грэхем, Джарвис) - не годится, см скрин 3 В принципе доточить под свои требования, но для этого их нужно сформулировать - в каких случаях нужно достраивать вогнутые области, а в каких нет.


xMailer2. группировка всех координат, координаты с кол-вом однократным повторений в наборе - являются вершины, да работает, но возможно наличие не соприкасаемых прямоугольников, скрин 4 и тогда не будет работать
Многосвязные области в любом случае будут неправильно обрабатываться, лучше их сразу разбивать на односвязные.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877143
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xMailerвозможно наличие не соприкасаемых прямоугольников, скрин 4Непонятен критерий, по которому выполняется обрисовка... глядя на скрины 2 и 3, я бы провёл контур как-то так
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877158
xMailer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисВ принципе доточить под свои требования, но для этого их нужно сформулировать - в каких случаях нужно достраивать вогнутые области, а в каких нет.
мне кажется алгоритм выпуклой оболочки тут в принципе не подойдет, там же как правило отбор ведется по правилу самая правая при движении против часовой или дополнить расстоянием и отбирать самую близкую правую

AkinaНепонятен критерий, по которому выполняется обрисовка... глядя на скрины 2 и 3, я бы провёл контур как-то так
отмена, cancel - был описан частный случай, решил не заморачиваться, согласен вариации могут быть
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877165
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xMailer, я-бы разбил задачу на 2 части.

1) Объединение прямоугольников в более крупные
2) Построение оболочки по любому из алгоритмов описанных в wiki
https://ru.wikipedia.org/wiki/Выпуклая_оболочка

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

Что тебе надо на самом деле сделать? Продемонстрировать преподавателю как ты хорошо выучил ГИГМ ?
Или реально сделать боевую задачу ? Это разные подходы будут.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877170
xMailer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЧто тебе надо на самом деле сделать? Продемонстрировать преподавателю как ты хорошо выучил ГИГМ ?
Или реально сделать боевую задачу ? Это разные подходы будут.
это боевая задача, я не студент
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877174
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xMailer, на каком языке собираешся кодить свою боевую задачу?
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877181
xMailer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonxMailer, на каком языке собираешся кодить свою боевую задачу?
серверный, пока php. Если Вы про использование opencv - растровый путь не рассматриваю.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877188
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xMailermaytonxMailer, на каком языке собираешся кодить свою боевую задачу?
серверный, пока php. Если Вы про использование opencv - растровый путь не рассматриваю.
Я и не предлагаю OpenCV.

Координаты прямоугольников у тебя целые или вещественные?
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877232
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xMailerтам же как правило отбор ведется по правилу самая правая при движении против часовой или дополнить расстоянием и отбирать самую близкую правую
Нет. Если речь об алгоритме Грэхема, то там правило выпуклое/невыпуклое определяется для всех точек контура, последовательность обхода значения не имеет.
В Вашем примере правильный контур содержит одну невыпуклую точку. Хотелось бы понять причину по которой она там оказалась, желательно формализованную.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877276
MBo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBo
Гость
xMailer, посмотри на alpha-shapes.
При их построении задаются определённые критерии - может, для твоих условий их можно подобрать.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877280
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я в специализированных алгоритмах не секу, я бы делал так
все вершины бывают острые, прямые или внутренние
взять острую вершину и соединять с соседними прямыми или внутренними до тех пор, пока не дойдем до следующей острой. Таким образом соединим все острые

это что касается замкнутых фигур.
для разделенных нужно будет
а) определить две раздельных фигуры
б) найти две ближайшие между ними острые вершины
в) исполнить вышеозвученный алгоритм
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877281
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aklinвзять острую вершину и соединять с соседними прямыми или внутренними до тех пор, пока не дойдем до следующей острой. Таким образом соединим все острые"соединять", это значит начинать от острой вершины, переходя по внешнему периметру к соседним прямым или внутренним до тех пор, пока не упремся в следующую острую.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877325
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Только с точностью наоборот.

Только после построения выпуклой оболочки мы можем решить какая вершина острая или нет.

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

Для приведённой ТСом постановки.
Я бы допиливал выпуклую оболочку. Возможно это имелось ввиду под "острыми углами" и т.п., но я не догнал и пишу своё видение.
Для прямоуг-ков, можно находить изолированные циклы графа.
Построив вып-ю об-ку вокруг найденных циклов, можно начинать стягивать резинку между ними.
Когда все циклы окажутся стянутыми, можно начать стягивать каждый цикл.
Формальные правила для стягивания не приведены. А в принципе, если при стягивании надо касаться каждого ближайшего выпуклого угла квадратиков, то достаточно перебором с шагом по углу. Если не каждого, то ........

Но ТС (не в обиду сказано), возможно, недостаточно продумал возможные ситуации.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877483
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТС так и не ответил про вещественные координаты. По сути много оптимизаций свершаются просто переходя
от векторной графики напрмер к растровой. Или квантизируя или упрощая саму постановку. Как в комьютерных
играх. Зачем хранить координаты каждого кирпича или плитки. Когда нам известна формула где может стоять кирпич и известен
номер этого кирпича в этой декартовой системе координат.

Да и вообще постановка сырая. Грумить ее и обсуждать.

Ди вогнутая область на последней картинке. Это - небрежность?
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877682
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю да, небрежность. Происходящая от сырой постановки.
Я ведь столкнулся с подобной же задачей в растре, когда пытался выделить контур в прямоугольнике со своими любимыми самолётиками и птичками. Только в моём случае мне показалось не комильфо делать это в МЛ, а на что-то более низкое перейти (напр. ВБА) ради только этой задачи надо уже морально настраиваться. Когда-нибудь настроюсь.

По вопросу концепции, модели, постановки. Была задача о мыльных плёнках. Здесь можно назвать задачей о презервативе на изломистом предмете, натянуть так, чтобы не лопнул. Т.к. в этом случае поверхностного натяжения нет, его должны заменять формальные правила и ограничения.
Я не предлагаю полностью оптимизационную постановку. Это д.б. задача минимизации в каком то смысле отдельных участков. Например там, где выпуклость надо менять на впуклость. Но как ему надо, знает только ТС.

И как всегда, побуждаешь чел-ка заняться проектироваием топ-даун, поскольку без концепции модель трудно построить, а он оказывается самым умным и обижается (имхо).
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877688
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл, выше у меня читать не дословно "изолированные циклы графа". Имел ввиду компоненты связности. Их выделяют последовательным построением остовных деревьев.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877690
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98, я думаю что он уже продублировал свой вопрос на ответах.мейл.ру или тостере и смылся.

Эдакий себе It-фишинг. Где клюнет - там и рыбка.

Никакого дискурса нет. Мдя...
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877696
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрел на картинку и предлагаю:

если у всех квадратиков определены углы, то
1. найти все правые крайние углы из всех углов, которые лежат на одной горизонтали.
2. ранжировать эти углы сверху вниз
3. найти все нижние крайние углы из всех углов, которые лежат на одной вертикали.
4. ранжировать эти углы справа налево.

Аналогично для левой стороны и для верха.

И соединяем все полученные углы.

А дальше, по результата осмотра полученной картинки принимать дальнейшие решения:
сглаживание, разбивка контуров и т.д.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877699
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавлю. Ограничения для минимизации нужны, иначе (навеяно недавними мыслями мэйтона) может получиться что-то типа кривой Гильберта)), когда внутри имеется архипелаг.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877708
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, ну мы-то можем кое-какие правила и без него сформулировать. Как раз я бы потм когда-нить воспользовался. Например ширина моста между связываемыми островами. Должен ли мост исходить обязательно из одной, крайней клетки ...
До какой степени изгибаться вовнутрь ...
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877712
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никакая у него не выпуклая оболочка. Если ему скрин 3 не подходит значит у него просто - многогранник
которые соединяет экстремальные точки контура всех прямоугольников.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877721
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДа. Только с точностью наоборот.

Только после построения выпуклой оболочки мы можем решить какая вершина острая или нет.

До этого - мы имеем список гребаных координат.
Не сказал бы.
Для начала находим периметр.
Дальше берем непрямую вершину. Найдем среднюю точку отрезка, соединяющего две соседних вершины. Если эта точка внутри множества, ограниченного нашим периметром, то вершина острая.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877723
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AklinНе сказал бы.
Для начала находим периметр.
Дальше берем непрямую вершину. Найдем среднюю точку отрезка, соединяющего две соседних вершины. Если эта точка внутри множества, ограниченного нашим периметром, то вершина острая.Даже проще.

Берем любую непрямую вершину.
Если две соседних грани принадлежат разным квадратам, то она внутренняя, если одному то острая.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877725
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вот нарисовал многоугольник. Может по шагам показать как ты искал периметр и всё прочее?
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877846
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ вот нарисовал многоугольник. Может по шагам показать как ты искал периметр и всё прочее?


в ТС речь шла про набор прямоугольников.
Заверните ваш многоугольник в набор прямоугольников...
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877848
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xMailer2. группировка всех координат, координаты с кол-вом однократным повторений в наборе - являются вершины, да работает, но возможно наличие не соприкасаемых прямоугольников, скрин 4 и тогда не будет работатьсамое забавное, что это простейшее из решений, и его нужно лишь допилить под случай с несвязанными областями и только. Для начала определите все связанные области, обведите области по этой схеме - объединить все вершины, появляющиеся в связанной области только один раз.
Дальше - соединить между собой.
Тут, думаю, надо найти две области, наиболее близкие друг к другу, и соединить две самые близкие их вершины, по одной на область. И так делать пока все не будут соеденены.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877861
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AklinmaytonЯ вот нарисовал многоугольник. Может по шагам показать как ты искал периметр и всё прочее?


в ТС речь шла про набор прямоугольников.
Заверните ваш многоугольник в набор прямоугольников...
Какая разница. Тут вопрос принципа. Или алгоритма.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877881
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonAklin
Какая разница. Тут вопрос принципа. Или алгоритма.Не совсем так.
У фигуры, состоящей из прямоугольников не может быть острых вершин, состоящих из вершин двух прямоугольников. В ТС вообще способ был написан: взять все вершины, повторяющиеся один раз. Для замкнутой фигуры этого достаточно.

Для произвольного многоугольника встает вопрос об исходной задаче. Не совсем понятно, что именно нужно обводить...
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877901
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я полагаю что потребность была не в том, чтобы получить фигуру абы как, но кусочно-линейно связную.
Aklin...Тут, думаю, надо найти две области, наиболее близкие друг к другу, и соединить две самые близкие их вершины, по одной на область. И так делать пока все не будут соеденены. Тут сразу неск. вопросов.
а) " соединить две самые близкие их вершины " - т.е. предлагается мостик сделать из одной линии (~как на рис. Акины) ?
б) " две области, наиболее близкие " - а если нужная фигура круто серповидная, напр. фюзеляж и крыло под острым углом к нему? даже фигура с моим голубком может вызывать споры, если не знать её вн. структуру заранее.
в) " так делать пока все не " - кто такие все? компоненты связанности?
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877912
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98а) " соединить две самые близкие их вершины " - т.е. предлагается мостик сделать из одной линии (~как на рис. Акины) ?Начиная от одной острой вершины идем в бок, пока не найдем соседнюю острую, и соединяем их линией.


exp98б) " две области, наиболее близкие " - а если нужная фигура круто серповидная, напр. фюзеляж и крыло под острым углом к нему? даже фигура с моим голубком может вызывать споры, если не знать её вн. структуру заранее.нужно рисовать и смотреть, где эта схема не пройдет, на слух сложно сказать...


exp98в) " так делать пока все не " - кто такие все? компоненты связанности?именно
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39877925
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AklinНачиная от одной острой вершины идем в бок, пока не найдем соседнюю острую, и соединяем их линией.Нарисовать нужно как раз это, поскольку я до сих пор не врубился в " острые вершины ". Где и когда они живут?
А с соединением компонент всё просто словами. Есть, скажем фигура чел-ка, состоящая из огуречик + тыква + овалы ручек и ножек + овльчики ступней и кистей.
Фигурка может сучить ручками и ножками. В какой-то момент вдруг захочет почесать репу граблей. Вот что, прямо так в этот момент и соединить тыкву с граблей?
Вот я и говорил о внутренней структуре. Иногда её называют "скелетным графом". Ею м.б. направленный граф, соединяющий компоненты связности, все или только самые характерные для идентификации. Это только как пример.

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

Поэтому предлагаю поднять форк этого топика дабы обсудить проблемы тысячелетия а также женщин и машины.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878016
xMailer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парни, ТС не слился, я тут и читаю периодически данный пост, дел просто за гланды, не нужно меня ругать.
Пока думаю над данным вопросом.

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

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

Координаты вещественные и сильно.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878037
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дано - груз прямоугольных ящиков. Расчитать длину брезента чтоб обмотать груз ящиков
плотно. Чтоб не болталось на ветру.

Так?
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878057
xMailer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДано - груз прямоугольных ящиков. Расчитать длину брезента чтоб обмотать груз ящиков
плотно. Чтоб не болталось на ветру.
Так?
интересно, да, так. Есть типовой подход, типа задачи коммивояжёра.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878061
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я чуть позже нарисую 2-3 частных случая укладки ящиков. А ты дай свою экспертную оценку как их обматывать. ОК?
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878126
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Нарисовать нужно как раз это, поскольку я до сих пор не врубился в " острые вершины ". Где и когда они живут?
В соединенных прямоугольниках есть вершины. Все вершины этих прямоугольников могут образовывать на внешнем периметре острый угол (тот, который торчит наружу, две соседних стороны принадлежат одному прямоугольнику, а сама вершина с другими вершинами не пересекается), когда два рядом стоящих прямоугольника образуют на периметре прямую линию, а сама вершина среди всех вершин прямоугольников встречается два раза) и внутренний (когда образуется не прямой и не острый угол, а сама вершина принадлежит трем прямоугольникам).


П.С.
я тут интересный пример придумал, когда два прямоугольника объеденены лишь одной вершиной. Тогда получается два внутренних угла, но по вышеозвученной характеристике они считаются прямыми.... Впрочем, все равно это решает вопрос, если учитывать только вершины, участвующие ОДИН раз.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878127
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Нарисовать нужно как раз это, поскольку я до сих пор не врубился в " острые вершины ". Где и когда они живут?
В соединенных прямоугольниках есть вершины. Все вершины этих прямоугольников могут образовывать на внешнем периметре острый угол (тот, который торчит наружу, две соседних стороны принадлежат одному прямоугольнику, а сама вершина с другими вершинами не пересекается), когда два рядом стоящих прямоугольника образуют на периметре прямую линию, а сама вершина среди всех вершин прямоугольников встречается два раза) и внутренний (когда образуется не прямой и не острый угол, а сама вершина принадлежит трем прямоугольникам).


П.С.
я тут интересный пример придумал, когда два прямоугольника объеденены лишь одной вершиной. Тогда получается два внутренних угла, но по вышеозвученной характеристике они считаются прямыми.... Впрочем, все равно это решает вопрос, если учитывать только вершины, участвующие ОДИН раз.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878128
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98А с соединением компонент всё просто словами. Есть, скажем фигура чел-ка, состоящая из огуречик + тыква + овалы ручек и ножек + овльчики ступней и кистей.
Фигурка может сучить ручками и ножками. В какой-то момент вдруг захочет почесать репу граблей. Вот что, прямо так в этот момент и соединить тыкву с граблей?
Вот я и говорил о внутренней структуре. Иногда её называют "скелетным графом". Ею м.б. направленный граф, соединяющий компоненты связности, все или только самые характерные для идентификации. Это только как пример.

Разговор можно отложить и на завтра, если есть желание, спешить некуда.

Делайте тестовые сценарии, попробую написать, что придумал...
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878132
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xMailerотсортировать по часовой

К слову, как быть с фигурами, у которых внутри дырка?


Насчет упорядочить, отсортировать по часовой - это как, найти периметр что ли?
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878138
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще ни понимаю как нам помогает знание периметра. Как нам помогает обход по- или простив- часовой.
Представте ящики стоят по форме подковы или буквы С.

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

AklinК слову, как быть с фигурами, у которых внутри дырка?Вот! опередели. Это к постановке даже в форме ящиков.
Потом, не только дыры (лакуны). Тут как раз одноранговые вершины. Могут быть острова внутри материкового моря -- компонента связности внутри другой компоненты.

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

П.С. Не, ну надо же так назвать: прямой угол острым, тупой - внутренним. Ну тут откуда смотреть, можно и наоборот, 90 -- 270. Но уж 180 все бы поняли.
Случай, когда пересечение по вершине - штатный, разрыва нет.

Надо только помнить, что совпадения вершин условное, с некоторой точностью.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878185
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xMailerУпорядочить вершины по полярному кругу не получилось. а) Почему?
б) если форма буквы С, но не кольцо, а спиральное кольцо (т.е. имеющее толщину), как отсеять по расстоянию "меньше определенного"?
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878186
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Удивительно как обмотка ящиков может взбудоражить инженерный ум.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878187
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98помнить, что совпадения вершин условное, с некоторой точностью.Я такие точки отождествлял на графе, как одну вершину.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878189
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AklinДелайте тестовые сценарии, попробую написать, что придумал...Подожду пример от мэйтона )) Правда у него ожидается односвязная область.
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878219
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Могут быть острова внутри материкового моря -- компонента связности внутри другой компоненты.Ну это-то несложно. Как только определитесь с тем, какие фигуры связаны, а какие нет, нужно будет определить, что внутри фигуры дырка, и ее тоже обвести.

Хотя нет, сложно будет при этом не задеть внутренний остров.
А дальше, если после обвода внутренних территорий не задели, несложно будет соединить остров к материку.

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


exp98Надо только помнить, что совпадения вершин условное, с некоторой точностью.
Размер точности должен быть предопределен до запуска задачи объединения =)
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #39878260
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aklin...определить, что внутри фигуры дырка, и ее тоже обвести ...В данном топике лучше сначала услышать ТСа, мож только снаружи и надо.

А для моих целей - там по-разному, зависи от ожидаемого типа предмета, и от дальнейшего использования, нужны или не нужны дырки. Темка для этого у меня заморожена не так давно. Для моих целей наверное лучше там.

А проблемка, где соединять (ближайшие точки или как-то иначе) иллюстрируется на фрагменте топограф. карты средиземноморья, включительно с частью Чёрного моря (отрезаем Новороссийск и далее Абхазский берег до Турции). Соединить Африку мостиком с Европой где? Гибралтар? Босфор? а мож в районе Куршской косы?
...
Рейтинг: 0 / 0
Алгоритм поиска контура по набору координат
    #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
66 сообщений из 66, показаны все 3 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм поиска контура по набору координат
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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