2012-03-26 9 views
-2

matlabで画像を表示しようとしました。画像の次元は< 15360x15360x3 uint8>でしたので、私がこのことをmatlabで示したところ、私はCPU使用量とRAMに多くの問題がありました。ズーム、パン、その他の作業はできませんでした。 イメージをペイントしてサイズを変更しました イメージのサイズを変更した後に問題が発生しないようにします< 7680x7680x4 uint8>「imshow」を使用すると、エラーが発生します ???エラー==> imageDisplayValidateParams> validateCDataを使用して114 サポートされていない寸法 これは4のためです 誰も私がこの問題を解決するために何ができるか考えていますか?imshow関数でサポートされていない寸法誤差

答えて

7

これは、今夜の画像処理ツールボックスに関する質問を投稿したときのです。これはです。あなたが使用している機能のマニュアルを読むことを強くお勧めします。この場合

doc imreadはあなたに次のコードを取得します:グラフィックスから

関数imread

読み取り画像を構文

A = imread(filename, fmt) 
[X, map] = imread(...) 
[...] = imread(filename) 
[...] = imread(URL,...) 
[...] = imread(...,Param1,Val1,Param2,Val2...) 

説明

A = imread(filename, fmt)は、グレースケールを読み込むファイルまたはからのカラー画像ファイルは文字列filenameで指定します。ファイルが の現在のフォルダまたはMATLABパス上のフォルダにない場合は、完全な パス名を指定します。

テキスト文字列fmtは、標準のファイル拡張子 でファイルの形式を指定します。例えば、Graphics Interchange フォーマットファイルには 'gif'を指定します。サポートされているフォーマットのリストをファイルの 拡張子で表示するには、imformats関数を使用します。 imreadがfilenameという名前のファイル を見つけられない場合は、filename.fmtという名前のファイルを探します。

戻り値Aは、画像データを含む配列です。ファイル にグレースケールイメージが含まれている場合、AはM行N列の配列です。ファイルに トゥルーカラーイメージが含まれている場合、AはM行N行3列の配列です。 TIFFファイルCMYK色空間を使用 含むカラー画像に対して、Aは m行n行4列あります。詳細については、「書式固有情報」セクションの「TIFF」を参照してください。

Microsoft Paintは、保存するときにTIFFファイルの形式を変更しています。これはyour other questionと同じ問題です。解決策は、The GIMPのような別の画像編集プログラムを使用することです。

+0

私はimreadについてのドキュメントを読んでいましたが、主な問題は** imshowです**機能はM行N行4列の配列を表示しません。あなたが提案したように、私はGIMPを使い始めましたが、今問題は修正されています。 – sepideh

+0

実際の問題はMxNx4配列がCMYK色空間に画像を持っていて、 'imshow'がRGBを期待しているということです。行列の次元が 'imshow()'と一致しないという事実は、 'imshow'がCMYKをどのように処理するのか分かりません。あなたは色空間の間で変換することができますが、それは厄介です。 –

0

あなたはMATLABで画像のサイズを小さくすることができる:

まず、画像(任意に)フィルタ:再サンプル画像毎FREQ画素を

sigma = 1; 
flt = fspecial('gaussian', (2 * sigma + 1) * [1, 1], sigma); 
img_filt = imfilter(img, flt, 'symmetric'); 

を:

freq = 2; 
sub_img = img_filt (1 : freq : end, 1 : freq : end, :); 

イメージのサイズを変更するとペイントがよりスマートになるとは思いません。

+1

OPが尋ねたことはあまりありません(彼女は既に別の質問で画像のサイズを変更する方法を尋ねました)。脇役として、imresize()関数はスムージングとダウンサンプリングを1ステップで実行します。 scaling_factor、 'bicubic') 'となります。 –

+0

imresize()について知っておくと良いですが、それは新しいものでなければなりません(R2010bではなく)。 – Serg

+0

私の解決策の関連性に関して、私は、結果としてのペイントフォーマットの問題ではなく、オリジナルの問題(imshowのイメージが大きすぎます)を解決することを提案しました。 – Serg