【问题标题】:Saving a MATLAB matrix as an image to a specific size and resolution将 MATLAB 矩阵保存为特定大小和分辨率的图像
【发布时间】:2016-02-24 08:34:45
【问题描述】:

阅读this 问题后,我想使用此代码将我的图片保存为特定尺寸。

    I_c(:,:) = cropped_matrix(i,:,:);
    set(I_c, 'PaperUnits', 'inches');
    x_width = 7.25;
    y_width = 9.125;
    set(I_c, 'PaperPosition', [0 0 x_width y_width]);
    imshow(I_c);
    saveas(I_c,'fig1.pdf');

I_c 表示uint8 的二维矩阵(约 40x40)。

但是,我得到了错误:

使用设置无效句柄时出错

这让我相信我只能将此代码用于数字而不是包含矩阵的矩阵。我该怎么办?

我查看了printAPI,正如上述链接问题的第一个答案所建议的那样,但它也建议使用set'PaperUnits'

注意:This 问题也关注这个问题,但提出了相同的解决方案。


关于克劳利的回答的注意事项

  1. 所以我只是尝试了您在回答中给出的代码。正在生成的.jpg 如下所示。我将如何通过代码摆脱所有额外的白色区域?
  2. 当我只使用image(ImData) 时,如何将正在生成的图形的colourmap 更改为灰度?

这是实际数字的显示方式:

这是我输入的代码:

 im = image(I_c); 
 set(gcf,'units','inches','position',[1 2 5 5]);
 set(gca,'ydir','normal','units','centimeters','position',[0 0 0.5 0.5].*get(gcf,'position')) ;
 filename = strcat('slice',int2str(i),'_','bead',int2str(j),'.jpg');
 saveas(im,filename);

【问题讨论】:

  • 如果你有图像处理工具箱,那么你可以使用imresize。否则,您必须使用interp2 手动完成。 set 期望第一个变量是图形或轴的句柄,它不适用于矩阵。
  • 我很难理解变量的含义。 I_dw 似乎是你的形象,但你从不使用它。 I_c 可以是图形的句柄,但这与 imshow; 的使用不匹配。
  • 不过,作为记录,在没有给出I_c 是什么的任何上下文的情况下发布明显由变量I_c 引起的错误是没有意义的......
  • @Daniel 刚刚更改了代码。
  • 也许使用set(gcf,'units','centimeters','position',[0 0 width, height])set(gca,'units','centimeters','position',get(gcf,'position')) 应该可以创建具有给定大小且无边框的图形。

标签: image matlab matrix file-io


【解决方案1】:

假设我们有矩阵I_c 包含值和xy 坐标,所以值I_c(ii,jj) 对应于x(ii)y(jj) 坐标。

然后:

ImMin=min(min(I_c));    % Find the minimum value in I_c
ImData=I_c-ImMin;       % Ensure non-zero values
ImMax=max(max(ImData)); % Find maximum value in ImData
ImData=ImData./ImMax;   % Ensure ImData do NOT exceed 1

image(x,y,ImData*[1 1 1]) % plot the image in greyscale
set(gcf,'units','inches','position',[1 2 5 5]) % set active figure properties
set(gca,'ydir','normal','units','inches','position',[0 0 1 1].*get(gcf,'position')) % set active axes properties

export_fig(gcf,'figure-I_c','-png','-nocrop')

'ydir','normal' 参数将默认 (1,1) 点从左上角更改为左下角的“正常”位置。
[0 0 1 1].*get(gcf,'position) 将读取活动图形位置(此处为 [1 2 5 5 ]) 并且在逐个元素相乘之后,[0 0 5 5] 被传递给position,这使得轴适合图像。

export_fig 函数将创建figure-I_c.png 图像,如 Matlab 图中所示,如果省略-nocrop,则边缘中可能的空白将被裁剪掉。此功能可从MathWorks' File Exchange获得。

【讨论】:

  • 您也可以使用image(ImData),然后选择适合您需要的颜色图。
  • 假设我使用image(Imdata),我将如何选择颜色图?
  • 嘿,我在问题中添加了一个部分,以反映我对您的回答的实施。请检查一下!
  • 对于颜色图,只需在您的 matlab shell 中键入 help image。您还可以通过点击返回文本末尾的doc image 来获取更多 ingo。
  • 刚刚查看了image 的API,似乎没有将颜色映射更改为从黑色到纯白色而不是蓝色和黄色的选项。
猜你喜欢
  • 1970-01-01
  • 2014-06-16
  • 1970-01-01
  • 2016-07-25
  • 2016-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多