【发布时间】: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