Использование matlab для расчета свойств многоугольника, определенного как список точек

Имеет ли MATLAB встроенную функцию для нахождения общих свойств, таких как центр масс и моменты инерции для многоугольника, определенного как список (нецелых) точек?

regionprops выполняет эту задачу для целочисленных точек в предположении, что они представляют индексы пикселей на изображении. Но единственные функции, которые я могу найти, которые обрабатывают нецелые списки точек, это polyarea и inpolygon.

Сейчас я хочу создать структуру bwconncomp, в которой все точки умножаются на какое-то большое значение (например, 10 000), а затем передать его в regionprops, но подумал, есть ли более элегантное решение.

3 ответа

Решение

Вы должны проверить представление POLYGEOM HJ Sommer на MathWorks File Exchange. Похоже, он имеет все необходимые измерения свойств и хорошую документацию, описывающую формулы, используемые в коде.

Я не знаю функции в MATLAB, которая сделала бы это для вас.

Однако, poly2mask может быть полезен для вас, чтобы создать маски пикселей для подачи в regionprops. Я также предлагаю, чтобы, если вы решили пойти по этому пути, вы тщательно проверили, насколько дискретизация влияет на результаты, чтобы не создавать сумасшедшие большие массивы (и не тратить время) без реального повышения точности.

Одной из возможностей является отправка вычислений в Java Topology Suite. Я не знаю о "моментах инерции", но у него, по крайней мере, есть метод центроида.

Другие вопросы по тегам