我正在使用Matlab以eps格式导出一张图片,但它使得图片变得模糊。Matlab使用其他格式(如png)不会使图像变模糊。我想知道如何在eps格式下导出一个非模糊的图像。这是使用png格式导出的结果:
这是使用eps格式导出的结果:
我正在使用Matlab以eps格式导出一张图片,但它使得图片变得模糊。Matlab使用其他格式(如png)不会使图像变模糊。我想知道如何在eps格式下导出一个非模糊的图像。这是使用png格式导出的结果:
这是使用eps格式导出的结果:
问题可以在Mac上重现,而问题出在eps渲染器上而不是MATLAB。例如,保存 imagesc(rand(20))
并使用预览和GSview查看会得到以下结果:
显然,信息并没有丢失,只是某些EPS查看器无法正确解释/读取。解决方法很简单:使用GSview查看您的eps
图像。您可以从这里下载它。
特别是在Mac上,如果您的最终应用程序是latex/pdflatex,则必须明确设置它以使用GS/GSview,否则它将默认使用Quartz引擎,该引擎已经内置于操作系统中。
我无法重现你描述的行为。这是我使用的代码,在WinXP 32位上测试了R2010b:
M = fspecial('gaussian',[20 20],5);
imagesc(M)
print('-dpng','a.png')
print('-depsc2','b.eps')
可能这是你的EPS查看器引起的问题...
不确定为什么它有效,但您可以尝试执行以下操作:
eps2eps oldfile newfile
无论如何,我的解决办法是使用pcolor
和shading flat
代替imagesc
。当你将其导出为eps
格式时,它会正确地保留图像。例如:
pcolor(rand(20));
shading flat
print('-depsc','figure.eps')
注意:你可能会在每个小正方形的反对角线上看到一些细微的白色线条(这取决于操作系统和查看器)。这些是用于呈现图像的图形图元的边缘。然而,这并不是MATLAB导出的缺陷,而是EPS / PDF查看器中呈现的问题。例如,在我Mac上的预览默认设置中,这些线条会显示出来,而在Adobe Reader 9.4的默认设置下,它们不会出现。
epstopdf
转换时不会出现淡白色线条。非常感谢! - Jean-Paul如果还有人对解决方法感兴趣:使用文本编辑器打开.eps文件,搜索“interpolate”。你可能会发现“/Interpolate true def”出现了两到三次。将“true”替换为“false”,就可以愉快地使用了 :)
/Interpolate true
是 PDF 而不是 EPS。 - arcticmac我也长期与这个问题斗争。到目前为止,GSView是我发现的唯一一个可以正确显示Matlab(R2015b)生成的eps图像的查看器。eps2eps对我没有用(psutils 1.23)。以下方法最终适用于我:
saveas
。在Matlab 2016a中,它非常容易出现错误。相比之下,命令export_fig
更加健壮 https://www.mathworks.com/matlabcentral/fileexchange/23629-export-fig - Léo Léopold Hertz 준영这个页面对我帮助很大:http://tech.mof-mof.co.jp/blog/machine-learning-octave.html(日文,可以使用谷歌翻译)
这也很有用:Octave-Gnuplot-AquaTerm error: set terminal aqua enhanced title "Figure 1"...unknown terminal type"
我还在https://www.coursera.org/learn/machine-learning/discussions/weeks/2/threads/Dh-aRfqSEeaHSQ6l4xnh6g上回答了问题。
我是这样重新安装gnuplot的:
$ brew cask install xquartz
$ brew cask install aquaterm
$ brew uninstall gnuplot
$ brew install gnuplot --with-aquaterm --with-x11 --with-qt # you can show other options by `$ brew options gnuplot`
您可以像这样编辑~/.octaverc:
setenv("GNUTERM", "qt")
在Octave窗口中,输入"system gnuplot",然后
set pm3d interpolate 2, 2
保存文件后,打开octave-cli.app,并输入以下命令
imagesc(magic(3)), colorbar
我明白了。
模糊效果实际上取决于您的查看应用程序或打印机使用的渲染软件。为了始终获得良好的结果,请将图像中的每个像素调整为相同颜色的8x8像素块,即按以下方式调整图像大小:
im2 = imresize(im1, 8, 'nearest');
模糊只影响每个块边缘的像素。使用DCT压缩(有时在EPS文件中使用)时,8x8块最佳,可以避免不良伪影。
imagesc
的插件。它不支持所有但最基本的功能,但我仍然希望它有所帮助。function h = imagesc4pdf(C)
[ny nx] = size(C);
px = bsxfun(@plus, [-0.5; 0.5; 0.5; -0.5], reshape(1:nx, [1 1 nx]));
py = bsxfun(@plus, [-0.5; -0.5; 0.5; 0.5], 1:ny);
n = numel(C);
px = reshape(repmat(px, [1 ny 1]), 4, n);
py = reshape(repmat(py, [1 1 nx]), 4, n);
h = patch(px, py, reshape(C,1,n), 'linestyle', 'none');
xlim([.5 nx+.5]);
ylim([.5 ny+.5]);
set(gca, 'ydir', 'reverse');
将OpenGL渲染器应用于图形
figure(gcf);
set(gcf,'renderer','opengl');
opengl
,保存为类光栅的 EPS 而不是真正的矢量图形。 - Suever
Distiller
中找到了Ghostscript
选项。这是正确的位置吗?如果是正确的位置,那么很奇怪,因为我已经勾选了Ghostscript
并取消勾选了Apple Distiller
,但.eps
文件仍然模糊不清。 - Sibbs Gambling