目前,我正在使用下面的代码将图像分割成 cellSizeX 像素乘以 cellSizeY 像素的网格:
grid = zeros(cellSizeX, cellSizeY, ColorCount, cellTotalX, cellTotalY);
for i = 1:cellSizeX:(HorRowCount)
for j = 1:cellSizeY:(VertColumnCount)
try
grid(:,:,:,icount, jcount) = img(i:i+cellSizeX-1, j:j+cellSizeY-1, :);
catch
end
jcount = jcount + 1;
end
icount = icount + 1;
jcount = 1;
end
虽然这段代码运行良好且令人满意,但有些事情让我烦恼:
通过对 tic 和 toc 的一些测试,比较诸如 grid(:,:,:,icount,jcount) 和 grid(icount,jcount,:,:,:) 之类的切换索引位置,我看到了 grid(:,:,: ,icount,jcount) 是最快的。但是这里有什么可以改进的吗?
仅当请求的 cellSizeX 和 cellSizeY 与图像 img 成比例时,该代码才有效。因此,在尺寸为 40 x 40 的图像上请求 9 x 9 的 cellSizeX 和 cellSizeY 将导致 matlab 抱怨超出矩阵的尺寸。对此有何建议?我不想简单地为这些单元格填写空白区域。这些单元将在 Vlfeat SIFT 中进一步使用。