MATLAB: Collecting Image Dataset into a variable dimension mismatch problem

Image Processing ToolboxMATLAB

Supoosed i Have declare a Maxtrix variable
train_x = zeros(64,128,3,15);
The train_x variable is 4-D double. which store up to 15 images it is a image dataset
I have an Images whose dimensions are 64 x 128 x 3 uint8 and 64 x 128 uint8
Res_none = imresize(Img_none, [64 128]); % -> where Res_none is 64 x 128 uint8
test_x(:,:,:,1) = Res_none; % <- due to insufficient dimension
I am trying to store an image into the train_x 4-D array but because images is 64 x 128 uint8, but it is insufficient dimension to store because it only stores an image whose dimensions are 64 x 128 x 3 uint8.
Is it possible that I can store that image 64 x 128 uint8 to the train_x (dataset) so that I can retrieve that same file from train_x (dataset)?

Best Answer

If you are trying to store 15 RGB images of size 64 x 128 x 3, the tran_x should have the size [64,128,3,15], exactly like you have it. You may also want to make it a uint8 array from the start, like this:
train_x = zeros([64,128,3,15], 'uint8');
If you want to store 15 grayscale images of size 64 x 128, then train_x should have the size of [64, 128, 15].
If some of your images are RGB and some are grayscale, then there are several things you can do. You could make all images RGB.
imgRGB = cat(3, imgGray, imgGray, imgGray);
Then all of your images will have the size 64x128x3. Alternatively, you can use a cell array to store the images. Elements of a cell array can have different sizes and even data types.