Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INGENIERÍA MECATRÓNICA.
IMCT-2010-229.
VISIÓN INDUSTRIAL.
CAF1805.
181010052.
DOCENTE:
SEMESTRE 8.
Para detectar círculos, podemos fijar un punto(x, y). Ahora, estamos obligados a
encontrar 3 parámetros: a, by r. Por tanto, el problema está en un espacio de
búsqueda tridimensional. Para encontrar posibles círculos, el algoritmo utiliza una
matriz 3D llamada "Matriz acumuladora" para almacenar los valores potenciales a,
byr. El valor de a(coordenada x del centro) puede variar de 1 a filas, b(coordenada
y del centro) puede variar de 1 a cols, y r puede variar de 1 a maxRadius = \ sqrt
{filas ^ 2 + columnas ^ 2}.
CÓDIGO.
filter_none
editar
cerrar
play_arrow
enlace código
brillo_4
for a in range(rows):
for b in range(cols):
accum_matrix[a][b][r] += 1
chevron_right
filter_none
• Votación: Elija los puntos en la matriz del acumulador con el valor máximo.
Estos son puntos fuertes que indican la existencia de un círculo con
parámetros a, by r. Esto nos da el espacio de círculos de Hough.
• Encontrar círculos: Finalmente, usando los círculos anteriores como círculos
candidatos, vote de acuerdo con la imagen. El círculo máximo votado en la
matriz del acumulador nos da el círculo.
minDist: este parámetro controla la distancia mínima entre los círculos detectados.
Param2: Este es el umbral del acumulador para los círculos detectados candidatos.
Al aumentar este valor de umbral, podemos asegurarnos de que solo se devuelvan
los mejores círculos, correspondientes a valores de acumulador más grandes.
Detección de Círculos
De un modo muy similar podemos detectar los círculos presentes en una imagen a
escala de grises, veamos un ejemplo de la función cv::HoughCircle(), antes de
aplicar la función usaremos un filtro de mediana para reducir ruido y mejorar los
resultados, esta función devuelve un conjunto de 3 valores, las coordenadas, X e Y
y el radio del círculo.