eps 形式を使用して Matlab で画像をエクスポートしていますが、画像が滑らかになります。Matlab は、png などの他の形式を使用して画像をぼかしません。ぼやけていない画像を eps 形式でエクスポートする方法を知りたいです。png を使用した結果の画像を次に示します。
そして、これが eps を使用した結果の画像です。
eps 形式を使用して Matlab で画像をエクスポートしていますが、画像が滑らかになります。Matlab は、png などの他の形式を使用して画像をぼかしません。ぼやけていない画像を eps 形式でエクスポートする方法を知りたいです。png を使用した結果の画像を次に示します。
そして、これが eps を使用した結果の画像です。
この問題は Mac でも再現可能で、MATLAB ではなく eps レンダラーに問題があります。たとえば、imagesc(rand(20))
Preview と GSview で保存して表示すると、次のようになります。
明らかに、情報は失われません。一部の EPS ビューアでは正しく解釈/読み取られません。解決策は簡単です。GSview を使用してeps
画像を表示します。ここからダウンロードできます
特に Mac では、エンド アプリケーションが latex/pdflatex の場合、明示的に GS/GSview を使用するように設定する必要があります。そうしないと、デフォルトで OS に組み込まれている Quartz エンジンが使用されるためです。
説明された動作を再現できません。WinXP 32 ビットで R2010b を使用してテストした、使用したコードを次に示します。
M = fspecial('gaussian',[20 20],5);
imagesc(M)
print('-dpng','a.png')
print('-depsc2','b.eps')
おそらく、これは EPS ビューアの問題です...
なぜ機能するのかわかりませんが、次のことを試すことができます。
eps2eps oldfile newfile
私のためにトリックを行います(Mac OS上)
最初はあなたが間違ったことをしていると思っていましたが、それが1年ほど前に私を悩ませていた問題だったことを思い出しました。私はこの動作を「修正」する方法を思い付くことができませんでした。私が調査したところ、これはおそらくバグであり、他のいくつかもこの問題を抱えており、既知の解決策はありません。もちろん、私は最後の部分について間違っている可能性があり、私がそれらを探してから出てきた解決策があるかもしれません。
とにかく、この問題の回避策は、の代わりにを使用pcolor
することでした。これをフォーマットにエクスポートすると、画像が正しく保持されます。例:shading flat
imagesc
eps
pcolor(rand(20));
shading flat
print('-depsc','figure.eps')
注:各小さな正方形の反対角線に沿って、細くてかすかな白い線が表示される場合があります(OSとビューアによって異なります)。これらは、画像のレンダリングに使用されるグラフィックスプリミティブのエッジです。ただし、これはMATLABのエクスポートの欠陥ではなく、EPS/PDFビューアでのレンダリングの欠陥です。たとえば、私のMacのプレビューのデフォルト設定では、これらの行は表示されますが、AdobeReader9.4のデフォルト設定では表示されません。
それでも回避策に関心がある場合:テキストエディタで.epsファイルを開き、「補間」を検索します。おそらく「/Interpolatetruedef」が2、3回見つかるでしょう。「true」を「false」に置き換えて幸せになりましょう:)
Yoda の回答に関するメモ: Mac OS X のプレビューでは、「アンチエイリアス テキストとスクリーン アート」のチェックを外すことで、各正方形を横切る細い白い対角線を消すことができます。もちろん、欠点は、テキスト (たとえば、図の軸など) がアンチエイリアスされないことです。残念ながら、imagesc を使用している場合、チェックを外してもぼやけには影響しません。
もう 1 つの注意点は、プレビューを使用して EPS から PDF を作成する場合、Acrobat で開いたときに結果の PDF が正しく表示される (ぼやけていない) ことです。
実際のぼかしは、ビューアー アプリケーションまたはプリンターが使用するレンダリング ソフトウェアによって異なります。常に良い結果を得るには、画像の各ピクセルを同じ色のピクセルの 8x8 ブロックにします。つまり、次のように画像のサイズを変更します。
im2 = imresize(im1, 8, 'nearest');
ぼかしは、各ブロックの端にあるピクセルにのみ影響します。8x8 ブロックは、DCT 圧縮 (eps ファイルで使用されることもあります) を使用して厄介なアーティファクトなしで圧縮するため、最適です。
の単純なドロップイン置換を作成しました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');