現在、以下のコードを使用して、画像を cellSizeX ピクセル x 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
このコードは問題なく満足に動作しますが、私を悩ませていることがあります。
grid(:,:,:,icount,jcount) と grid(icount,jcount,:,:,:) などの切り替えインデックス位置を比較して、tic と toc でいくつかのテストを行うと、grid(:,:,: ,icount,jcount) が最速です。しかし、ここで何か改善できますか?
このコードは、要求された cellSizeX と cellSizeY が画像 img に比例する場合にのみ機能します。そのため、サイズが 40 x 40 の画像で 9 x 9 の cellSizeX と cellSizeY を要求すると、Matlab が行列の次元を超えていると不平を言うことになります。これに関する提案はありますか?それらのセルの空白領域を単純に埋めたくありません。これらのセルは、Vlfeat SIFT でさらに使用されます。