Matlab - Cargar varias Imagenes para posterior procesado

 
Vista:
sin imagen de perfil

Cargar varias Imagenes para posterior procesado

Publicado por San (5 intervenciones) el 30/06/2016 18:48:14
Hola
Soy nueva con Matlab, y necesito cargar varias imagenes que tengo en formato ASCII, actualmente lo hago una por una con importdata y luego extraigo solo los datos numéricos de ".data", pero son muchas imagenes y quisiera saber si con algún algoritmo podría cargarlas y guardarlas en distintas variables (matrices) para realizar una serie de operaciones de procesamiento.

Gracias!
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 Daniel
Val: 269
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Cargar varias Imagenes para posterior procesado

Publicado por Daniel (264 intervenciones) el 30/06/2016 23:39:42
Hay varias maneras de hacerlo, depende un poco de que tipo de imágenes son(color o escala de grises), como quieras almacenarlas (en un único array, en celdas), de los nombres de los archivos originales, del procesamiento que quieras hacer, etc...

coméntanos un poco mas y sube algún archivo ascii para poder evaluarlo

Saludos

Daniel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Cargar varias Imagenes para posterior procesado

Publicado por Paola (5 intervenciones) el 04/07/2016 13:34:42
Hola Daniel,

Subo un par de imagenes, son imagenes Landsat, de una sola banda, con un pre-procesamiento de corrección radiométrica y atmosférica.

Hasta el momento venía trabajando solo con un par de prueba para hacer las operaciones que requiero, pero ahora necesito hacerlo con muchas imágenes.

Las cargaba individualmente de esta manera, quedando guardada en una variable tipo double.

clear all
clc
%Cargar Imagenes L8
GIS_20141017 = importdata('GIS_20141017_corr_atm_B5', ' '); %17 oct 2014
GIS_20141017 =Oct17(1).data;

Posteriormente realizo una serie de operaciones con la matriz guardada (recorte, ajuste de intensidad, binarización, detección de bordes, operaciones morfológicas).

Gracias por tu ayuda.
saludos,
Sandra
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
Val: 269
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Cargar varias Imagenes para posterior procesado

Publicado por Daniel (264 intervenciones) el 04/07/2016 19:35:00
Como te comenté antes hay varias formas de almacenarlas, dependiendo un poco de tus requerimientos. Para mi, la forma mas practica es almacenar todo el celdas. Si bien algunas cosas son mas complicadas, te permite organizar información de distintos formatos y manteniendo un orden claro.

Te paso la idea de como lo pensé yo, como verás b es una variable de tipo cell

cada celda de b tiene varias variables...

1
2
3
4
5
6
7
imagen: [641x1014 double]
       nombre: 'GIS_20141017_corr_atm_B5'
          ano: 2014
          mes: 10
          dia: 17
      recorte: [291x349 double]
    ajusteint: [291x349 double]


te dejo el codigo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
clear all
clc
 
[archivos,ruta]=uigetfile('*.*','seleccione los archivos','multiselect','on');
if iscell(archivos)
    jmax=size(archivos,2);
    nombres=archivos;
else
    jmax=1;
    nombres{1}=archivos;
end
 
for j=1:jmax
 
    %carga de la imagen
    a=importdata(fullfile(ruta,nombres{j}), ' ');
    b{j}.imagen=a.data;
 
    % datos de la imagen
    b{j}.nombre=nombres{j};
    b{j}.ano=str2double(nombres{j}(5:8));
    b{j}.mes=str2double(nombres{j}(9:10));
    b{j}.dia=str2double(nombres{j}(11:12));
 
    % definir recorte (solo en la primer foto)
    if j==1
         figure(1),imshow(b{j}.imagen)
        title(['Archivo : ' b{j}.nombre],'Interpreter','none')
        [b{j}.recorte,mascara]=imcrop;
        close(1)
    else
        b{j}.recorte=imcrop(b{j}.imagen,mascara);
    end
    % ajuste de intensidad
    b{j}.ajusteint=imadjust(b{j}.recorte);
 end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
sin imagen de perfil

Cargar varias Imagenes para posterior procesado

Publicado por San (5 intervenciones) el 05/07/2016 19:05:49
Perfecto Daniel!!
muchas gracias :)

saludos!
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