- ВКонтакте
- РћРТвЂВВВВВВВВнокласснРСвЂВВВВВВВВРєРСвЂВВВВВВВВ
- РњРѕР№ Р В Р’В Р РЋРЎв„ўР В Р’В Р РЋРІР‚ВВВВВВВВРЎР‚
- Viber
- Skype
- Telegram
Поиск окружностей на изображении
Необходимо реализовать поиск пузырьков от маленьких условно 1 пиксель до условно 50 пикселей. Встала необходимость реализовать реализовать поиск диаметров пузырей(окружностей).диаметр в пикселях подойдет. Для этих целей использую openCV и Python.
Есть одно большое изображение - фотография из микроскопа. Я ее разрезал средствами OpenCV по кускам и решил их так анализировать.
orig = cv2.imread('image\img.png', cv2.IMREAD_GRAYSCALE)
# img = orig[0:int(blockH*3), int(blockW):int(blockH*4)]
clone = orig.copy()
# Осветляю
clone = cv2.convertScaleAbs(clone, alpha=1.2, beta=100)
structuring_element = np.ones((2, 2), np.uint8)
clone = cv2.dilate(clone, structuring_element, iterations=1)
# Sharpen the image
# Create the sharpening kernel
kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]])
clone = cv2.filter2D(clone, -1, kernel)
gray = cv2.medianBlur(clone, 3)
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 12,
param1=60, param2=10,
minRadius=1, maxRadius=30)
if circles is not None:
circles = np.uint16(np.around(circles))
for i in circles[0, :]:
center = (i[0], i[1])
# circle outline
radius = i[2]
cv2.circle(orig, center, radius, (255, 0, 255), 1)
cv2.imshow("orig", orig)
cv2.waitKey()
И получается вот это:
Что я делаю не так, может подскажите?
Мне кажется что проблем в
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 12,
param1=60, param2=10,
minRadius=1, maxRadius=30)
Изображение перед HoughCircles
Ответы (1 шт):
Так а что вы хотите на выходе? Чтобы окружности не пересекались? Для этого достаточно поиграться параметрами minDist
, minRadius
, maxRadius
. Вот вам меньшее количество не пересекающихся окружностей:
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 60,
param1=60, param2=10,
minRadius=10, maxRadius=30)
Я понимаю, что это наверное не то, что вы хотели, но сформулируйте точно задачу и скажите, что бы вы хотели получить. Ну и нужно экспериментировать с разными параметрами.