【问题标题】:Export image at full resolution with axes in MATLAB在 MATLAB 中使用轴以全分辨率导出图像
【发布时间】:2026-02-12 17:00:01
【问题描述】:

我正在尝试使用带有轴的 MATLAB 以全分辨率保存大图像 (1641x6139)。使用 imwrite 命令很容易在没有轴的情况下执行此操作。为了用坐标轴绘制图像,我写道:

image(x,y,my_image);

由于图像非常大,MATLAB 会自动降低图像的分辨率。窗口大小必须明显大于屏幕才能以全分辨率显示整个图像。我尝试了几种不同的方法来导出图形,并且每种方法都遇到了相同的问题:图像以比原始图像更粗的分辨率像素化。问题不在于新图像的像素更少;相反,相邻像素被分配了相同的值,从而产生了更粗略的像素化外观。

例如,其中 H 是图形句柄,我试过了:

set(H, 'PaperPosition', [0, 0, width , height ])
print -dpng -r500 my_filename

增加宽度、高度或分辨率都会增加图像中像素的数量,但明显的像素化并没有改变。

我还尝试使用函数export_fig,它似乎是为此类问题设计的,声称以原始分辨率导出包含图像的数字。生成的图像似乎具有正确数量的像素,但与以前一样,问题是相邻像素具有相同的值,从而产生原始图像中缺少的较粗像素化的外观。我使用的代码是:

export_fig(my_filename,'-a1','-native')

这里有几张图片显示了与我的图片大致相同的放大部分:

第一个是原始图像,第二个是来自export_fig 的图像。第二个看起来像素化了,尽管再次注意每个图像包含大致相同数量的实际像素。

任何建议/解决方案将不胜感激!这个问题比我预想的更令人沮丧。

【问题讨论】:

  • 是否有什么特殊原因需要先在轴上绘制图像,而不是直接将其写入图像文件?
  • 顺便说一句,export_fig -a1 -native 似乎确实在我的机器上生成了带有轴刻度的全分辨率图像,至少在 2015a 和 rand(2000, 2000, 3) 图像中是这样
  • 如果您知道将轴直接写入图像的方法,这将是一个很好的解决方案。
  • 我用 export_fig 尝试了您的 rand 示例,并且遇到了相同的分辨率问题。我在 2015b。

标签: matlab printing export resolution axes


【解决方案1】:

我想出了一个简单的解决方案。首先,我创建一个正确大小的空白图像,添加坐标区,然后使用 export_fig 生成坐标区图像。然后,我将全分辨率图像写入图像矩阵,并使用 imwrite 保存生成的图像。

【讨论】: