簡體   English   中英

使用霍夫圓變換檢測圓陣列

[英]Detecting array of circles using Hough Circle Transform

我試圖檢測數組中的所有圓圈。 為了達到這個目的,我正在使用Hough Circle Transform。 我能夠在陣列中檢測到100%的圓圈,但是有很多誤報,當我擺脫誤報時,我無法檢測到100%的圓圈。 當我在下面給出的代碼中將dp參數更改為1時,所有誤報都消失了,當我將其保持為3時,則會有很多誤報,100%檢測。 我希望100%檢測到0或非常少的誤報。 這樣做的最佳方法是什么。

import cv2
import cv2.cv as cv
import numpy as np

img = cv2.imread('test1.tiff',0)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)

circles = cv2.HoughCircles(img, cv.CV_HOUGH_GRADIENT,3,15,
                        param1=70 ,param2=17,minRadius=1,maxRadius=10)

circles = np.uint16(np.around(circles))
for i in circles[0,:]:
# draw the outer circle
    cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)

cv2.imshow('detected circles',cimg)
cv2.imwrite("output15.jpg", cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()

這里有一個示例圖片:

原始圖像

沒有誤報誤報

既然它們是圓形的,並且都是黑暗的,為什么不用形態磁盤過濾它們並從過濾后的圖像中減去原始圖像以獲得良好的響應? 形態學不是特別快,但比霍夫快。 你要做的是擴大背景(用圓盤形狀)直到黑色消失,然后從中減去原始圖像。 然后門檻。 然后,您可以進行大小過濾,以消除可能通過的任何微小碎片。

鑒於這個應用,我不認為霍夫是最強的選擇,除非這是一個學校項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM