2011-10-11 7 views
5

Así que tengo esta matriz en MATLAB, 200 de profundidad x 600 de ancho. Representa una imagen de 2 cm de profundidad x 6 cm de ancho. ¿Cómo puedo trazar esta imagen para que esté bloqueada en las dimensiones adecuadas, es decir, 2 cm x 6 cm? Si utilizo los comandos imagen o imagesc, lo alarga todo y muestra su tamaño incorrecto. ¿Hay alguna manera de bloquearlo para que muestre una imagen donde los ejes xey son proporcionales?Cómo bloquear las dimensiones de la imagen en MATLAB

Segunda pregunta, necesito configurar esta imagen en un marco de 640x480 (margen negro de 20 píxeles a la izquierda y derecha, margen negro de 280 píxeles en la parte inferior). ¿Hay alguna forma de hacer esto?

Respuesta

10

Para mantener la relación de aspecto, puede utilizar axis equal o axis image comandos.

Citando la documentación:

  • axis equal establece la relación de aspecto de manera que las unidades de datos son los mismos en todas direcciones. La relación de aspecto de los ejes x, yy z se ajusta automáticamente según el rango de unidades de datos en las direcciones x, y y z.

  • axis image es el mismo que el eje de la misma, excepto que el diagrama de caja se ajusta firmemente alrededor del data`

Para la segunda pregunta: ¿

third_dimension_size=1; %# for b&w images, use 3 for rgb 
framed_image=squeeze(zeros(640,480,third_dimension_size)); 
framed_image(20:20+600-1,140:140+200-1)= my_600_200_image; 

imagesc(framed_image'); axis image; 
2

set(gca,'DataAspectRatio',[1 1 1])

Segunda pregunta:

new_image = zeros(480,640); 
new_image(20:(200+20-1),20:(600+20-1)) = old_image; 
2

Como alternativa a las otras respuestas, podría querer:

set(gca, 'Units', 'centimeters', 'Position', [1 1 6 2]) 

Asegúrese de hacer esto después de trazar la imagen para obtener las otras propiedades del eje correctas.

Para la segunda pregunta, cuidar con el número de canales de color:

new_image = zeros(480,640, size(old_image)); 
new_image(20:(200+20-1),20:(600+20-1),:) = old_image; 
Cuestiones relacionadas