Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 在一起显示多个图像时保持正确的纵横比_Matlab - Fatal编程技术网

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;

维护图像纵横比的两个可能选项

  • 轴相等
    轴图像
  • 对于大多数打印功能,可以使用轴相等命令在x轴和y轴上设置相同的比例。打印图像时,这相当于保持纵横比。您需要为每个子批调用此命令,因此我建议在
    子批
    命令之后立即使用它

    特别是对于打印图像,
    axis equal
    命令将在图像周围留下空白<代码>轴图像将保持纵横比并删除空白

  • imshow
    而不是
    image

  • 如果您有图像处理工具箱,可以用
    imshow
    函数代替
    Image
    函数
    imshow
    假设要显示图像,并相应地限制颜色贴图和纵横比。尽管名称为
    image
    ,但它设计用于可视化任何矩阵数据,而不仅仅是图像。因此,它可以缩放像素以充分利用屏幕空间。如果您使用
    imagesc
    以及颜色缩放的附加问题,您将遇到相同的问题。为了安全起见,在显示RGB和灰度图像时,请始终使用
    imshow
    ,除非您有明确的理由不这样做。

    两个可能的选项用于保持图像的纵横比

  • 轴相等
    轴图像
  • 对于大多数打印功能,可以使用轴相等命令在x轴和y轴上设置相同的比例。打印图像时,这相当于保持纵横比。您需要为每个子批调用此命令,因此我建议在
    子批
    命令之后立即使用它

    特别是对于打印图像,
    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()
    应该是直观的。我同意。我不是落选的选民。