我应该如何删除这些图像之间的空白区域?我需要在没有任何空间的情况下组合所有这些图像。
bot=imread('bot.jpeg');
for i= 1:25
subplot(5,5,i),imshow(bot);
end
答案 0 :(得分:9)
你需要指定轴'使用'Position'
创建subplot
属性时。{/ 1}
此外,您必须调整图形宽高比以匹配图像的宽高比,以便所有图形都适合没有垂直或水平空间。
如果在每个子图中显示不同的图像,则所有图像应具有相同的宽高比,否则它们无法在没有空格的情况下适合图形。
bot = imread('peppers.png');
for i= 1:25
subplot('Position',[(mod(i-1,5))/5 1-(ceil(i/5))/5 1/5 1/5])
imshow(bot); %// or show a different image on each subplot
end
p = get(gcf,'Position');
k = [size(bot,2) size(bot,1)]/(size(bot,2)+size(bot,1));
set(gcf,'Position',[p(1) p(2) (p(3)+p(4)).*k]) %// adjust figure x and y size
答案 1 :(得分:4)
最规范的方法是通过bla here来看一下这个答案。这个答案使用MATLAB文件交换中的函数来实现答案。但是,这需要学习新功能并使用参数。
如果你想立刻工作,而不是在绘图上的单独网格中显示每个子图像,我只需创建一个新图像,将所有这些图像堆叠在一起:
bot_new = repmat(bot, [5 5]);
imshow(bot_new);
repmat
接受一个矩阵,并将所需的复制/堆栈/切片复制到一起,以及任意数量的列(或任何维度)。在这种情况下,我选择堆叠图像,使其有5行5列。接下来,我们将显示堆叠图像和imshow
。
如果我们使用MATLAB中的示例图像:
bot = imread('onion.png');
如果我们运行上面的代码将图像拼接在一起并显示图像,这就是我们得到的:
答案 2 :(得分:1)
我从mathworks复制答案:
对于每个子图,存储其句柄。
h = subplot(2,3,1);
然后设置'位置' h的属性是你想要的任何东西。
p = get(h, 'pos');
这是一个4元素的向量[left,bottom,width,height] 默认情况下是标准化坐标(百分比) 图窗口)。例如,增加0.05个单位(5%) 图窗口)到宽度,执行此操作:
p(3) = p(3) + 0.05;
set(h, 'pos', p);
SUBPLOT命令为这些选择标准值 参数,但它们可以是你想要的任何东西。您 可以把轴放在你想要的数字上的任何位置, 你想要的任何尺寸。
你可以检查一下: http://www.mathworks.com/matlabcentral/newsreader/view_thread/144116