【发布时间】:2013-12-01 13:45:49
【问题描述】:
你们中有人知道 Python 中二维轮廓的高阶插值方法(Catmull-Rom 样条、三次插值等)吗?
Skimage、Matplotlib 和 OpenCV 分别提供函数 measure.find_contours()、contours() 和 findContours(),但都是基于线性插值(也称为行进正方形),我正在研究更高最好是 Python 中的准确性。任何指针将不胜感激。
https://www.dropbox.com/s/orgr2yqhbbk2xnr/test.PNG
在上图中,我试图从 f(x,y)=x^3+y^3 的标量场中提取等值 25。我正在寻找比线性插值给出的 6 个红点精度更高的 6 个点。
【问题讨论】:
-
我认为您希望在将数据传递给轮廓之前对其进行平滑处理。你看过这个帖子吗? stackoverflow.com/questions/12274529/… Scipy 的 griddata 函数如果您不是从规则间隔的数据开始,也可能会感兴趣:docs.scipy.org/doc/scipy/reference/generated/…
-
嗯,我认为这个问题可能与这个问题重复:stackoverflow.com/questions/18402355/…(如果不是,请在问题中添加更多细节以澄清。)
-
平滑是一个不错的选择,但是它会创建比需要更多的点,即顶点不位于标量场的边缘。我正在寻找边缘更准确的插值(线性插值没有给出)。刚刚编辑了原始帖子并添加了一张图片
-
另外,高阶并不总是意味着更准确en.wikipedia.org/wiki/Runge%27s_phenomenon 高阶也会让你对噪音非常敏感。
-
同意,但为一系列三次隐式函数选择三阶插值以获得最佳近似值不是一个合理的选择吗?
标签: python matplotlib interpolation spline spatial-interpolation