これは私の512 * 512イメージを64 * 64 * 64次元の立方体にスライスするコードです。しかし、私は再び2次元配列にそれを形作るとき私は元のimage.am私は何かを間違ってやって助けてください与えていないです。イメージのシャッフルとスライス
clc;
Image=imread('C:\Users\Farhan\Documents\lena_gray.gif');
[y,ymap]=imread('C:\Users\Farhan\Documents\lena_gray.gif');
im=ind2gray(y,ymap);
% im=imresize(im,0.125);
[rows ,columns, colbands] = size(im)
blockSize = 64;
image3d = zeros(64, 64, 64);
sliceNumber = 1;
for row = 1 : 64 : 512
for col = 1 : 64 : 512
row1 = row;
row2 = row1 + blockSize - 1;
col1 = col;
col2 = col1 + blockSize - 1;
oneBlock=im(row1:row2,col1:col2);
subplot(64, 64, sliceNumber);
imshow(oneBlock);
image3d(:, :, sliceNumber) = oneBlock;
sliceNumber = sliceNumber + 1;
end
end
image3d=reshape(image3d,512,512);
figure,imshow(uint8(image3d));
スライスを注文することが重要です。行と列のループを変更してみてください。まず、colとrowよりも。 –
単純に行と列を切り替えてもコードは修正されません。 – julian59189
MATLAB関数の再構成では、coloumn wiseを通過すると予想されますが、coloumnwiseの半分と行の賢明な操作の半分を使用して立方体を作成しているため、スライス用の行列の書式設定は後で変更する予定ではありません。だから最終的にあなたがそれを形作っているときにそれは間違って形作っています – Zeeshan