2013-10-26 147 views
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 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

回答

2

儘管已經設置了一個從輪廓提取,嘗試RANSAC。在C#中從嘈雜點提取圓圈的實現給出here。一般和簡單的Python實現給出here

您也可以嘗試Least Square Circle Fitting,在Python中給出的例子爲here

祝你好運。