How to make a Video from 3D array

34 views (last 30 days)
Hamed Bolandi
Hamed Bolandi on 22 Jul 2021
Commented: Hamed Bolandi on 23 Jul 2021
I have 3D matrix with dimension of 600x600x28 which the last index is number of frames and want to convert it to video file. I tried as a below but raised with error:
Unrecognized function or variable 'cmap'.
My code:
Orig = rand(600,600,28);
X = permute(Orig,[1 2 4 3]); % 4D matrix
movie = immovie(X,cmap);
implay(movie);

Answers (1)

millercommamatt
millercommamatt on 22 Jul 2021
You never defined the variable cmap which is supposed to be a color map.
Try This:
Orig = rand(600,600,28);
camp=parula;
X = permute(Orig,[1 2 4 3]); % 4D matrix
movie = immovie(X,cmap);
implay(movie);
  3 Comments
millercommamatt
millercommamatt on 23 Jul 2021
I get the same error and I don't know why. The documentation for immovie says that double is an allowable input data type.
But, I have a fix: Do the conversion of the input array to uint8 yourself.
Orig = randi(256,600,600,28)-1; % 0-255
cmap=parula;
X = permute(Orig,[1 2 4 3]); % 4D matrix
movie = immovie(uint8(X),cmap);
implay(movie);
Hamed Bolandi
Hamed Bolandi on 23 Jul 2021
The reason I was getting this error is because the function call immovie(X,map) requires X to be an indexed image. It means that the values of X must greater than 1. Therefore, changing the code like below solved the issue:
Orig = randi([1 255],600,600,1,28);
cmap=parula;
movie = immovie(Orig,cmap);
implay(movie);

Sign in to comment.

Categories

Find more on View and Analyze Simulation Results 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!