|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
||||||||||||||||
Группировка точек21.06.2021, 09:11. Показов 12877. Ответов 58
Метки нет (Все метки)
Всем привет!
Есть 3D карта допустим гор, я её обрезаю по высоте и получаю координаты вершин гор. И хочу решить такую задачу. Вход - массив вида:
Все вершины разделены между собой как минимум кругом пустоты радиусом 5-10 точек Мои мысли Запустить цикл по list_coord, и если точка не находится в диапазоне +- 3 то добавляем её в новый массив, в итоге на выходе должен был быть массив с тремя координатами, но что то не получается доделать логику
Не по теме: p.s. формулировки мыслей конечно ужасные если что спрашивайте
0
|
||||||||||||||||
| 21.06.2021, 09:11 | |
|
Ответы с готовыми решениями:
58
|
|
8850 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
|
|
| 21.06.2021, 10:19 | |
|
RSAX, может просто сортирока (выборка) по длине векторов?
0
|
|
|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
|
| 21.06.2021, 10:22 [ТС] | |
|
Gdez, длинна вектора от точки [0, 0, 0] до каждой моей точки? если да то звучит неплохо, сейчас попробую
0
|
|
|
8850 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
|
|
| 21.06.2021, 10:28 | |
|
RSAX, в коде реализуется "попадание в квадрат"? Точно не "в круг" ("в кольцо")?
0
|
|
|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
||||||
| 21.06.2021, 10:39 [ТС] | ||||||
|
Gdez, там просто облако точек, около 100, формы у них нету, но ближе к кругу/овалу
Вот так сделал
0
|
||||||
|
8850 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
|
|
| 21.06.2021, 10:57 | |
Сообщение было отмечено RSAX как решение
Решение
Предварительно сортировка множества (set) либо координат (х & у), либо длин векторов {х,у}.
Затем разбиение всех точек по группам, предварительно рассчитав границы диапазонов по определенному критерию: *- "медианный" -> допустим 3 группы из множества {1,2,5,6,9,11,12,18,25} получим объект_1 = {1,2,5}, объект_2 = {6,9,11}, объект_3 = {12,18,25} *- с шагом, допустим 4 -> объект_1 = {1,2}, объект_2 = {5,6}, объект_3 = {9,11,12}, объект_4 = {}, объект_5 = {18}, объект_6 = {}, объект_7 = {25} *- заранее заданный -> 0-3, 3-10, 10-100 -> объект_1 = {1,2}, объект_2 = {5,6,9}, объект_3 = {11,12,18,25} *- по разнице между "соседями"; допустим <= 3 -> объект_1 = {1,2,5,6,9,11,12}, объект_2 = {18}, объект_3 = {25} *- "пользовательский"
1
|
|
|
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
|
|
| 21.06.2021, 11:16 | |
|
RSAX, это задача поиска связных компонент(labeling). Для больших размеров карт эффективно решается с использованием OpenCV, skikit-image или scipy. Решение буквально в одну строку, если на входе двухуровневое изображение - вершины - 1, остальное- 0
Даже в Imagemagick labeling есть.:-)
0
|
|
|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
||||||
| 21.06.2021, 11:43 [ТС] | ||||||
|
Gdez, хотя ещё есть вопрос, вот мне надо "по разнице между "соседями"", у Вас есть какой нибудь готовый пример? Если нету, сам буду искать
Добавлено через 24 минуты Gdez, Вот так сделал
u235, про это всё да знаю, но данные получаю с 3d камеры тупа массивом, не хочу пока прибегать к визуализации, есть идея на Raspberry всё это запускать, если не получится то да с opencv сделаю
0
|
||||||
|
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
|
|||||||||||
| 21.06.2021, 12:08 | |||||||||||
|
RSAX, вот пример, визуализировать никто не заставляет, если это не нужно:
Кликните здесь для просмотра всего текста
Подход кластеризации по расстояниям до начала координат не очень хороший, т.к. могут быть несколько разных кластеров с одним и тем же расстоянием. Пример: кластеры с центром (10, 1) и с центром (1,10) будут слиты в один. Добавлено через 5 минут P.S. Компоненты 4 и 5 можно объединить, если добавить опцию structure=np.ones((3,3)) в ndimage.label()
1
|
|||||||||||
|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
||||||
| 21.06.2021, 12:15 [ТС] | ||||||
|
u235, "будут слиты в один." кстати да, чего то я вообще не подумал, а в вашем варианте без расстояний?
Добавлено через 4 минуты u235, и ещё вопрос, как можно исправить
А то ошибка падает для точки [184, -136, 281] IndexError: index -136 is out of bounds for axis 1 with size 29
0
|
||||||
|
8850 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
|
|
| 21.06.2021, 12:33 | |
|
RSAX, как вариант - перенос начала координат в точку с минимумами по координатам
После расчетов - обратно
0
|
|
|
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
|
|||||||
| 21.06.2021, 14:00 | |||||||
Сообщение было отмечено Gdez как решение
Решение![]()
Gdez, да, так и сделано в коде.
3
|
|||||||
|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
|
| 21.06.2021, 14:05 [ТС] | |
|
u235, О, работает, нифига ты умный)
Вот так выглядим моя карта, вид сверху, код всё верно нашёл, 11шт, спасибо большое!
0
|
|
|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
||||||
| 22.06.2021, 16:07 [ТС] | ||||||
|
u235, а ещё такой вопрос, как сделать чтобы для float работало? И зачем мы тут единицу прибавляем?
0
|
||||||
|
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
|
|
| 22.06.2021, 16:51 | |
|
RSAX, сетка равномерная или нет? Если нет то нужна триангуляция. Если равномерная, то код практически не меняется.: добавили 1 и разделили на шаг, после нахождения кластеров умножили на шаг и отняли 1.
1
|
|
|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
|
| 22.06.2021, 18:05 [ТС] | |
|
u235, сетка да, равномерная
Добавлено через 28 минут u235, Не подскажите как исправить эту ошибку? "'numpy.float64' object cannot be interpreted as an integer", dtype я так понимаю надо изменить, а ещё что?
0
|
|
|
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
|
||||||
| 22.06.2021, 18:58 | ||||||
|
Что-то типа такого для смещения шкалы и перевода в int из float
1
|
||||||
|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
|
| 22.06.2021, 19:34 [ТС] | |
|
u235, всё равно на той же строке пишет ValueError: array is too big; `arr.size * arr.dtype.itemsize` is larger than the maximum possible size. если я ставлю h=0.0000000001, но впринципе пока с h = 0.00001 работает и ладно
Немного ещё один вопрос, если можно) Вот такое облако точек появилось, и кластеризация помечает каждую точку как отдельный объект, я могу как то настроить точность работы, границы указать так сказать?
0
|
|
|
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
|
|
| 22.06.2021, 20:18 | |
|
RSAX, у вас реально такой маленький шаг между точками?
![]() Вы сказали что сетка регулярная. Так какой именно у нее шаг? Почему вы его меняете произвольно? Шаг это растояние между соседними точками. Приведите пример реальных данных.
0
|
|
|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
||||||
| 22.06.2021, 22:31 [ТС] | ||||||
|
u235, координаты это расстояния от камеры до точки в метрах, поэтому так мало, вот на этой картинке что кидал 7000 точек
1
|
||||||
| 22.06.2021, 22:31 | |
|
Помогаю со студенческими работами здесь
20
Группировка списка Группировка в Pandas Группировка словаря
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|