Utilizamos cookies propias y de terceros para mejorar la experiencia de navegación, y ofrecer contenidos y publicidad de interés.
Al continuar con la navegación entendemos que se acepta nuestra política de cookies.
Iniciar sesión Cerrar
Correo:
Contraseña:
Entrar
Recordar sesión en este navegador
Iniciar sesiónIniciar sesiónCrear cuentaCrear cuenta

Matlab - Segmentar una imágen

  Imprimir  
Vista:

Segmentar una imágen

Publicado por Oscar mauro840321@hotmail.com (3 intervenciones) el 22/02/2012 16:44:33
Hola.
Por favor si me pueden colaborar en el siguiente ejercicio:

Necesito tomar una imágen y hacer que tome el borde de la misma y la redibuje. Me explico:

Tengo una imágen binaria (unos y ceros) que importo imread('C:\...\imagen.jpg'); es decir una mancha negra sobre un fondo blanco y necesito que recorra la matriz y cada vez que encuentre un pixel negro (el primero de cada borde) lo almacene en una nueva matriz para luego mostrar únicamente el contorno de la imágen inicial.

Lo que creo que se debe hacer es realizar 4 bucles para recorrer la imágen en los cuatro sentidos (izquierda a derecha, derecha a izquierda, arriba hacia abajo y de abajo hacia arriba) y cuando localice el primer pixel negro lo vaya almacenando en una nueva matriz para luego ser mostrada.
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
información
Otras secciones de LWP con contenido de Matlab
Imágen de perfil de Dave

Segmentar una imágen

Publicado por Dave correa.dave30@gmail.com (827 intervenciones) el 23/02/2012 22:16:06
Hola Oscar;

De tu consulta noto que tienes claro la funcionalidad de tu programa, creo que lo unico que te falta es programarlo?. Por lo tanto solo te quedaría iniciar a programar, aca en el foro mayormente se apoya en la solución de problemas especificos.

Quizas una alternativa pueda ser que uitlices las funciones de segmentación de imagenes propias de Matlab, te dejo un ejemplo:

% SEGMENTACIÓN
% Si la imagen es RGB, la pasa a escala de grises

if size(imagen,3)==3 %3 planos: RGB
gris=rgb2gray(imagen);
else
gris=imagen;
end

% Binarización con umbral automático *0.60
bina=im2bw(gris,graythresh(gris)*0.60);

% Procesamiento morfológico
bina=bwmorph(bina,'open'); % Eliminar picos
bina=bwmorph(bina,'close'); % Eliminar huecos

% Etiquetar los objetos de la imagen
L=bwlabel(bina);

% Calcular "área" y "caja" de objetos
prop=regionprops(L,{'Area','BoundingBox'});

% Tomar el área máxima
[m pam]=max([prop.Area]);

% "roi" contiene solo la imagen más grande
roi=ismember(L,pam);
ee=strel('disk',18,0);
roi=imdilate(roi, ee);

% Obtener los límites del área máxima
limites=prop(pam).BoundingBox;

% Presentar el área de interés (roi)
imagesc(roi)
colormap gray

Espero que sea de alguna ayuda.

Saludos
Dave Correa
correa.dave30@gmail.com
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Dave

Segmentar una imágen

Publicado por Dave correa.dave30@gmail.com (827 intervenciones) el 23/02/2012 22:17:20
Hola Oscar;

De tu consulta noto que tienes claro la funcionalidad de tu programa, creo que lo unico que te falta es programarlo?. Por lo tanto solo te quedaría iniciar a programar, aca en el foro mayormente se apoya en la solución de problemas especificos.

Quizas una alternativa pueda ser que uitlices las funciones de segmentación de imagenes propias de Matlab, te dejo un ejemplo:

% SEGMENTACIÓN % Si la imagen es RGB, la pasa a escala de grises if size(imagen,3)==3 %3 planos: RGB gris=rgb2gray(imagen); else gris=imagen; end % Binarización con umbral automático *0.60 bina=im2bw(gris,graythresh(gris)*0.60); % Procesamiento morfológico bina=bwmorph(bina,'open'); % Eliminar picos bina=bwmorph(bina,'close'); % Eliminar huecos % Etiquetar los objetos de la imagen L=bwlabel(bina); % Calcular "área" y "caja" de objetos prop=regionprops(L,{'Area','BoundingBox'}); % Tomar el área máxima [m pam]=max([prop.Area]); % "roi" contiene solo la imagen más grande roi=ismember(L,pam); ee=strel('disk',18,0); roi=imdilate(roi, ee); % Obtener los límites del área máxima limites=prop(pam).BoundingBox; % Presentar el área de interés (roi) imagesc(roi) colormap gray
Espero que sea de alguna ayuda.

Saludos
Dave Correa
correa.dave30@gmail.com
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Segmentar una imágen

Publicado por Oscar (3 intervenciones) el 23/02/2012 22:37:29
Hola Dave.

Muchas gracias por responder a mi pregunta.

Voy a probar el código, aunque me hubiese gustado poder manejarlo desde algo más básico, pues la idea es entender cómo Matlab trabaja este tipo de funciones ya implementadas; claramente usando algo de programación estructurada (ciclos for, while, condiciones if, etc).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Dave

Segmentar una imágen

Publicado por Dave correa.dave30@gmail.com (827 intervenciones) el 23/02/2012 22:43:41
Hola Oscar;

De hecho que lo mejor es desarrollar sus propios códigos y entender todo lo que se hacer, pero para eso es necesario saber programar o contratar los servicios de un programador. Pero de todas maneras, serpia bueno que lo intentes.

Espero que sea de alguna ayuda.

Saludos
Dave Correa
correa.dave30@gmail.com
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Dave

Segmentar una imágen

Publicado por Dave correa.dave30@gmail.com (827 intervenciones) el 01/03/2012 02:30:35
Hola Oscar;

Como te fue con el desarrollo de tu código.

Espero que sea de alguna ayuda.

Saludos
Dave Correa
correa.dave30@gmail.com
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Segmentar una imágen

Publicado por Jorge (1 intervención) el 29/05/2014 01:32:18
Mira que eres un capo man....gracias, me has ayudado mucho en mi proyecto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar