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.
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.
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
Respuestas:
¿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:
Lo mismo se hace en el n. ° 2.
Fragmento # 2 usando paso alto FFT:
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?
fuente
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:
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.
fuente