Matlab - Determinación silueta de pez suavizada en imagen con Matlab

 
Vista:
sin imagen de perfil

Determinación silueta de pez suavizada en imagen con Matlab

Publicado por José (1 intervención) el 09/09/2016 09:54:47
Hola! buenos días trabajo en un programa de análisis de vídeos de peces, tengo el programa listo excepto por una cosa, suavizar la imágenes y evitar perdidas de áreas importantes, ya que toda la información que extraigo viene a partir de esta y para la determinación de un dato necesito mucha precisión en la imagen, algo que no tenía previsto cuando inicié este proyecto.

-A partir del vídeo obtengo las imágenes de los fps digamos 1)

-Estos son pasados a escala de grises 2)

-escala de grises invertidos 3)

-transformados en bw (casi binario) 4)

-binarios (0,1) 5)

para decidir si transformar a binario se escoge un umbral, tengo un programa para determinar el ideal, pero no da buenos resultados, y al hacerlo manual para grandes volúmenes de imágenes se producen errores horribles como el de a continuación (debo procesar miles de fotos)

imagenbin0049

la distribución también cambia, en otras el área es mayor atrás que adelante lo cual me cambia mucho el centroide, leyendo en internet varios papers me encontré con esto (el método estándar y más usado para estos estudios)

14249351_10211051915513233_452060778_n-1

por lo cual empecé a trabajar en tratar de encontrar la silueta del pez, para luego transformarla a puntos, unirlos y suavizar la curva y obtener una buena aproximación de la realidad (a través de polyfit, polyval y spline los cuales sé ocupar)
pero antes de esto debía decidir en cual de los pasos iba a tratar de conseguir la silueta

de derecha a izquierda y luego abajo; 4) 5) 3) 1)

varios-ploteos


traté con la función edge y los métodos 'Canny','log', Prewitt, Roberts, Sobel, zerocross, en los diferentes momentos teniendo resultados con casi todas en la 4) binaria, en el resto no, pero tristemente obtenía la silueta cuando ya esta muy deformada y no es lo que busco.
Después se me ocurrió hacerlo con la 3) y obtuve lo siguiente(solamente con el método canny):

canny

pero la foto tiene mucha suciedad, con lo cual llego a un punto muerto.

Sé como rellenar la silueta, teniendo los puntos unirlos y suavizarlos, pero no sé como obtener esta silueta en una foto limpia para poder hacer los cálculos con ella, de verdad que agradecería mucho, consejos de como hacerlo, saludos, gracias por leer!.


PD: Traté de usar filtros con la imagen binaria, además de erosiones y dilataciones pero no obtuve resultados.

Agradeciendo su tiempo me despido!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder