2009-09-15 12 views
5

¿Podemos mostrar una imagen en su tamaño original en MATLAB?MATLAB: muestra una imagen en su tamaño original

Ahora cuando estamos mostrando, está exactamente ajustado al tamaño de la ventana de la imagen. Sin embargo, quiero mostrar la imagen en su tamaño original. Cuando la imagen es de mayor tamaño, debe aparecer una barra de desplazamiento en la ventana de la imagen. Esto permitiría al usuario ver la imagen en su tamaño original.

¿Alguna idea sobre cómo lograr esto? es posible?

Respuesta

7

Creo que lo que estás buscando es la utilidad IMTOOL (que es una parte de Image Processing Toolbox). Es una GUI de MATLAB que le permite ver imágenes en su tamaño original (100% de aumento) con controles deslizantes horizontales y verticales.

EDIT:

La solución anterior se mostrará su imagen en una ventana nueva figura (la interfaz gráfica de usuario IMTOOL). Si no desea que la imagen aparezca en una nueva ventana, sino que desea ajustar su tamaño en una ventana propia, será más difícil. Para ajustar el tamaño de la imagen, que supongo que ha mostrado en un conjunto de ejes usando el comando IMAGE, tendrá que ajustar un número de axes properties para los ejes que contienen la imagen. Las siguientes son las propiedades es probable que el resultado final será la modificación:

  • 'Units': esto se puede establecer a 'inches', 'centimeters', o 'pixels', por ejemplo.
  • 'Position': Controla dónde se colocan los ejes en la ventana de figura, en unidades gobernadas por la propiedad 'Units'.
  • 'DataAspectRatio'/'PlotBoxAspectRatio': Controlan la escala relativa de los ejes y del cuadro de trazado circundante.
  • 'XLim'/'YLim': los valores mínimo y máximo de los ejes.

Después de obtener el tamaño y la escala de la imagen para mostrar de la manera que desee, partes de la imagen podrían estar fuera del área de la ventana de la figura. Lamentablemente, los controles deslizantes horizontales y verticales no se agregarán automáticamente. Tendrá que crear estos controles deslizantes usted mismo usando la función UICONTROL. Tendrá que escribir las funciones de devolución de llamada para los controles deslizantes de modo que muevan los ejes en la ventana.

Si decide aventurarse por el camino más arriba, aquí hay algunos enlaces a tutoriales de diseño de interfaz gráfica de usuario que pueden ayudarle a: a slider tutorial on blinkdagger, a blog post by Doug Hull y a video from Doug on GUIDE basics.

+1

Debería señalarse que imtool está en la Caja de herramientas de procesamiento de imágenes. –

+0

@Richie: Buen punto. Agregué tu comentario a la respuesta. – gnovice

2

El control deslizante de Matlab tiene el problema de que activa la devolución de llamada solo en MouseUp y no en MouseMove, por lo que la implementación de matlab puro siempre se siente extraña.

Mejor manera: ir a Java en Matlab. Por lo tanto, no tiene que volver a implementar lógicas completas de desplazamiento. Puede poner el componente GUI de Java Swing dentro de la ventana de Matlab, no es nada difícil.

Específicamente tiene que utilizar Swing JScrollPane Class. Con la función Matlab javacomponent() puede colocarlo dentro de la ventana de matlab.

Hay un montón de ejemplos en la web sobre cómo obtener imágenes en el panel de desplazamiento, solo busque JScrollPane image.Puede utilizar las clases de Java dentro de MATLAB con la sintaxis de Matlab habitual

+1

Para su información, hay una manera de hacer que un deslizador de MATLAB ejecute una devolución de llamada cuando se arrastra, aquí se dirige: [En MATLAB, ¿cómo se puede ejecutar una devolución de llamada mientras se arrastra un control deslizante?] (Http://stackoverflow.com/ q/6032924/52738) – gnovice

1

intento (sin necesidad de new palabra clave, ecc.): figura, imshow (your_image), la imagen eje Esto cambia el eje de imagen al tamaño original

Cuestiones relacionadas