我有一些需要平滑的锯齿状等高线图。我需要在不丢失任何轮廓线的情况下平滑它们。我已经提到了这些 SO问题,但它们并不能完全解决我的问题。没有任何过滤器,我的图如下所示:
您可以看到外部轮廓非常参差不齐,因此呈现质量不佳。如果我通过 0 阶和 sigma 2 的高斯滤波器(即scipy.ndimage.gaussian_filter(z, 2)
)运行数据,它会平滑图,但我会丢失内部轮廓:
在不丢失内部轮廓的情况下平滑情节的最佳方法是什么?我使用的数据的性质是它总是在中心附近具有最高值。过滤散布信息并使内部轮廓消失。这些是最重要的等值线:等值线代表生命损失的风险,因此通常值越高越重要。
我考虑了两种平滑轮廓线的方法。
contour_object.collections[col_index].get_paths()[path_index].vertices
通过和平滑/重新绘制每个轮廓线坐标。这似乎是可能的,但不优雅,我不知道从哪里开始。- 仅对大于某个值的数据应用高斯滤波器:例如 5*10 -6。这很容易做到(遍历数据数组,如果值大于截止值,则从原始集合中获取,如果不是,则从过滤集合中获取),但似乎非常随意且难以证明。
我想做类似第一个选项的事情,但它似乎有点像黑客。平滑这些等高线图的最佳方法是什么?