opencv mser

Significado exacto de los parámetros dados para inicializar MSER en OpenCV 2.4.x?



(4)

Encontré la respuesta a mi pregunta gracias a this enlace.

Los MSERs se obtienen variando el umbral de intensidad T de 0 a 255. Delta decide el conteo menor de esa variación. Entonces, el tamaño {i} se refiere al tamaño o área de la región con el valor de intensidad i en una imagen en escala de grises.

Volveremos con una explicación de MaxVariation y MinDiversity pronto.

El manual de referencia de OpenCV (2.4.x) establece que el constructor que inicializa MSER requiere los siguientes parámetros:

delta, min_area, max_area, max_variation, min_diversity, max_evolution, area_threshold, min_margin, edge_blur_size.

Estoy tratando con imágenes en escala de grises. ¿Cuál es el uso de los parámetros "delta", "max_variation" y "min_diversity"? ¿Qué propiedad de un MSER ayudan a controlar estos parámetros?

He intentado mucho para encontrar la respuesta exacta a esto y solo pude encontrar un poco de información en las páginas siguientes (ninguna de las cuales fue particularmente útil para decirme qué controlan exactamente estos 3 parámetros): 1. OpenCV wiki 2. Wikipedia descripción de MSER 3. preguntas de MSER en STackOverflow

¡Por favor ayuda!


Matlab tiene una función casi idéntica MSER. En Mathworks puedes encontrar muy bien explicados para qué son esos parámetros, en mi opinión.

Copiaré las 2 definiciones de entradas que pidas (no hay opciones, en Matlab, para imágenes en color):

  • _delta . Tamaño de paso entre niveles de umbral de intensidad, especificado como el par separado por comas que consiste en ''ThresholdDelta'' y un valor numérico en el rango (0,100). Este valor se expresa como un porcentaje del rango de tipo de datos de entrada utilizado en la selección de regiones extremas mientras se prueba para su estabilidad. Disminuya este valor para devolver más regiones. Los valores típicos van de 0.8 a 4.

  • _max_variation . La variación máxima de área entre las regiones extremas a diferentes umbrales de intensidad, se especifica como el par separado por comas que consiste en ''MaxAreaVariation'' y un valor escalar positivo. Aumentar este valor devuelve un mayor número de regiones, pero pueden ser menos estables. Las regiones estables son muy similares en tamaño a diferentes umbrales de intensidad. Los valores típicos van de 0.1 a 1.0.

Sin embargo, como dice penelope , el documento original es muy útil para una comprensión más profunda del proceso completo. Además, doy this referencia de una comparación muy interesante entre los detectores de funciones conocidas.


Voy a suponer que conoces los conceptos básicos de cómo funciona la detección de funciones MSER (si no, Wikipedia , y la recapitulación corta sigue).

Tienes dos tipos de regiones MSER, positivas y negativas.

Primer tipo, obtienes por umbrales con todas las intensidades (para imágenes en escala de grises, de 0 a 255 ). Por ejemplo, para un umbral T = 100 , todos los píxeles con intensidad <= 100 se asignan en black , o en foreground , y todos los píxeles > 100 intensidad son white o de background .

Ahora, imagine que está observando un píxel específico p . En algún umbral, llamémoslo T1 , comenzará a pertenecer al primer plano y permanecerá así hasta que T=255 . En T1 un píxel pertenecerá a un componente CC_T1(p) . 5 niveles de gris más tarde, pertenecerá al componente CC_(T1+5)(p) .

Todos estos componentes conectados, obtenidos para todos los umbrales, son candidatos potenciales para MSER. (Se obtiene otro tipo de componentes si invierte mis asignaciones de black/foreground y white/background para el umbral).

Los parámetros ayudan a decidir qué candidatos potenciales son realmente estables:

  • delta

    Para cada región, se mide la variación :

    V_T = (size(CC_T(p))-size(CC_{T-delta}(p)))/size(CC_{T-delta}(p))

    para cada umbral posible Ti . Si esta variación para un píxel es un mínimo local de una variación, es decir, V_T > V_{T-1} y V_T > V_{T+1} , la región es máximamente estable .

    El parámetro delta indica a través de cuántos niveles de grises diferentes debe ser estable una región para que se considere máximamente estable. Para un delta más grande , obtendrá menos regiones .

    Nota: En el documento original que presenta las regiones MSER, la fórmula real es:

    V_T = (size(CC_{T+delta}(p))-size(CC_{T-delta}(p)))/size(CC_T(p))

    La implementación de OpenCV usa una fórmula ligeramente diferente para acelerar la extracción de características.

  • minArea , maxArea

    Si una región es máximamente estable, aún puede rechazarse si tiene menos de minArea píxeles o más de maxArea píxeles.

  • maxVariation

    Volver a la variación del punto 1 (la misma función que para delta): si una región es máximamente estable, aún puede rechazarse si la variación de las regiones es mayor que maxVariation .

    Es decir, incluso si la región es "relativamente" estable (más estable que las regiones vecinas), puede que no sea lo suficientemente "estable". Para maxVariation más pequeño , obtendrá menos regiones

  • minDiversity

    Este parámetro existe para podar regiones que son muy similares (por ejemplo, difieren solo por unos pocos píxeles).

    Para una región CC_T1(p) que sea máximamente estable, encuentre una región CC_T2(p) que sea la "región primariamente estable primaria". Eso significa que T2 > T1 , CC_T2(p) es una región máximamente estable y no hay T2 > Tx > T1 tal que CC_Tx(p) sea ​​máximamente estable. Ahora, compare cuánto más grande es el padre:

    diversity = (size(CC_T2(p)) - size(CC_T1(p))) / size(CC_T1(p))

    Si esta diversity es menor que maxDiversity , elimine la región CC_T1(p) . Para una mayor diversidad , obtendrá menos regiones .

    (Para la fórmula exacta para este parámetro tuve que excavar a través del código del programa)


  • Delta delta, en el código, se compara (size_{i}-size_{i-delta})/size_{i-delta} . predeterminado 5.
    • MinArea poda el área que es más pequeña que minArea. por defecto 60.
    • MaxArea poda el área que es más grande que maxArea. por defecto 14400.
    • MaxVariation poda el área de tamaño similar a sus hijos. por defecto 0.25
    • MinDiversity realiza un seguimiento para cortar mser con diversity <min_diversity. por defecto 0.2.
    • MaxEvolution para imagen en color, los pasos de evolución. por defecto 200.
    • AreaThreshold el umbral del área para provocar la reinicialización. por defecto 1.01.
    • MinMargin ignora un margen demasiado pequeño. por defecto 0.003.
    • EdgeBlurSize el tamaño de apertura para el desenfoque de bordes. predeterminado 5.
    • Máscara Máscara de entrada opcional que marca las regiones donde debemos detectar características