異なるタイプのしきい値(ローカルしきい値を考慮する適応しきい値)を使用すると、すでに問題が解消されます。適応しきい値の結果は、探しているものです。
[EDIT:私は、ハフ円にいくつかのコードを追加することの自由を取りました。場合、私は、私たちは知ってみましょう
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('image.png',0)
thresh = cv2.threshold(img, 210, 255, cv2.ADAPTIVE_THRESH_MEAN_C)[1]
canny = cv2.Canny(thresh,50,150)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
circles = cv2.HoughCircles(canny,cv2.HOUGH_GRADIENT,1,20, param1=50,param2=23,minRadius=0,maxRadius=0)
circles = np.uint16(np.around(circles))
for i in circles[0,:]:
# draw the outer circle
cv2.circle(cimg,(i[0],i[1]),i[2],(255,0,0),3)
# draw the center of the circle
cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)
titles = ['Original Image', 'Adaptive Thresholding', "Canny", "Hough Circle"]
images = [img, thresh, canny, cimg]
for i in xrange(4):
plt.subplot(2,2,i+1),plt.imshow(images[i],'gray')
plt.title(titles[i])
plt.xticks([]),plt.yticks([])
plt.show()
]私はあなたが問題のようなタイプのために必要とされている精度のどのタイプか分からないけれども、私は、見栄えの良い結果を得るために、この単一イメージのパラメータを果たしていることを認めますこれではまだ十分ではありません。
円形構造要素を使用し、それははるかに遅くなりますが、それはアーティファクトを低減します。 – FiReTiTi
@FiReTiTi、もう少し詳しく教えていただけますか?可能であれば、Pythonの文脈で。 –
私はpythonを使用しないので、利用できる構造化要素がわかりません。しかし、円形のものは、正方形(マンハッタン距離)に反して、距離(真円近辺/距離)を維持する。 – FiReTiTi