2016-06-10 68 views
2

我要找到一個Siemens star的中心。 (西門子的一顆星是用於相機校準的標準圖像。)西門子尋星中心星

對於人類來說非常容易,但我無法弄清楚哪種(最好是OpenCV)方法可以使用。我正在使用Python。

enter image description here

我使用邊緣檢測嘗試,我想我能得到的邊緣輪廓,然後進行行的一些公式,然後看到這些線相交。但是我會在邊緣看到一些凌亂的線條,輪廓都是不相交的(或者我可能不理解它們)。下面是與此代碼中發現的輪廓:

from OpenCVX import cvx2 

filepath = 'img.jpg' 
img = cvx2.imread(filepath, 0) 

ret, thresh = cvx2.threshold(img, 127, 255, 0) 
im2, contours, hierarchy = cvx2.findContours(thresh, cvx2.RETR_TREE, cvx2.CHAIN_APPROX_SIMPLE) 
cvx2.drawContours(img, contours, -1, (255,255,255), 3) 

plt.imshow(img) 
plt.show() 

enter image description here

不管怎麼說,還有什麼招數來解決這樣的問題?假設我是一個n00b ..

+0

你需要告訴我們你試過 – Leva7

+0

@ Leva7:增加更多細節 – dnh37

回答

0

這是我最終做的。這不是完全可靠的,但現在可能已經足夠好了。只要考慮列和行的總和就可以得出峯值或者下降值 - 找到最大值或者最小值在一些猜測位置附近給出中心。

sum_cols, sum_rows = np.sum(img, axis=0), np.sum(img, axis=1) 

enter image description here

不幸的是也有一些少數情況下,這是行不通的。隨着恆星旋轉,中心的最小值或最大值從最小值跳變到最大值。在翻轉的過程中,它不是圍繞圖像猜測中心的某個有限距離的最小值和最大值。隨意提供更好的建議,如果你有任何...