Estoy trabajando, usando OpenCV/C++ framework, en un programa que básicamente cuenta objetos elípticos que pueden superponerse.Cómo filtrar contornos formados por círculos superpuestos en OpenCV
Después umbral de la imagen y encontrar los contornos de todos los objetos
Mi siguiente paso consiste en excluir objeto que no están hechos de elipses superpuestas (lo haré segmento de los restantes más adelante).
que terminan en marcha con objetos tales como éstos:
En esta imagen de ejemplo, todos los objetos de la derecha son negativos, mientras que los de la izquierda son válidos.
Mi filtro actual excluye el objeto principalmente en el terreno de su isoperimetric quotient. Sin embargo, como tengo objetos con diferentes tamaños y ruido, no siempre estoy satisfecho con este enfoque.
Idealmente, me gustaría tener una métrica adicional para aumentar la eficiencia de mi filtro actual.
Como tengo que repetir este análisis en muchos contornos, no debería ser costoso.
He pensado en enfoques tales como:
- algo basado en un histograma del valor del ángulo entre todos los tripletes de puntos sucesivos en el contorno?
- Ajustando matemáticamente una "poli-elipse" (no tengo idea de cómo hacerlo)?
- ¿Cadenas de hombres libres?
Pero estoy convencido de que me perdí algo obvio que es más eficiente y menos complicado. ¿Tiene alguna sugerencia, Gracias :),
EDIT: Como sugirió con razón Regis, de cualquier forma, de hecho, podría estar hecho de un número suficiente de círculos. Por lo tanto, con el fin de hacer que mi problema soluble, que se sumarán los siguientes supuestos:
- no más de 16 puntos suspensivos/objeto.
- Las elipses no pueden ser plana: Eje mayor/eje menor < 3.
- Dentro de un objeto, el área más grande de la elipse sobre el área de la más pequeña debe ser inferior a 10.
Que usted, trataré de entenderlo. ¿Tienes algún enlace con el que comenzar? –