1

我有以下等高线图:

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个特征值轮廓

将它们重叠会产生下图:

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) 点对,而不需要来自其他工件的任何点。

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

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

4

1 回答 1

2

当您从轮廓中提取了一组点时,请尝试RANSAC这里C#给出了从噪声点中提取圆的实现。这里给出了一个通用和简单的实现。Python

您也可以尝试此处给出Least Square Circle Fitting的示例。Python

祝你好运。

于 2013-10-27T00:09:12.127 回答