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