stacking rgb images into 3d or 4d variable

15 次查看(过去 30 天)
I have mri frames that are in rgb and I want stack them in a 4d variable ( height x width x 3 channels x number of frames) so that I can view them as a montage.
How can i do this?

采纳的回答

Adam Danz
Adam Danz 2019-9-26
编辑:Adam Danz 2019-9-26
If the height and width are the same for all images, use cat().
a = ones(5,6,3)+0;
b = ones(5,6,3)+1;
c = ones(5,6,3)+2;
stacked = cat(4,a,b,c);
% ^ concatenate along 4th dim
If the image sizes are not identical, you can pad them smaller ones to match the size of the larged one by using paddarray() and then use cat().
  10 个评论
Adam Danz
Adam Danz 2019-11-6
I see you've asked similar questions since adding the question above. If you still need help, please create a new question in the forum and send me the link to your new question or add the link as a comment below.
Raheema Al Karim Damani
Thank you for your response. Yes here is the link to the question I put previously on the forum https://www.mathworks.com/matlabcentral/answers/489011-fuzzy-clustering-only-on-pixels-zero
I've re put my question on the forum, showing my thought process of trying to work through this problem, but Im still getting the same reshaping error

请先登录,再进行评论。

更多回答(1 个)

Raheema Al Karim Damani
the array was in double so I thought to turn it in to uint8 class which was the original format of the frames so that i could visualize it.
the size of array is 1 x 10 x 1 x 33 which is strange.
and array is stored as a 4-d uint8.
where as the dimensions of each frame is 128 x 128 x 3, so i'm guessing that when it is concatenating it is cutting down the image dimensions.

类别

Help CenterFile Exchange 中查找有关 Geometric Transformation and Image Registration 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by