WedX - журнал о программировании и компьютерных науках

Алгоритм Дугласа-Пекера: понимание использования с polgyons

Я просматривал этот алгоритм, и он кажется довольно простым. Однако я не понимаю, как использовать его в закрытых полигонах. ВСЕ примеры, которые я видел, имеют дело с линией/кривой с открытыми концами. Если я визуализирую процесс, правильно рисуя одну линию, а затем повторяя ее, чтобы повторно захватить детали многоугольника, это не сработает, потому что он всегда будет оставлять по крайней мере одну сторону многоугольника открытой.

Я думаю о написании реализации, которая сначала делает 4 точки (самые дальние точки topLeft, TopRight, Bottomright и BottomLeft), а затем запускает алгоритм на вершинах между этими индексами точек.

Поэтому, если нижняя строка имеет индекс 40 и 80 в исходном массиве путей, я буду выполнять итерацию и фиксировать подобие этой линии только в точках 40-80, а затем переходить на следующую сторону, пока все стороны не будут выполнены.

Известно, что я сам дурачился и слишком усложнял вещи, поэтому мне было интересно, была ли это разумной реализацией?

В основном я пытаюсь воспроизвести сокращение данных GPX, показанное ниже:

введите здесь описание изображениявведите здесь описание изображения

23.07.2012

  • Что именно вы пытаетесь сделать с этим ?? 23.07.2012
  • У меня есть данные GPX, которые мне нужно уменьшить. Я добавил еще одно изображение, чтобы уточнить. 23.07.2012
  • Насколько я понимаю, вы пытаетесь взять x точек и взять их среднее значение, чтобы построить своего рода линию тренда, чтобы было гораздо меньше точек, с которыми нужно иметь дело. Правильный? 23.07.2012
  • Я просто пытаюсь взять очень шумные и очень сложные данные GPS и удалить точки, которые не вносят вклад в большую форму. Простое уменьшение точек на многоугольнике 23.07.2012
  • Учитывая полигон, вам придется пройти дальше начальной точки. В противном случае у вас будет это открытое пространство. Просто добавьте несколько точек от начала до конца, и все должно работать. Пожалуйста, скажите, работает ли это. 24.07.2012

Ответы:


1

После беглого прочтения алгоритма на Википедии , кажется, что вы можете простым способом зафиксировать упрощенную форму замкнутого цикла.

Вызовите метод с одинаковыми начальной точкой «A» и конечной точкой «Z».

Измените алгоритм, чтобы, если «A» и «Z» были одной и той же точкой, вместо поиска самой дальней точки, перпендикулярной к линии AZ, он просто искал самую дальнюю точку в соответствии с >Евклидово расстояние от начальной/конечной точки.

Теперь алгоритм рекурсивно обращается к A->M и M->Z, где M — точка, наиболее удаленная от A (которая также является Z). Теперь алгоритм может работать нормально.

23.07.2012
Новые материалы

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


Для любых предложений по сайту: [email protected]