matlab将子窗口转换为向量
我试图从100x100像素的图像中提取16个25x25子窗口,然后将每个子窗口转换为125列向量,但我附加所有这些向量的数据结构似乎是625 x 16,而不是125 x 16matlab将子窗口转换为向量,matlab,image-processing,Matlab,Image Processing,我试图从100x100像素的图像中提取16个25x25子窗口,然后将每个子窗口转换为125列向量,但我附加所有这些向量的数据结构似乎是625 x 16,而不是125 x 16 子窗口似乎在图中显示得很好。如果您能提供我哪里出错的任何线索,我们将不胜感激。您可以使用mat2cell和cellfun: % obtain small windows of the image (say 16x16 windows and possibly using the crop function) [rows c
子窗口似乎在图中显示得很好。如果您能提供我哪里出错的任何线索,我们将不胜感激。您可以使用
mat2cell
和cellfun
:
% obtain small windows of the image (say 16x16 windows and possibly using the crop function)
[rows columns] = size(B);
blockSizeR = 25; % Rows in block.
blockSizeC = 25; % Columns in block.
wholeBlockRows = floor(rows / blockSizeR);
wholeBlockCols = floor(columns / blockSizeC);
image3d = zeros(wholeBlockRows, wholeBlockCols);
sliceNumber = 1;
dataStruct = [];
for row = 1 : blockSizeR : rows
for col = 1 : blockSizeC : columns
row1 = row;
row2 = row1 + blockSizeR - 1;
col1 = col;
col2 = col1 + blockSizeC - 1;
oneBlock = B(row1:row2, col1:col2);
subplot(4, 4, sliceNumber);
imshow(oneBlock);
caption = sprintf('Block #%d of 16', sliceNumber);
title(caption);
drawnow;
dataStruct = [dataStruct, oneBlock(:)];
sliceNumber = sliceNumber + 1;
end
end
25*25=625,怎么可能是125列向量?同意Para。你的代码看起来不错。我的上帝我很抱歉
dataStruct = mat2cell( B, blockSizeR * ones( 1, wholeBlockRows ), ...
blockSizeC * ones( 1, wholeBlockCols ) );
dataStruct = cellfun( @(x) x(:), dataStruct, 'uni', 0 );
dataStruct = [dataStruct{:}];