Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.
Encuentra círculos usando la transformación circular De ugh
[
encuentra círculos con radios en el rango especificado por .centers
,radii
]
= imfindcircles(A
,radiusRange
)radiusRange
El argumento de salida adicional, , contiene los radios estimados correspondientes a cada centro de círculo en .radii
centers
[
también devuelve un vector de columna, , que contiene las magnitudes de los picos de matriz del acumulador para cada círculo (en orden descendente).centers
,radii
,metric
]
= imfindcircles(A
,radiusRange
)metric
Las filas de y corresponden a las filas de .centers
radii
metric
[___]
= imfindcircles(___,
especifica opciones adicionales con uno o más argumentos de par, utilizando cualquiera de las sintaxis anteriores.Name,Value
)Name,Value
Especifique un relativamente pequeño para una mejor precisión.radiusRange
Una buena regla general es elegir tal y .radiusRange
rmax < 3*rmin
(rmax-rmin) < 100
La precisión de está limitada cuando el valor de (o ) es menor o igual que 5.imfindcircles
radius
rmin
El paso de estimación de radio suele ser más rápido si utiliza el método (predeterminado) en lugar de .'PhaseCode'
'TwoStage'
Ambos métodos de cálculo, y están limitados en su capacidad para detectar círculos concéntricos.'PhaseCode'
'TwoStage'
Los resultados de los círculos concéntricos pueden variar en función de la imagen de entrada.
no encuentra círculos con centros fuera del dominio de la imagen.imfindcircles
preprocesa imágenes binarias (lógicas) para mejorar la precisión del resultado.imfindcircles
Convierte imágenes truecolor a escala de grises utilizando la función antes de procesarlas.rgb2gray
utiliza un algoritmo basado en Circular Hough Transform (CHT) para encontrar círculos en imágenes.imfindcircles
Este enfoque se utiliza debido a su robustez en presencia de ruido, oclusión e iluminación variable.
El CHT no es un algoritmo rigurosamente especificado, más bien hay una serie de enfoques diferentes que se pueden tomar en su implementación. Sin embargo, en general, hay tres pasos esenciales que son comunes a todos.
Computación de matriz de acumuladores
Los píxeles de primer plano de degradado alto se designan como píxeles candidatos y se les permite emitir "votos" en la matriz del acumulador. En una implementación cht clásica, los píxeles candidatos votan en un patrón a su alrededor que forma un círculo completo de un radio fijo. La Figura 1a muestra un ejemplo de un píxel candidato que se encuentra en un círculo real (círculo sólido) y el patrón de votación CHT clásico (círculos desalimentados) para el píxel candidato.
Patrón de votación clásico CHT
Estimación del centro
Los votos de los píxeles candidatos que pertenecen a un círculo de imagen tienden a acumularse en el contenedor de matriz del acumulador correspondiente al centro del círculo. Por lo tanto, los centros de círculo se estiman detectando los picos en la matriz del acumulador. La Figura 1b muestra un ejemplo de los píxeles candidatos (puntos sólidos) que se encuentran en un círculo real (círculo sólido) y sus patrones de votación (círculos desalimentados) que coinciden en el centro del círculo real.
Estimación de radio
Si se utiliza la misma matriz de acumulador para más de un valor de radio, como se hace comúnmente en los algoritmos CHT, los radios de los círculos detectados deben estimarse como un paso independiente.
proporciona dos algoritmos para encontrar círculos en imágenes:imfindcircles
Codificación de fase (predeterminada) y de dos etapas. Ambos comparten algunos pasos computacionales comunes, pero cada uno tiene sus propios aspectos únicos también.
Las características computacionales comunes compartidas por ambos algoritmos son las siguientes:
Uso de la matriz de acumuladores 2D
La transformación clásica de Hough requiere una matriz 3D para almacenar votos para varios radios, lo que da como resultado grandes requisitos de almacenamiento y largos tiempos de procesamiento. Los métodos Phase-Coding y Two-Stage resuelven este problema mediante el uso de una única matriz de acumulador 2D para todos los radios. Aunque este enfoque requiere un paso adicional de estimación de radio, la carga computacional general suele ser menor, especialmente cuando se trabaja en un rango de radio grande. Esta es una práctica ampliamente adoptada en las implementaciones modernas de CHT.
Uso de píxeles de borde
Los requisitos generales de memoria y la velocidad se rigen fuertemente por el número de píxeles candidatos. Para limitar su número, la magnitud del degradado de la imagen de entrada es umbral, de modo que solo se incluyan píxeles de degradado alto en los votos de recuento.
Uso de la información de orientación de borde
Otra forma de optimizar el rendimiento es restringir el número de ubicaciones disponibles para los píxeles candidatos. Esto se logra mediante la utilización de la información de borde disponible localmente para permitir solo la votación en un intervalo limitado a lo largo de la dirección del gradiente (Figura 2).
Modo de votación: Múltiples radios, a lo largo de la dirección del degradado
Rmin | Radio de búsqueda mínimo |
Rmax | Radio de búsqueda máximo |
Ractual | Radio del círculo al que pertenece el píxel candidato |
Cmin | Centro del círculo de radio rmin |
Cmax | Centro del círculo de radio rmax |
Cactual | Centro del círculo de radio ractual |
Los dos métodos CHT empleados por la función difieren fundamentalmente en la forma en que se calculan los radios del círculo.imfindcircles
Dos etapas
Los radios se estiman explícitamente utilizando los centros de círculo estimados junto con la información de la imagen. La técnica se basa en histogramas radiales informáticos.[2][3]
Codificación de fase
La idea clave en la codificación de fase es el uso de valores complejos en la matriz del acumulador con la información de radio codificada en la fase de las entradas de la matriz.[1] Los votos emitidos por los píxeles de borde contienen información no solo sobre las posibles ubicaciones centrales, sino también sobre el radio del círculo asociado a la ubicación central. A diferencia del método de dos etapas en el que el radio debe estimarse explícitamente utilizando histogramas radiales, en La codificación de fase el radio se puede estimar simplemente descodificando la información de fase de la ubicación central estimada en la matriz del acumulador.
[1] T.J Atherton, D.J. Kerbyson. "Size invariant circle detection." Image and Vision Computing. Volume 17, Number 11, 1999, pp. 795-803.
[2] H.K Yuen, .J. Princen, J. Illingworth, and J. Kittler. "Comparative study of Hough transform methods for circle finding." Image and Vision Computing. Volume 8, Number 1, 1990, pp. 71–77.
[3] E.R. Davies, Machine Vision: Theory, Algorithms, Practicalities. Chapter 10. 3rd Edition. Morgan Kauffman Publishers, 2005,
hough
| houghlines
| houghpeaks
| viscircles