jueves, 24 de julio de 2014

Leer y mostrar imágenes con MATLAB


De forma habitual, se utilizan las funciones del Image Processing Toolbox de MATLAB para importar, procesar y visualizar imágenes, más concretamente las funciones imread e imshow para leer y mostrar imágenes respectivamente. Pero además de las anteriores, puede utilizarse algunas funciones que forman parte del núcleo de MATLAB para dichas tareas, tales como importdata e image / imagesc, evidentemente pueden presentar ciertos inconvenientes, pero representan una alternativa en el caso de no contar con el toolbox requerido.

Leer una imagen con imread

La sintaxis de la función imread es muy sencilla, a saber:

>> imread('nombre_img','formato');

Donde nombre_img es el nombre de la imagen o bien la ruta completa de la imagen en el caso que no se encuentre en el Current Folder, formato es justamente eso: el tipo de imagen que vamos a leer (PNG, JPG, GIF, TIFF, etc...), es común omitir el segundo argumento e incluir, claro, la extensión del archivo en el nombre del mismo. Para ejemplificar utilizaré una imagen cuyo nombre es "img", en formato jpg y que se encuentra almacenada en el directorio actual de trabajo, luego para leer la imagen se tendría que hacer lo que a continuación se muestra:

>> X=imread('img.jpg');

Al teclear la instrucción anterior MATLAB crea una matriz X en la cual se guarda  la información de cada uno de los píxeles que componen la imagen. Podemos verificarlo utilizando el comando whos como sigue:

>> whos X
  Name        Size                Bytes  Class    Attributes

  X         300x400x3            360000  uint8       

Revisando lo que MATLAB nos devuelve podemos identificar que la matriz creada está compuesta de 300 filas, 400 columnas y tres capas o planos correspondientes al modelo de color RGB (Red, Green, Blue), es decir, cada capa corresponde a la intensidad de cada uno de los colores. Además, la clase de datos utilizados son uint8 (entero sin signo de 8 bits) cuyo rango es de 0 a 255.


Mostrar una imagen con imshow

Una vez se ha leído y almacenado la imagen podemos utilizar la función imshow para visualizarla, la sintaxis de esta función es:

>> imshow(IMG);

Donde IMG es la matriz en la cual se ha guardado la información referente a la imagen. Para nuestro caso:

>> imshow(X);



Utilizando importdata e imagesc

Además de imread, es posible leer una imagen utilizando la función importdata, la sintaxis es:

>> X=importdata('nombre_img');

Para el ejemplo que hemos utilizado:

>> X=importdata('img.jpg');

Una vez almacenada la imagen podemos utilizar la función imagesc para mostrar la imagen:

>> imagesc(X);



Y como tal, el objetivo de esta entrada era simplemente adquirir y visualizar las imágenes. En posteriores entradas se hará referencia a algunas operaciones básicas que pueden aplicarse a una imagen, o mejor dicho, a la matriz que guarda la información de la misma.

9 comentarios:

  1. Buenas noches. Es posible leer varias imágenes simultáneas?

    ResponderBorrar
  2. Hola buen día...es posible leer varias imágenes simultáneas con matlab? Gracias.

    ResponderBorrar
  3. si es posible, utiliza subplot para crear una especie de matriz
    subplot(filas,columnas,lugar de la matriz en el que se encontrará tu imagen)
    por ejemplo:
    subplot(2,2,1) esta va a ser una matriz de 2x2 y la imagen aparecerá en el primer puesto
    el subplot irá antes del imshow o imagesc

    ResponderBorrar
  4. Cula seria el codigo para cargar y leer una imagen el cual yo elija, o sea, una imagen no definida por el nombre

    ResponderBorrar
  5. Cual seria el codigo para cargar y leer una imagen el cual yo elija, o sea, una imagen no definida por el nombre

    ResponderBorrar
  6. Hola es posible cargar una imagen a una esfera 2d que se proyecto usando plot???
    Gracias

    ResponderBorrar
  7. LA IMAGEN VA EN LA MISMA CARPETA DEL PROGRAMA O PONGAN LA RUTA COMPLETA DE LA DIRECCION DEL ARCHIVO.

    imshow(im) no mostrara LA IMAGEN SI NO CREAS ANTES UNA FIGURA PARA PONERLA
    EJEMPLO:

    im = imread('C:\Users\Alberto\Desktop\prueba\ipn.jpg'); %cargar la imagen en la misma carpeta o llamar por directorio
    im = imread('ipn.jpg');
    figure; % a fuerzas necesitas crear una figura porque imshow no lo hace como por ejemplo plot
    imshow(im); %comando para cargar la figura

    ResponderBorrar
    Respuestas
    1. Estimado gracias pero sigue sin funcionarme apliqué el codigo que mandaste, no algunos errores podrias ayudarme ? please

      Borrar