Segmentación de material semitransparente, p. Ej. Vidrio

11

Estoy totalmente atrapado en un problema relacionado con la segmentación de objetos vítreos. Necesito obtener el objeto lo más preciso posible. Mis enfoques fueron diferentes. Al principio intenté eliminar el fondo, de modo que solo quedaran algunos contornos afilados. Pero eso solo funciona para objetos que tienen bordes / gradientes afilados. De lo contrario, el objeto en sí también se elimina. Publiqué dos imágenes diferentes.

imagen 1 imagen 2

Traté de eliminar el fondo mediante operaciones morfológicas, como la dilatación en escala de grises y una división en él. Pero no ayudó mucho. después de eso, probé un k-means con k = 3 para separar el fondo modificado de los valores gris y negro del vidrio. Eso no fue exitoso en algunos casos, pero no en general / en promedio. También intenté hacer una detección de bordes astutos con un filtro borroso general, pero eso condujo a resultados más débiles en forma de contornos abiertos, mucho ruido, etc.

Canny con resultados de umbral automático:

testimg = imread('http://i.imgur.com/huQVt.png');  
imshow(testimg)
imedges = edge(testimg,'canny');
imshow(imedges);

Lo mismo vale para la segunda imagen.

salida canny # 1 salida canny # 2

Como puede ver, hay mucho ruido dentro y fuera y dobla los bordes desde el borde de cristal. Incluso hay huecos en los bordes.

Por lo tanto, necesito sus consejos para obtener un enfoque general para abordar este problema de los materiales semitransparentes, no solo para estas dos imágenes.

1) ¿Otras ideas para eliminar el fondo sin dañar el objeto?

2) ¿Otros métodos de segmentación para separar el objeto del fondo?

Si es posible, entonces con sugerencias de Matlab, IPT o caja de herramientas estadísticas. ¡Cualquier otra sugerencia también es bienvenida!

Gracias por su respuesta de antemano. Sinceramente

mchlfchr
fuente
¿El fondo es siempre idéntico?
endolito el
casi, difiere un poco en más oscuro / brillante.
mchlfchr
1
Restar bien el fondo de cada imagen sería un comienzo, haciéndolo más uniforme: imgur.com/9WhcB
endolith
1
¿Qué quieres decir? ¿Tienes una foto del fondo sin vidrio?
endolito
1
@DennisJaheruddin Sé que un borde NO es una línea negra. Un borde se define como un cambio en la intensidad / frecuencia, lo que significa que sus valores grises cambian más o menos rápido. Sin embargo, como puede ver fuera del contexto, el método Canny no será el arma de elección aquí, debido al fondo obtendré mucho ruido (con Canny). Y no puedo predecir el umbral automático / sigma. Por lo tanto, necesito un método que elimine el fondo, pero no el objeto en sí.
mchlfchr

Respuestas:

3

¿Por qué no usar un simple archivador de paso alto 2D FFT (guassian)?

Hice esto muy rápido usando MATLAB

Fragmento # 1 usando paso alto FFT:

http://i47.tinypic.com/rbjxnd.jpg

Lo mismo se hace en el n. ° 2.

Fragmento # 2 usando paso alto FFT:

http://i45.tinypic.com/209kms0.jpg

Como puede ver, el fondo y el área de cristal se borran, y solo se trazan los bordes. No pasé ningún tiempo en ello, pero puede limitar la salida filtrada de HP para tener bordes más nítidos o empujar el corte de HP más alto.

¿Son estos los resultados que busca obtener?

Ariel Bentolila
fuente
1

Este no es un intento de responder a toda la pregunta, pero tengo una idea sobre "limpiar la imagen" .

Dijiste que ya intentaste operaciones morfológicas , y esta es una variación de la idea, con suerte una actualización.

Este artículo: A. Vichik, R. Keshet, D. Malah: La morfología auto dual en los semilattings y las aplicaciones de los árboles propone una forma de mejorar los operadores morfológicos clásicos de una manera que pueda agregarles propiedades más deseables.

El artículo sugiere elegir una representación jerárquica de una imagen de acuerdo con las propiedades deseables, y luego propone un método para definir operadores como erosión, dilatación, apertura, sombrero de copa en esa representación . En sus propias palabras:

Hemos presentado un marco general para producir nuevos operadores morfológicos (...)

Expliqué estas estructuras jerárquicas en forma de árbol en la segunda parte de esta respuesta ( enfoques semánticos ) , a la que puede agregar el árbol de la cuenca de Extrema mencionado en el artículo que vinculé aquí (y nuevamente) .

Es una actualización de (citando a los autores) "morfología matemática tradicional en escala de grises" porque las operaciones mantienen las propiedades deseables de las representaciones . Por ejemplo, si su representación jerárquica es dual, sus operadores serán realmente dual (por ejemplo, compárelos con la apertura-cierre cuasi -dual-dual por reconstrucción que no es realmente dual-dual).

El artículo vinculado también presenta algunos resultados al filtrar el ruido : puede comparar sus resultados del artículo (y de la Tesis mencionada en el artículo) con lo que necesita (al menos visualmente) y ver si funciona para usted antes de comenzar codificar.

Entonces, si bien elegir el árbol de representación más simple (max- / min-) producirá exactamente las operaciones clásicas, elegir un árbol self-dual que mejor se adapte a sus necesidades podría darle un enfoque lo suficientemente robusto.

penelope
fuente