2016-09-07 6 views
0

軸付きのMATLABでフル解像度で大きな画像(1641x6139)を保存しようとしています。 imwriteコマンドを使用すると、軸なしでこれを行うのは簡単です。MATLABで軸を使用して完全な解像度で画像をエクスポート

image(x,y,my_image); 

イメージが非常に大きいため、MATLABは自動的にイメージの解像度を下げます。フルサイズで画像全体を表示するには、ウィンドウのサイズを画面よりも大幅に大きくする必要があります。 Figureをエクスポートするにはいくつかの異なるアプローチを試しましたが、それぞれが同じ問題を抱えています。イメージは元のイメージよりも粗い解像度でピクセル化されています。問題は、新しいイメージのピクセル数が少なくなるということではありません。代わりに、隣接するピクセルに同じ値が割り当てられ、粗いスケールのピクセルの外観が作成されます。

set(H, 'PaperPosition', [0, 0, width , height ]) 
print -dpng -r500 my_filename 

全ての画像の画素数を増加させる効果があったが、明らかなピクセレーションは、幅、高さ、または解像度を高める:Hは、Figureハンドルであり、私が試し例えば

、変わらない。

このタイプの問題のために設計されているように思われる関数export_figを使ってみましたが、含まれている画像を元の解像度でエクスポートすると主張していました。結果として得られる画像は正しい画素数を有するように見えるが、問題は隣接する画素が同じ値を有するという問題であり、元の画像にない粗い画素の外観を生成する。私は使用されるコードである:ここ

export_fig(my_filename,'-a1','-native') 

は私の画像の一部にズームイン略同一を示すカップルの画像である:

zoomed in images (original and using export_fig)

最初に原画像と第2画像でありますexport_figから生じる。 2番目の画像はピクセル化されていますが、各画像には実際のピクセルの数がほぼ同じであることに注意してください。

アドバイスや解決策はありがとうございます。この問題は、私が予想していたよりもはるかにイライラしています。

+1

イメージをイメージファイルに直接書き込むのではなく、最初にAxes上にイメージをプロットする必要がある理由はありますか? –

+0

ところで、export_fig -a1 -nativeは、少なくとも2015aとrand(2000、2000、3)のイメージで私のマシン上の軸の目盛りでフル解像度の画像を生成するようです。 –

+0

軸を直接イメージに追加すると、これは良い解決策になります。 – Llouis

答えて

0

私は簡単な解決策を見つけました。最初に、正しいサイズの空のイメージを作成し、軸を追加して、export_figを使用して軸のイメージを生成します。次に、フル解像度の画像を画像マトリックスに書き込んで、imwriteを使用して結果の画像を保存します。

関連する問題