convert to 2d to 3d

The image data in which the numeric data is written is 2d.
(3404 * 2403 size) images want to save 60 images by cutting to 340 * 40 size. That is, 340 * 60 sizes should be stored in 60 dimensions.
What method should I use?

Answers (2)

Walter Roberson
Walter Roberson on 23 Nov 2018
Edited: Walter Roberson on 23 Nov 2018
reshape(Image(1:340,1:2400),340,40,60)

2 Comments

sw park
sw park on 23 Nov 2018
Thank you for Answer But It does not work properly.
I want this
example
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
(2*2) cutting
1 2
9 10 (:,:,1)
3 4
11 12 (:,:,2)
5 6
13 14 (:,:,3)
7 8
15 16(:,:,4)
17 18
25 26 (:,:,5)
Your answer will reshape the original 2D form to something other than what I want.
see mat2cell

Sign in to comment.

Andrei Bobrov
Andrei Bobrov on 23 Nov 2018
Edited: Andrei Bobrov on 23 Nov 2018

0 votes

Let A - your image with size [3400 x 2400],
size of small image -> [340 x 40].
p = 340;
n = 40;
[q,w] = size(A);
out = squeeze(permute(reshape(A,p,q/p,n,[]),[1,3,4,2]));
or with mat2cell:
p = 340;
n = 40;
[q,w] = size(A);
C = mat2cell(A,p*ones(q/p,1),n*ones(w/n,1))';
out = cat(3,C{:});

Tags

Asked:

on 23 Nov 2018

Edited:

on 23 Nov 2018

Community Treasure Hunt

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

Start Hunting!