2012-02-12 17 views
1

Matlabで画像処理について学び始めましたが、私は小さな問題があります。Imshow()出力を保存する - スケーリングされた画像をディスクに保存する

私は画像のFFTを視覚化しようとしています。関数imshowは、空の行列(例えば、sintax imshow(image、[])を提供するときに必要なものを行います。

ここで、imshowは空行列と一緒に供給されると、値は白で最も高く、それに応じて他のすべての値が調整されます(少なくともそれが私の理解した方法です)。

imshowが行うスケーリングは素晴らしいですし、 imshowを使用した後に画像を手動で保存することを考えましたが、私はこれをプログラムで行いたいと思います。

私は素晴らしいMatlabがあると思いますこれを行う機能ですが、グーグルグーグルでは解決策を見つけることができませんでした。

答えて

1

imwriteを呼び出す前に、最小値がゼロで最大値が255(8ビットイメージの場合)になるようにイメージのサイズを変更します。例えば

img = randn(100); 
figure,imshow(img,[]); %# show the image 

mx = max(img(:)); 
mn = min(img(:)); 

imgScaled = (img-mn)/(mx-mn); 

%# convert to uint8 and save 
imwrite(uint8(round(imgScaled*255))), 'test.tif'); 

%# reload and display without scaling 
%# if we have done everything correctly 
%# the images before and after should look alike 
imgLoaded = imread('test.tif'); 
figure,imshow(imgLoaded) 
+0

私はソリューションにMatlabビルドがあることを望んでいましたが、これはうまく機能し、まさに私が望んでいたものです。助けてくれてありがとう! – MrMatlabUser

+0

@MrMatlabUser:どうぞよろしくお願いします。私の答えを受け入れることを検討してください。 – Jonas

0

imagescのような音は、hereです。しかし、自然にFFTを表示するには、複雑な値を取り除く必要があります。マグニチュードを作成する、位相プロットを別々に作成するなどの操作を行います。しかし、これは、imshowは既にスケーリングを行うMatlab関数なので、私はあなたが新しい関数が必要な理由をよく分かりません。 imagesc少なくとも色を取得できます。

次に保存するにはimwriteを使用してください。

+0

imshowは私にとって素晴らしいものです。しかし、画像を保存することは私の問題です。imwriteを使用するだけで、imshowが提供するスケーリングを行わずに画像をそのまま保存できます。 p.s.私はFFTの大きさを使って、それが重要かどうかを視覚化します。 基本的には、imshowの出力を保存することですが、保存するピクチャがたくさんあるので、[名前を付けて保存...]などをクリックするのではなく、MATLABコードから行います。 – MrMatlabUser

+0

@MrMatlabUser参照してください。だから、ジョナスが指摘しているように、あなたはあらかじめ画像データを自分でスケーリングすることができます。 –

0

あり、これに良い答えの多くがありますが、迅速なハックのために、あなたはちょうどより多くの情報のためdoc printを参照して、図に見るものprintする場合があります。

関連する問題