Это мой код для нарезания моего 512 * 512 изображений в кубе размером 64 * 64 * 64. но когда я снова преобразую его в 2D-массив, почему он не дает мне оригинальный image.am, я делаю что-то неправильное, пожалуйста, помогите.image shuffling and slicing
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 и, чем для строки. –
Но просто переключение строк и столбцов не исправляет код. – julian59189
Ваше форматирование матрицы для нарезки - это не то, что изменится позже, потому что функция MATLAB изменит формулу, ожидая, что вы пройдете по coloumn мудрый, но вы формулируете свой куб наполовину пополам и половину строки. Поэтому, когда вы, наконец, переделываете назад, он меняет неправильную форму – Zeeshan