Получение приблизительных вершин замкнутых фигур с изогнутыми краями (для вычисления центроида и других свойств)

Я пытаюсь нарисовать контуры 2D-замкнутых неправильных форм с изогнутыми краями, а затем вычислить как (а) центр тяжести (центроид) площади фигуры, так и (б) центр тяжести фигуры периметр (т. е. центр тяжести, например, проволоки, плотно обернутой вокруг внешней стороны фигуры). Владею Python и Matlab на уровне позднего новичка.

(a) и (b) достаточно легко определить, учитывая вершины многоугольника: центроид площади многоугольника задается уравнение здесь, а центроид периметра многоугольника - это просто среднее значение всех средних точек отрезков, взвешенных по длинам отрезков. Я уже написал несколько функций для этого.

Проблема, с которой я сталкиваюсь, заключается в том, чтобы получить/аппроксимировать эти вершины любым из известных мне способов рисования замкнутой формы с изогнутыми краями. Лучшее решение, которое я придумал до сих пор, — это использовать что-то вроде этого скрипт на основе matplotlib для рисования изогнутой формы , а затем вызовите path.to_polygons(), который преобразует объекты Path в полигоны, но делает это с удивительно низким разрешением, так что результирующее приближение довольно плохое (и слишком плохое для моих целей — я хотел бы вычислить эти центроиды достаточно точно).

Итак, я пытаюсь либо (i) найти способ увеличить разрешение .to_polygons (примерно в 10 раз), что было бы удовлетворительно для моих целей, либо (ii) полностью попробовать какую-то новую стратегию. Одним из вариантов было бы нарисовать фигуры с помощью чего-то вроде Adobe Illustrator, а затем получить приближение их вершин с помощью какого-либо плагина или, возможно, набора инструментов для обработки изображений (но я понятия не имею, как сделать любую из этих вещей). Другой вариант — нарисовать фигуру с помощью какого-нибудь набора инструментов/библиотеки, в котором уже есть встроенные функции для нахождения центроидов площадей и периметров (я видел некоторые из них с первым, но ни с одним из последних). Но я уверен, что есть много других вариантов, которые я не рассматривал.


person Chaz    schedule 11.02.2013    source источник