|
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
|
||||||||||||||||
Группировка точек21.06.2021, 09:11. Показов 12809. Ответов 58
Метки нет (Все метки)
Всем привет!
Есть 3D карта допустим гор, я её обрезаю по высоте и получаю координаты вершин гор. И хочу решить такую задачу. Вход - массив вида:
Все вершины разделены между собой как минимум кругом пустоты радиусом 5-10 точек Мои мысли Запустить цикл по list_coord, и если точка не находится в диапазоне +- 3 то добавляем её в новый массив, в итоге на выходе должен был быть массив с тремя координатами, но что то не получается доделать логику
Не по теме: p.s. формулировки мыслей конечно ужасные если что спрашивайте
0
|
||||||||||||||||
| 21.06.2021, 09:11 | |
|
Ответы с готовыми решениями:
58
|
|
8849 / 4500 / 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
|
|
|
8849 / 4500 / 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
|
||||||
|
8849 / 4500 / 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
|
||||||
|
8849 / 4500 / 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): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|