¿Cómo eliminar cierto fondo de la imagen?

11

naranja

Esta fue la imagen obtenida después del filtrado de Gabor ... ¿Hay alguna forma de eliminar las líneas dentro de la imagen, excepto el defecto redondeado blanco brillante.

Intenté otra orientación del filtro gabor, vaya el siguiente resultado:

ingrese la descripción de la imagen aquí

Después del umbral: lo cual está bien pero no es genial

ingrese la descripción de la imagen aquí

Después del filtrado medio:

ingrese la descripción de la imagen aquí

Gracias por adelantado

vini
fuente
2
Buen trabajo con el filtro mediano. Estás en camino.
Repensar el
Este parece ser un buen escenario para aplicar un filtro de difusión. Además, trate de pedir en: <br/> dsp.stackexchange.com/ <br> photo.stackexchange.com/ <br>
Danny Varod
¿Aplicaste el filtro de mediana después del umbral? Si es así, pruébelo sin el umbral.
Danny Varod
Sí, lo intenté después del umbral y obtuve casi el mismo resultado cuando lo hice también antes
vini

Respuestas:

12

Si la salida de su filtro Gábor es confiable y la variación en sus datos de imagen no es tan alta como para que el resultado se vea completamente diferente, entonces puede usar el siguiente enfoque (partes de él donde ya se mencionó):

  1. Binarice su segunda imagen con cualquier algoritmo de umbral automático. El rango de umbrales que funcionará es grande como verá.

  2. Use un algoritmo de etiquetado de componentes para etiquetar cada región de píxel conectada con un valor único.

  3. Calcule para cada componente de su imagen una propiedad que describa qué tan cerca está su objeto de un círculo relleno. Para esto, puede usar, por ejemplo, la compacidad . Usé debajo de la fracción de píxeles dentro del radio de disco equivalente . Este radio es el radio de un disco con la misma área que tendría su objeto.

    1. El área simplemente cuenta el número de píxeles de su objeto
    2. Calcular el radio de un círculo dada su área también debería ser manejable
    3. Para el píxel dentro de este radio, necesita el centro de cada objeto de imagen, pero esta es solo la media de todas las posiciones de los píxeles del objeto. Si usted es físico, entonces conoce el centro de masa de varios puntos de masa. Esto es equivalente
    4. Ahora calcula para cada píxel de cada objeto la distancia desde su centro y verifica si es más pequeño o no que el radio del círculo. Al dividir los dos números, obtienes la fracción de píxel interno y externo.
  4. Toma el objeto con la fracción más alta. Nota: los objetos con un solo píxel obtendrán un valor de 1. Por lo tanto, debe establecer un umbral de tamaño y tomar solo objetos más grandes, digamos 10 píxeles.

Para ver que una binarización automática debería funcionar, aquí están los resultados para un umbral muy bajo y muy alto:

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Actualizar etiquetado de componentes

La elección del etiquetado de componentes no es crítica para su aplicación. Sugeriría, si tiene que implementarlo usted mismo, usar un método muy simple. La versión de un paso del sitio de Wikipedia es muy fácil. Básicamente, usted itera a través de su imagen binaria y cuando encuentra un píxel que es blanco y aún no está etiquetado, usa una nueva etiqueta para este objeto y comienza con este píxel.

El proceso de etiquetar este objeto con una etiqueta es básicamente similar a un relleno de inundación. Esto está en el sitio de Wikipedia los pasos internos 1-4 en el algoritmo. Comienza con este píxel etiquetado y coloca a todos sus vecinos en una pila (usaron un vector ). Para un píxel en la pila, verifica si está en primer plano y no está etiquetado. Si tiene que etiquetarlo, vuelve a poner todos sus vecinos en la pila. Haga esto hasta que su pila esté vacía.

Luego continúa escaneando la imagen. A diferencia de la descripción en el sitio Wiki, no tiene que eliminar un píxel de su imagen original, simplemente omite cuando tiene un valor diferente de 0 en su imagen de etiqueta.

halirután
fuente
¿A qué algoritmo de etiquetado se refiere usted aquí?
vini
1
@vini, actualicé mi publicación. Phonon, gracias. Utilizamos muchas medidas morfológicas y especialmente la compacidad fue muy útil hace un tiempo.
sí genial lo tengo :)
vini
6

Algunas ideas

  1. Filtre los bordes según la densidad de las resistencias de los bordes. Usando una aproximación de un núcleo circular, encuentre la resistencia media del borde (o alguna otra medida). Pase a través de cualquier borde en o por encima del valor del umbral, configure en negro cualquier borde por debajo del umbral.
  2. Use una operación morfológica de "cierre" (dilatación seguida de erosión) para limpiar la imagen, luego use un algoritmo de etiquetado de región (también conocido como componente conectado, blobs) para encontrar todos los blobs. Filtre los datos de blob según el tamaño, la relación de los ejes mayor a menor, etc.
  3. Pruebe el desenfoque gaussiano, encuentre un umbral de binarización para segmentar la luz de la oscuridad y luego filtre las gotas como se describe en el paso 2 anterior. (Para una aproximación rápida de un desenfoque gaussiano, apriete los párpados en su mayoría y entrecierra los ojos ante la imagen).
  4. Pruebe algunos filtros en Photoshop o GIMP.

EDITAR: después de su paso medio de filtrado, está casi todo el camino allí. ¡Buen trabajo! El ítem 2 que sugerí anteriormente (cierre, luego etiquetado de región) es una técnica para llevarlo el resto del camino.

Repensar
fuente
sí intentará eso te permitirá saber lo que sucede
vini
1

Puedes probar contornos activos. Aunque puede ser lento, puede manejar casos complicados como este.

O puede utilizar algunos conocimientos previos para procesar esta imagen. Por ejemplo, usted sabe que la cosa blob es 'grande' y 'conectada'. Por lo tanto, cuando cuenta el número de cada región conectada, puede encontrarlo.

trampa
fuente