这是我将512 * 512图像切割成64 * 64 * 64维度的立方体的代码。但是当我再次将它重新塑造成2D阵列时,为什么它没有给我原始的图像。我做了不正确的事情请帮助。
clc;
im=ind2gray(y,ymap);
% im=imresize(im,0.125);
[rows ,columns, colbands] = size(im)
end
image3d=reshape(image3d,512,512);
figure,imshow(uint8(image3d));
答案 0 :(得分:0)
只是一个小小的暗示。
P(:,:,1) = [0,0;0,0]
P(:,:,2) = [1,1;1,1]
P(:,:,3) = [2,2;2,2]
P(:,:,4) = [3,3;3,3]
B = reshape(P,4,4)
B =
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
因此,您可以自行更改切片或进行重塑。
答案 1 :(得分:0)
如果我理解你的问题,你可以查看下面的代码来执行相同的操作。
% Random image of the provided size 512X512
imageX = rand(512,512)
imagesc(imageX)
% Converting the image "imageX" into the cube of 64X64X64 dimension
sliceColWise = reshape(imageX,64,64,64)
size(sliceColWise)
% Reshaping the cube to obtain the image original that was "imageX",
% in order to observe that they are identical the difference is plotted
imageY = reshape(sliceColWise,512,512);
imagesc(imageX-imageY)
n.b:从MATLAB帮助您可以看到重塑形式按列工作
重塑(X,M,N)或重塑(X,[M,N])返回M-by-N矩阵 其元素从X列中逐列获取。出现错误 如果X没有M * N个元素。