在 MATLAB 中使用坐标轴以全分辨率导出图像
Export image at full resolution with axes in MATLAB
我正在尝试使用带轴的 MATLAB 以全分辨率保存大图像 (1641x6139)。使用 imwrite 命令很容易在没有轴的情况下执行此操作。要用轴绘制图像,我写:
image(x,y,my_image);
由于图片很大,MATLAB会自动降低图片的分辨率。 window 尺寸必须比屏幕大得多才能以全分辨率显示整个图像。我尝试了几种不同的方法来导出图形,但每种方法都遇到了同样的问题:图像以比原始图像更粗糙的分辨率像素化。问题不在于新图像的像素更少;相反,相邻像素已被分配相同的值,从而产生较粗尺度像素化的外观。
例如,其中H是图形句柄,我试过:
set(H, 'PaperPosition', [0, 0, width , height ])
print -dpng -r500 my_filename
增加宽度、高度或分辨率都会增加图像中的像素数量,但明显的像素化没有变化。
我也尝试使用函数 export_fig
,它似乎是为此类问题设计的,声称可以导出包含原始分辨率图像的图形。生成的图像似乎具有正确的像素数量,但和以前一样,问题是相邻像素具有相同的值,从而导致原始图像中没有较粗糙的像素化外观。我使用的代码是:
export_fig(my_filename,'-a1','-native')
这里有几张图片显示了与我的图片大致相同的放大部分:
第一个是原始图像,第二个是export_fig
生成的图像。第二张看起来像素化了,但再次注意每张图片包含大致相同数量的实际像素。
任何 advice/solutions 将不胜感激!这个问题比我预想的更令人沮丧。
我找到了一个简单的解决方案。首先,我创建一个正确大小的空白图像,添加坐标轴,然后使用 export_fig 生成坐标轴图像。然后,我将我的全分辨率图像写入图像矩阵,并使用 imwrite 保存生成的图像。
我正在尝试使用带轴的 MATLAB 以全分辨率保存大图像 (1641x6139)。使用 imwrite 命令很容易在没有轴的情况下执行此操作。要用轴绘制图像,我写:
image(x,y,my_image);
由于图片很大,MATLAB会自动降低图片的分辨率。 window 尺寸必须比屏幕大得多才能以全分辨率显示整个图像。我尝试了几种不同的方法来导出图形,但每种方法都遇到了同样的问题:图像以比原始图像更粗糙的分辨率像素化。问题不在于新图像的像素更少;相反,相邻像素已被分配相同的值,从而产生较粗尺度像素化的外观。
例如,其中H是图形句柄,我试过:
set(H, 'PaperPosition', [0, 0, width , height ])
print -dpng -r500 my_filename
增加宽度、高度或分辨率都会增加图像中的像素数量,但明显的像素化没有变化。
我也尝试使用函数 export_fig
,它似乎是为此类问题设计的,声称可以导出包含原始分辨率图像的图形。生成的图像似乎具有正确的像素数量,但和以前一样,问题是相邻像素具有相同的值,从而导致原始图像中没有较粗糙的像素化外观。我使用的代码是:
export_fig(my_filename,'-a1','-native')
这里有几张图片显示了与我的图片大致相同的放大部分:
第一个是原始图像,第二个是export_fig
生成的图像。第二张看起来像素化了,但再次注意每张图片包含大致相同数量的实际像素。
任何 advice/solutions 将不胜感激!这个问题比我预想的更令人沮丧。
我找到了一个简单的解决方案。首先,我创建一个正确大小的空白图像,添加坐标轴,然后使用 export_fig 生成坐标轴图像。然后,我将我的全分辨率图像写入图像矩阵,并使用 imwrite 保存生成的图像。