Интерполяция высшего порядка для контурных графиков в питоне

Кто-нибудь из вас знает о методе интерполяции более высокого порядка (сплайны Катмулла-Рома, кубическая интерполяция и т. Д.) Для 2D контуров в Python?

Skimage, Matplotlib и OpenCV предоставляют функции measure.find_contours(), contours() и findContours() соответственно, но все они основаны на линейной интерполяции (также называемой марширующими квадратами), я ищу что-то с более высокой точностью в Python предпочтительно. Любые указатели будут высоко оценены.

https://www.dropbox.com/s/orgr2yqhbbk2xnr/test.PNG

На изображении выше я пытаюсь извлечь изо-значение 25 из скалярного поля f(x,y)=x^3+y^3. Я ищу 6 точек с большей точностью, чем 6 красных точек, заданных линейной интерполяцией.

1 ответ

Для неструктурированных 2d-данных (или триангулированных данных) вас может заинтересовать следующий класс:

http://matplotlib.org/api/tri_api.html?highlight=cubictriinterpolator

который обеспечивает интерполятор Clough-Tocher (кубический) из определенного пользователем Triangulation и поле, определенное в узлах триангуляции. Он также может быть использован через класс помощника UniformTriRefiner:

http://matplotlib.org/api/tri_api.html?highlight=refine_field http://matplotlib.org/mpl_examples/pylab_examples/tricontour_smooth_user.png

Тем не менее выбор адаптированной интерполяции зависит, конечно, от вашего набора данных.

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