0

画像を 8 つの異なる行と 1 列に分割する方法を知っている人はいますか? mat2cell() を使用して、wiki のデモを参照として使用してみました。画像を 8 行に分割しようとしましたが、すべての画像パーティション行が表示されるわけではありません。

下の画像を見ると、2、4、6、8が表示されていません。また、なぜ 16 ブロックなのかもわかりません。

ここに画像の説明を入力

誰かが私のコードをチェックするのを手伝ってくれますか? 私は、MatLab の構文と言語にあまり慣れていません。私は今、理解するために最善を尽くしています。

ブロックを分割するための私のコードは次のとおりです。

blockSizeR = 50; % Rows in block.
blockSizeC = 512; % Columns in block.
wholeBlockRows = floor(rows / blockSizeR);
blockVectorR = [blockSizeR * ones(1, wholeBlockRows), rem(rows, blockSizeR)];
wholeBlockCols = floor(columns / blockSizeC);
blockVectorC = [blockSizeC * ones(1, wholeBlockCols), rem(columns, blockSizeC)];

if numberOfColorBands > 1
% It's a color image.
ca = mat2cell(rgbImage, blockVectorR, blockVectorC, numberOfColorBands);
else
ca = mat2cell(rgbImage, blockVectorR, blockVectorC);
end
% Now display all the blocks.
plotIndex = 1;
numPlotsR = size(ca, 1);
numPlotsC = size(ca, 2);
for r = 1 : numPlotsR
for c = 1 : numPlotsC
    fprintf('plotindex = %d,   c=%d, r=%d\n', plotIndex, c, r);
    % Specify the location for display of the image.
    subplot(numPlotsR, 1, plotIndex);
    % Extract the numerical array out of the cell
    % just for tutorial purposes.
    rgbBlock = ca{r,c};
    imshow(rgbBlock); % Could call imshow(ca{r,c}) if you wanted to.
    [rowsB columnsB numberOfColorBandsB] = size(rgbBlock);
    % Make the caption the block number.
    caption = sprintf('Block #%d of %d\n%d rows by %d columns', ...
        plotIndex, numPlotsR*numPlotsC, rowsB, columnsB);
    title(caption);
    drawnow;
    % Increment the subplot to the next location.
    plotIndex = plotIndex + 1;
    end
 end

私はMatLabを初めて使用するので、見逃した簡単な方法はありますか?参照できる参考文献があれば、提案してください。どうもありがとう (:

4

2 に答える 2

0

私はすでに解決できましたが、エラーは for ループにあります。for r = 1 : numPlotsR を r = 1 : (必要な行数) for c = 1 : numPlotsC を c= 1: 1 に変更し (1 列しか必要ないため)、subplot(8,1, k) または (8,2,k) ここで、k はプロット インデックスです。誰かが将来そのような問題に遭遇し、私のコードを参照として使用したい場合に備えて、これに答えてください。乾杯!

于 2013-10-11T06:58:49.677 に答える