Matlab 在一起显示多个图像时保持正确的纵横比
我期待以下输出 但是,获得以下输出 即显示的图像的纵横比不正确 原因是什么?我如何解决这个问题Matlab 在一起显示多个图像时保持正确的纵横比,matlab,Matlab,我期待以下输出 但是,获得以下输出 即显示的图像的纵横比不正确 原因是什么?我如何解决这个问题 源代码 main.m clear_all(); image_name = 'woman.png'; I = gray_imread(image_name); K = {I, I, I, I, ... I, I, I, I, ... I, I, I, I}; draw_cell(K); function draw_cell(image_list)
源代码 main.m
clear_all();
image_name = 'woman.png';
I = gray_imread(image_name);
K = {I, I, I, I, ...
I, I, I, I, ...
I, I, I, I};
draw_cell(K);
function draw_cell(image_list)
if(iscell(image_list))
figure;
hold all
colormap(gray(256));
N = length(image_list);
[m, n] = factor_out(N);
display('cell');
for k=1:N
h = subplot(m,n,k);
image(image_list{k},'parent',h);
set(gca,'xtick',[],'ytick',[])
end
hold off
else
error('''image_list'' is not a cell array');
end
function [m, n] = factor_out(input_number)
sqrtt = ceil(sqrt(input_number));
m = sqrtt;
n = sqrtt;
绘制单元格.m
clear_all();
image_name = 'woman.png';
I = gray_imread(image_name);
K = {I, I, I, I, ...
I, I, I, I, ...
I, I, I, I};
draw_cell(K);
function draw_cell(image_list)
if(iscell(image_list))
figure;
hold all
colormap(gray(256));
N = length(image_list);
[m, n] = factor_out(N);
display('cell');
for k=1:N
h = subplot(m,n,k);
image(image_list{k},'parent',h);
set(gca,'xtick',[],'ytick',[])
end
hold off
else
error('''image_list'' is not a cell array');
end
function [m, n] = factor_out(input_number)
sqrtt = ceil(sqrt(input_number));
m = sqrtt;
n = sqrtt;
维护图像纵横比的两个可能选项
轴相等
或轴图像
子批
命令之后立即使用它
特别是对于打印图像,axis equal
命令将在图像周围留下空白<代码>轴图像将保持纵横比并删除空白
imshow
而不是image
如果您有图像处理工具箱,可以用
imshow
函数代替Image
函数imshow
假设要显示图像,并相应地限制颜色贴图和纵横比。尽管名称为image
,但它设计用于可视化任何矩阵数据,而不仅仅是图像。因此,它可以缩放像素以充分利用屏幕空间。如果您使用imagesc
以及颜色缩放的附加问题,您将遇到相同的问题。为了安全起见,在显示RGB和灰度图像时,请始终使用imshow
,除非您有明确的理由不这样做。两个可能的选项用于保持图像的纵横比
轴相等
或轴图像
子批
命令之后立即使用它
特别是对于打印图像,axis equal
命令将在图像周围留下空白<代码>轴图像将保持纵横比并删除空白
imshow
而不是image
如果您有图像处理工具箱,可以用
imshow
函数代替Image
函数imshow
假设要显示图像,并相应地限制颜色贴图和纵横比。尽管名称为image
,但它设计用于可视化任何矩阵数据,而不仅仅是图像。因此,它可以缩放像素以充分利用屏幕空间。如果您使用imagesc
以及颜色缩放的附加问题,您将遇到相同的问题。为了安全起见,在显示RGB和灰度图像时,请始终使用imshow
,除非您有明确的理由不这样做。对被否决的投票人:我可以问一下为什么我的问题被否决了吗?请尝试imshow
而不是image
。我猜被否决的投票是因为您的代码有一些打字错误,并且没有按原样运行。但我不确定。否则写得很好。@Cecilia,gray\u imread()
和clear\u all()
应该是直观的。我同意。我不是被否决的投票人。对被否决的投票人:我可以问一下为什么我的问题被否决了吗?请尝试imshow
而不是image
。我猜被否决的投票是因为您的代码有一些拼写错误,并且没有按原样运行。但我不确定。否则写得很好。@Cecilia,gray\u imread()
和clear\u all()
应该是直观的。我同意。我不是落选的选民。