Matlab - Tratamiento de imágenes

   
Vista:

Tratamiento de imágenes

Publicado por Álvaro (20 intervenciones) el 22/01/2015 13:25:45
Buenas tardes.

Haré un ejemplo de lo que tengo que hacer para después lanzar mi pregunta:

1 - Cargo una imagen en MatLab:
1
I = imread('circuit.tif');
y la muestro:
1
imshow(I);

2 - Creo dos vectores que definan una línea recta y la muestro sobre la imagen anterior:

1
x = [100 200]; y = [200 250]; hold on; plot(x,y,'r');


Mi pregunta es: ¿se puede guardar ahora la imagen actual? Es decir, mi objetivo es poder llamar la imagen actual (con la linea roja superpuesta) desde una variable (J por ejemplo) para poder hacer
1
imshow(J)
, y mostrar lo mostrado en los pasos 1 y 2.

Muchas gracias de antemano.
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
Imágen de perfil de Jorge De Los Santos

Tratamiento de imágenes

Publicado por Jorge De Los Santos (212 intervenciones) el 22/01/2015 18:03:34
Hola Álvaro.

Te dejo una forma de cómo podrías implementarlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
clear;clc;
I = imread('circuit.tif');
% Imagen original
imshow(I);
x = [100 200]; y = [200 250]; hold on; plot(x,y,'r');
img_mod = getframe(gca);
img_mod = img_mod.cdata; % Imagen modificada
% Mostramos ambas imágenes
subplot(1,2,1);
imshow(I);
subplot(1,2,2);
imshow(img_mod);
% Si quieres guardar la imagen modificada puedes utilizar imwrite
imwrite(img_mod,'img_mod.png');



Saludos.

Jorge De Los Santos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Tratamiento de imágenes

Publicado por Álvaro (20 intervenciones) el 22/01/2015 18:09:11
Eso es exactamente lo que buscaba, muchas gracias Jorge.
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 Daniel

Tratamiento de imágenes

Publicado por Daniel (212 intervenciones) el 22/01/2015 18:18:51
podes probar usando la función getframe, pero ten cuidado que es una captura de pantalla y por lo tanto te cambia la calidad y dimensiones de la imagen a veces.


1
2
I3=getframe;
imshow(I3.cdata)


Otra opcion es escribir punto a punto los pixeles rojos eso sería algo así


1
2
3
4
5
6
7
8
9
10
I2=I;
np=10*max(diff(x),diff(y));
xv=round(linspace(x(1),x(2),np));
yv=round(linspace(y(1),y(2),np));
for j=1:np
I2(xv(j),yv(j),1)=255;
I2(xv(j),yv(j),2)=0;
I2(xv(j),yv(j),3)=0;
end
imshow(I2)

esta forma mantiene el tamaño y la calidad de la imagen original

Saludos

Dnaiel
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