0
clear all; close all; clc;
A = im2double(imread('cameraman.jpg'));
figure(1)
imshow(A)

C = chunking(A,400,400) % separates picture;
[m n] = size(C);
k = 1;
figure(1)
for i = 1:m
    for j = 1:n
        subplot(m,n,k)
        imshow(C{i,j})
        axis off;
        k = k + 1;

    end
end

上記のコードでは、画像を 400x400 ピクセルのチャンクに分割しようとしています。画像は 400x400 の倍数ではないため、境界線と右下隅に不均等なセクションがあります (まだ正方形の画像です)。ただし、サブプロットを使用すると、最後のチャンクのサイズが同じサイズに変更されます。get と set の位置をいじってみましたが、各サブプロットの幅と高さが同じですか?![ここに画像の説明を入力][1]

http://imgur.com/2VUYZr1

4

1 に答える 1

0

表示するピクセルが 400 ピクセル未満の場合は、軸のサイズを変更します。ハンドルを各サブプロットに保存し、小さくする必要がある場合はサイズを変更する必要があります。

サブプロットへの呼び出しは次のようになります。

h = subplot(m,n,k);
num_rows = size(C{i,j}, 1);
num_cols = size(C{i,j}, 2);
set(h, 'units', 'pixels')
old_axes_pos = get(h, 'position');
new_axes_pos = old_axes_pos;
if num_cols < 400
   new_axes_pos(3) = num_cols; % Make this axes narrower
end
% If the figure cannot be full height
if num_rows < 400
   new_axes_pos(4) = num_rows;  % Make this axes shorter
   new_axes_pos(2) = old_axes_pos(2) + (400 - num_rows); % Move the bottom up
end
set(h, 'position', new_axes_pos) % Change the size of the figure
于 2014-01-20T12:40:19.920 に答える