使用MATLAB中的轴以全分辨率导出图像

时间:2016-09-07 20:17:44

标签: matlab printing export resolution axes

我正在尝试使用带有轴的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')

以下是一些图像,显示了与我的图像大致相同的放大部分:

zoomed in images (original and using export_fig)

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

非常感谢任何建议/解决方案!这个问题比我预期的要令人沮丧。

1 个答案:

答案 0 :(得分:0)

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