|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
||||||||||||||||
Группировка точек21.06.2021, 09:11. Показов 13450. Ответов 58
Метки нет (Все метки)
Всем привет!
Есть 3D карта допустим гор, я её обрезаю по высоте и получаю координаты вершин гор. И хочу решить такую задачу. Вход - массив вида:
Все вершины разделены между собой как минимум кругом пустоты радиусом 5-10 точек Мои мысли Запустить цикл по list_coord, и если точка не находится в диапазоне +- 3 то добавляем её в новый массив, в итоге на выходе должен был быть массив с тремя координатами, но что то не получается доделать логику
Не по теме: p.s. формулировки мыслей конечно ужасные если что спрашивайте
0
|
||||||||||||||||
| 21.06.2021, 09:11 | |
|
Ответы с готовыми решениями:
58
|
|
5533 / 2886 / 573
Регистрация: 07.11.2019
Сообщений: 4,812
|
||||||
| 23.06.2021, 13:17 | ||||||
Сообщение было отмечено u235 как решение
Решение
RSAX, нет, тут сетка нерегулярная. Нужна триангуляция.
Добавлено через 5 часов 44 минуты RSAX, Вот код, который строит триангулированые сетки по вашим данным: Кликните здесь для просмотра всего текста
Дальше осталось прикрутить что-то типа: scipy.sparse.csgraph.connected_component s() для вычисления числа кластеров. Не по теме: p.s. Как снять отметку "решение"? случайно нажал..
1
|
||||||
|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
|
| 23.06.2021, 13:30 [ТС] | |
|
Не по теме: u235, ваш ответ близок к решению, пусть остаётся отметка) Спасибо большое за код, уже час искал ответ!
0
|
|
|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
|
| 23.06.2021, 13:34 [ТС] | |
|
u235, из скрина №1 3D получилось вот такое, я правильно понял что это некий перевод из 3D в 2D и связывание точек в треугольники с условием что связанная точка лежит в радиусе 0.02?
0
|
|
|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
||||||
| 23.06.2021, 13:59 [ТС] | ||||||
|
u235, а DBSCAN хорошая идея использовать? В scipy.sparse.csgraph.connected_component s() я что передаю, точки triang.x и .y или triang.triangles?
Тут просто массив NxN размера должен быть как я понимаю
0
|
||||||
|
5533 / 2886 / 573
Регистрация: 07.11.2019
Сообщений: 4,812
|
|
| 23.06.2021, 14:03 | |
|
По первому посту - да, все верно.
По поводу DBSCAN - это не совсем то, мне кажется, это более ресурсоемкое решение. может что-то еще есть в networkx. Добавлено через 4 минуты RSAX, для экономии памяти лучше использовать разреженные матрицы, а не полные NxN
0
|
|
|
5533 / 2886 / 573
Регистрация: 07.11.2019
Сообщений: 4,812
|
||||||
| 24.06.2021, 08:24 | ||||||
|
RSAX, вот что получилось:
Кликните здесь для просмотра всего текста
1
|
||||||
|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
|
| 25.06.2021, 10:44 [ТС] | |
|
u235, Такой ещё вопрос, просто алгоритм интересен, без кода, что я могу сделать с исходным массивом облака точек, чтобы хоть как то разграничить объекты и подготовить их к кластеризации?
На скринах площадь 70х50см, на ней лежат допустим яблоки, использовать визуализацию нельзя, поэтому opencv вряд ли поможет
0
|
|
|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
|
| 25.06.2021, 10:48 [ТС] | |
|
По оси Z просто отрезать не получается так чтобы остались только верхушки объектов, потому что если камера наклонена хоть на 1 см отрезается слишком много у объектов по краям
0
|
|
|
5533 / 2886 / 573
Регистрация: 07.11.2019
Сообщений: 4,812
|
|
| 25.06.2021, 11:12 | |
|
RSAX, я бы перевел сначала все на регулярную сетку, т.е. получил картинку. Отфильтровал шумы и выполнил поиск локальных максимумов cv2.minMaxLoc() или что-то подобное. OpenCV прекрасно работает и без визуализации, например, у меня на телефоне из консоли Termux.
Если надо будет разделять уже бинаризированные объекты, то есть Watershed segmentation см. https://scikit-image.org/docs/... tershed-py Если надо выровнять "освещение", то см. функцию imclearborder из Matlab/Octave (использует морфологию, можно сделать аналог в OpenCV) , нужно просто поделить изображение на оценку фона (размытое изображение или после imclearborder)
2
|
|
|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
|
| 25.06.2021, 14:18 [ТС] | |
|
u235, а я вот чего придумал, а если брать максимум массива, делать запись - кластер 1, далее удалять все точки вокруг него в радиусе который мне нужен и снова искать максимум?
0
|
|
|
5533 / 2886 / 573
Регистрация: 07.11.2019
Сообщений: 4,812
|
|
| 25.06.2021, 17:05 | |
|
RSAX, да, можно и так. Можно просто поиск локальных максимумов в numpy/scipy
Добавлено через 1 час 27 минут См. функции scipy.signal.find_peaks и scipy.signal.argrelmax для поиска локальных максимумов.
1
|
|
|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
||||||
| 02.07.2021, 11:16 [ТС] | ||||||
|
u235, Можешь глянуть если есть время иерархическую кластеризацию, вот такой вот код, работает почти в 10 раз быстрее
0
|
||||||
|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
|
| 02.07.2021, 11:30 [ТС] | |
|
Осталась наверное последняя проблема разделить вот такой 1 объект на 3
0
|
|
|
5533 / 2886 / 573
Регистрация: 07.11.2019
Сообщений: 4,812
|
|
| 02.07.2021, 15:06 | |
|
RSAX, вот пример сегментации. https://scikit-image.org/docs/... tershed-py
Но если бы вы нашли локальные максимумы, подобная сегментация возможно и не потребовалась бы.
0
|
|
|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
|
| 02.07.2021, 16:05 [ТС] | |
|
u235, утром смотрел данный пример(даже вкладка открыта XD), но так и не понял как туда 2D массив закинуть, вместо np.logical_or(mask_circle1, mask_circle2), что за тип ему нужен
0
|
|
|
5533 / 2886 / 573
Регистрация: 07.11.2019
Сообщений: 4,812
|
|
| 02.07.2021, 17:08 | |
|
RSAX, тип логический: np.bool там где области - true, где пусто - false
Ну и сетка регулярная (надеюсь вы это сделали?), по сути на входе черно-белая картинка.
0
|
|
|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
|
| 05.07.2021, 08:45 [ТС] | |
|
u235, Ну вот, у меня такая сетка сейчас, я правильно понимаю что мне надо создать массив условно 1280х720, создать его со значениями [0, 0], далее создать переменную типа bool_arr = [i != 0 for i in frame], на выходе получу массив np.bool и дальше нужно его засунуть в image = np.logical_or(bool_arr)?
0
|
|
|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
|||||||
| 05.07.2021, 14:30 [ТС] | |||||||
Добавлено через 27 минут А по поводу локальных максимумов, предлагаете что нибудь такое использовать? На моих данные не особо корректно работает, параметры естественно менял
Думаю локальный максимум не сможет подойти, т.к. объекты могут различаться почти в 2 раза, и два маленьких не смогут быть распознаны из за ограничения радиуса поиска максимума
0
|
|||||||
|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
|||||||||||
| 05.07.2021, 15:43 [ТС] | |||||||||||
|
u235, Ещё я использовал триангуляцию не на 2D а на 3D, и тут она получше работает, думаю есть шансы на поиск лок макс, надо только понять как отбросить лишнее
0
|
|||||||||||
|
5533 / 2886 / 573
Регистрация: 07.11.2019
Сообщений: 4,812
|
||||||
| 06.07.2021, 07:28 | ||||||
|
RSAX, не нужна вам триангуляция 3d.
вот смотрите код:
Далее нерегулярные наборы точек интерполируются в регулярные сетки. z_grid - по сути картинка (осторожно! есть nanы по краям) Ищем максимумы и все. (добавляется один ложный максимум с края связанный с наклоном "стола", который можно отфильтровать) Все просто, главное перейти из наборов точек к регулярной картинке-матрице.
1
|
||||||
| 06.07.2021, 07:28 | |
|
Группировка списка Группировка в Pandas Группировка словаря
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|