从matplotlib等高线图中提取特定路径

时间:2013-10-26 23:30:56

标签: python image-processing numpy matplotlib

我有以下等高线图:

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)

6 eigenvalue contours

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

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)

overlapped contours

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

edited circles

如果可能的话,我希望构成这些细长圆圈的(kx,ky)点对,没有来自其他工件的任何点。

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

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

1 个答案:

答案 0 :(得分:2)

虽然从轮廓中提取了集,但请尝试RANSACC#中用于从嘈杂点提取圆圈的实现here。我们提供了一般而简单的Python实施{。{3}}。

您也可以尝试使用Least Square Circle Fitting Python中的示例{{1}} {/ 1}}。

祝你好运。

相关问题