【问题标题】:Extract specific paths from matplotlib contour plot从 matplotlib 等高线图中提取特定路径
【发布时间】:2013-10-27 08:09:12
【问题描述】:

我有以下等高线图:

fig, axes = plt.subplots(1,6, figsize=(18,3))

for idx in range(6):
    axes[idx].contour(KX[kxl:kxr,kxl:kxr],KY[kxl:kxr,kxl:kxr],eigs[kxl:kxr,kxl:kxr,idx].real, levels=[0])
    axes[idx].set_xlabel(x_label_k)

axes[0].set_ylabel(y_label_k)

将它们重叠会产生以下图像:

fig, ax = plt.subplots(1,1, figsize=(4,4))

for idx in range(6):
    ax.contour(KX[kxl:kxr,kxl:kxr],KY[kxl:kxr,kxl:kxr],eigs[kxl:kxr,kxl:kxr,idx].real, levels=[0])

ax.set_xlabel(x_label_k)
ax.set_ylabel(y_label_k)

从上图中,我有兴趣仅绘制下面编辑后的图像中显示的 4 个“圆形”形状:

如果可能,我想要构成这些细长圆的 (kx, ky) 点对,而不需要来自其他工件的任何点。

我已经看到有一种方法可以从沿this question 的线的等高线图中提取点值,但是,这给了我一组 (2000,2000) 点,我不知道如何过滤。我在想也许可以根据等高线图的路径做些什么?

请注意,实际上可以在 6 个图的行中看到圆形的起源位置,但问题是为了组成 2 个较小的内圈,必须将子图 2、3、4 和 5 组合起来。对于较大的外层,它更简单,因为它们在子图 5 和 6 中相对分开。

【问题讨论】:

    标签: python image-processing numpy matplotlib


    【解决方案1】:

    虽然您已经从轮廓中提取了一组,但请尝试RANSAC。在C# 中从噪声点中提取圆的实现在here 中给出。 here 给出了一个通用且简单的Python 实现。

    您也可以尝试Least Square Circle FittingPython 中的示例为here

    祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-19
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-12
      • 1970-01-01
      相关资源
      最近更新 更多