我正在尝试使用带有轴的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
产生的图像。第二个看起来像素化,但再次注意每个图像包含大致相同数量的实际像素。
非常感谢任何建议/解决方案!这个问题比我预期的要令人沮丧。
答案 0 :(得分:0)
我找到了一个简单的解决方案。首先,我创建一个正确大小的空白图像,添加轴,然后使用export_fig生成轴的图像。然后,我将全分辨率图像写入图像矩阵,并使用imwrite保存生成的图像。