Python e OpenCV. Como detecto todos os círculos (preenchidos) / objetos redondos em uma imagem?

Estou tentando criar um programa que abra uma imagem, verifique se há círculos / formas redondas e retorne as coordenadas para que eu possa usar ocv.Circle para desenhar círculos sobre o círculo detectad

Minha pergunta é: Como obtenho as coordenadas / raios dos círculos detectados em uma imagem usandocv.HoughCircles() ?

Usingist page, descobri como detectar os círculos (o que demorou muito tempo para descobrir, pois não entendo termos como limiar e a documentação do OpenCV para Python é realmente ruim, quase nenhuma). Infelizmente, nessa página, não foi mostrado como extrair as informações de cada círculo detectado doCvMat criada. Como extraio essas informações / existe alguma outra maneira (por exemplo, comMemoryStorage())?

Este é o meu código até agora:

import cv, opencv

def main():


    im = cv.LoadImageM("Proba.jpg")

    gray = cv.CreateImage(cv.GetSize(im), 8, 1)
    edges = cv.CreateImage(cv.GetSize(im), 8, 1)

    cv.CvtColor(im, gray, cv.CV_BGR2GRAY)
    cv.Canny(gray, edges, 50, 200, 3)
    cv.Smooth(gray, gray, cv.CV_GAUSSIAN, 9, 9)

    storage = cv.CreateMat(im.rows, 1, cv.CV_32FC3)

    cv.HoughCircles(edges, storage, cv.CV_HOUGH_GRADIENT, 2, gray.height/4, 200, 100)
    # Now, supposing it found circles, how do I extract the information?
    print storage.r



if __name__ == '__main__':
    main()

Além disso, qual o valor dos dois últimos parâmetros deHoughCircles precisa ter para eu detectar círculos realmente pequenos (como 3 mm na tela)?

Obrigado a todos pelo seu tempo e esforço tentando me ajudar!

A imagem com a qual estou trabalhando é esta:

questionAnswers(3)

yourAnswerToTheQuestion