How to loop through several tiff images and reshape them
3 views (last 30 days)
Show older comments
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.
0 Comments
Accepted Answer
Jan
on 26 Sep 2017
Edited: Jan
on 26 Sep 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;
0 Comments
More Answers (0)
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!