2017-07-19 77 views
0

我期待以下输出,保持正确的宽高比,同时显示多个图像一起

enter image description here

但是,得到以下输出

enter image description here

即显示的图像'具有不正确的宽高比。

是什么原因和如何解决这个问题?


源代码

的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); 

draw_cell.m

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; 
+0

向下推荐投票人:请问为什么我的问题被低估? – anonymous

+0

尝试'imshow'而不是'image'。 – Cecilia

+1

我的猜测是反对是因为你的代码有一些错别字,不能按原样运行。但我不确定。似乎写得很好,否则。 – Cecilia

回答

2

两个可能的选项maintai图像

  1. axis equalaxis image

的宁宽高比对于大多数绘图函数,则可以使用axis equal命令来设置相同的尺度上的x和y轴。在绘制图像时,这相当于保持纵横比。您需要为每个子图调用此命令,因此我建议在subplot命令之后立即使用它。

对于特意绘制图像,axis equal命令会在图像周围留下空白区域。 axis image将保持宽高比并去除空白。

  • imshow代替image
  • 如果有图像处理工具箱,您也可以替换为image功能imshow功能。 imshow假设您要显示图像并相应地限制色彩贴图和宽高比。尽管其名称为image旨在将任何矩阵数据可视化,而不仅仅是图像。因此,它会缩放像素以充分利用屏幕空间。如果您使用imagesc以及颜色缩放的附加问题,则会遇到同样的问题。为了安全起见,在显示RGB和灰度图像时总是使用imshow,除非您有明确的理由不要。

    相关问题