Collecting Image Dataset into a variable dimension mismatch problem

6 次查看(过去 30 天)
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)?
  1 个评论
jgg
jgg 2015-12-18
Why not just declare train_x = zeros(64,128,8,15) instead?
I don't think you're going to be able to store a 64x128 image with 8 bits of information per pixel into a 62x128x3 matrix without collapsing the 8 bits down.
Since 8 bits is only 2^8, could you not convert it to an integer, then store the integer instead of storing it bitwise?

请先登录,再进行评论。

采纳的回答

Dima Lisin
Dima Lisin 2015-12-18
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.
  2 个评论
ken ken
ken ken 2015-12-19
my imgGray is 64 x 128 unint8
after using this commands
imgRGB = cat(3, imgGray, imgGray, imgGray);
the result of the imgRGB value is 64 x 128 x 9 unint8
how may i make it to 64 x 128 x 3 unint8 so that i am able put into the train_x dataset

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Convert Image Type 的更多信息

标签

尚未输入任何标签。

Community Treasure Hunt

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

Start Hunting!

Translated by