Точный алгоритм поиска контуров в Python - PullRequest
0 голосов
/ 12 января 2019

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

Мне удалось найти контуры с помощью функции matplotlib.contours . Затем я непосредственно использовал matplotlib.cntr (алгоритм C ++) для определения конкретных контуров. Но поскольку файл использует алгоритм квадратов перемещения (линейная интерполяция), точность найденных контуров недостаточно хороша.

Я ищу альтернативные способы решения этой проблемы. Предлагаемое решение было

  • Используйте бикубическую интерполяцию, чтобы найти аналитическую функцию вокруг определенной точки.
  • С последующим вычислением производной функции.
  • Производная функция затем используется для определения направления, в котором производная остается на 0 (используя точку в качестве точки зрения). При перемещении на небольшое расстояние в этом направлении высота должна оставаться постоянной.

При использовании этого алгоритма должен быть найден контур. Будет ли этот алгоритм работать, могу ли я использовать какие-либо ярлыки при его реализации (используя уже реализованные функции)?

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

Какой другой алгоритм мог бы быть использован для его решения?

Кто-нибудь сталкивался с подобной проблемой? Как ты это решил?

...