MATLAB: Concatenation of array structure

for loopMATLABvideo processing

% concatenation output of frames in a video
[ video_file_name,video_file_path ] = uigetfile({'*.avi';'*.MP4'},'Pick a video file');
if(video_file_path == 0)
return;
end
input_video_file = [video_file_path,video_file_name];
videoObject = VideoReader(input_video_file);
vid=videoObject;
numFrames = vid.NumberOfFrames;
n=numFrames;
%
for i = 1:2:n
frames = read(vid,i);
grayImage = rgb2gray(frames);
thresholdLevel = graythresh(grayImage);
binaryImage = im2bw( grayImage, thresholdLevel);
end
% the Problem is that how to store the output of "binaryImage" of first iteration till the last iteration in an Output Array. ie (binary output of Frame_1, binary output of frame 2 . . . . . till last frame) Plz Help

Best Answer

An easy solution is to store each result in a cell array
binaryImage = cell(n,1) ;
for i = 1:2:n
...
binaryImage{i} = im2bw( grayImage, thresholdLevel);
end
Later, you can concatenate these cell into a single 3D array using cat and comma-separated list expansion (provided all images are 2D and of the same size).
binaryImageArray = cat(3,binaryImage{:})
Related Question