How to loop through several tiff images and reshape them

3 visualizaciones (últimos 30 días)
Zoe
Zoe el 26 de Sept. de 2017
Editada: Jan el 26 de Sept. de 2017
I have 6 images which all have the same number of rows and columns (Basically 6 optical bands of one remote sensing imagery). The original size of each image is 1455*1464. I want to loop through them, then reshape each of them into a vector with 1455*1464 (=2130120) rows and 1 column. So far, I only know how to manually load images and do something to them, but don't understand loop. I appreciate any help! Thank you! The code looks like this:
for i = 1:1455
for j = 1:1464
for h = 1:6
A(1,h) = reshape(image(i,j,h), 2130120,6)
end
end
end
I do not think it is correct. Every time I run it, it gives me the error message: Error using reshape To RESHAPE the number of elements must not change.

Respuesta aceptada

Jan
Jan el 26 de Sept. de 2017
Editada: Jan el 26 de Sept. de 2017
What is you input? Does "image" contain an [1455 x 1464 x 6] array? If so, use:
img = reshape(img, 1455*1464, 6);
to get a [2130120 x 6] matrix. You do not need loops to do this.
With loops you can omit the reshape:
A = zeros(2130120, 6); % Pre-allocate!!!
for i = 1:1455
k = 0;
for j = 1:1464
for h = 1:6
k = k + 1;
A(k, h) = img(i,j,h);
end
end
end
Or use:
k = i + (j - 1) * 1455;

Más respuestas (0)

Categorías

Más información sobre Images en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by