Моя задача - найти конкретные контуры в облаке точек. Их нужно определить как можно точнее. Поэтому необходимо использовать полиномиальную интерполяцию более высокого порядка. У меня есть данные, состоящие из точек в сетке, каждая точка имеет свою высоту.
Мне удалось найти контуры с помощью функции matplotlib.contours . Затем я непосредственно использовал matplotlib.cntr (алгоритм C ++) для определения конкретных контуров. Но поскольку файл использует алгоритм квадратов перемещения (линейная интерполяция), точность найденных контуров недостаточно хороша.
Я ищу альтернативные способы решения этой проблемы. Предлагаемое решение было
- Используйте бикубическую интерполяцию, чтобы найти аналитическую функцию вокруг определенной точки.
- С последующим вычислением производной функции.
- Производная функция затем используется для определения направления, в котором производная остается на 0 (используя точку в качестве точки зрения). При перемещении на небольшое расстояние в этом направлении высота должна оставаться постоянной.
При использовании этого алгоритма должен быть найден контур. Будет ли этот алгоритм работать, могу ли я использовать какие-либо ярлыки при его реализации (используя уже реализованные функции)?
Реализация этого алгоритма потребовала бы от меня больших усилий, и, кроме того, он может работать только теоретически. Я предполагаю, что числовая ошибка все еще должна присутствовать (производная может не быть точно 0) и может в итоге даже превзойти текущую (используя марширующие квадраты). Я хочу рассмотреть другие, более простые и быстрые методы решения этой проблемы.
Какой другой алгоритм мог бы быть использован для его решения?
Кто-нибудь сталкивался с подобной проблемой? Как ты это решил?