2017-01-08 7 views
1

を反転コードで保存するには:私は、画像を表示する場合方法は、ここでDCTイメージ

imshow(idct2(CDCT),[0 255]) 
i=idct2(CDCT),[0 255]; 
    imwrite(i,'fa.tif'); 

は、それが正常に動作します。しかし、黒い線がほとんどない白い画像だけが保存されます(間違った画像)。私が間違っていることを教えてください。 :)

+0

を保存する前にuint8として入力データをキャストすることができ、私はまさにあなたのデータを知りませんが、あなたは 'save'、または' export'で、図から直接保存することができます。 – Adiel

+0

しかし、画像は拡大縮小する必要があります... – user3102085

+0

画像のdct内のCDCT – user3102085

答えて

1

imwriteを使用してファイルに書き込んだ画像データがdoubleまたはsingle(これはあなたのものです)の場合、すべての値は0から1の間であると予想されます。値はほとんど1より大きいあなたのデータはすべて0から255の間であるので、イメージがほとんど白であるように見えます。 imwriteに電話する前に、mat2grayを使用して簡単にデータを正規化することができます。あなたはimwriteuint8値を渡す場合

imwrite(mat2gray(i), 'fa.tif'); 

そうでない場合は、値が(データがあるとして)0〜255の範囲内であることが期待されています。だから、あなたは、単に

imwrite(uint8(i), 'fa.tif'); 
+0

それはうまくいっていますが、いくつかのピクセルにわずかな違いがあります。それをどうすれば改善できますか? – user3102085

+2

@ user3102085残念ながらあなたはできません。あなたの元のデータは 'double'(64ビット)で、結果のtifは8ビットなので、データをロードしてもデータは完全に等しくなることはありません。 -bit tiffでも、まったく同じではありません。同じである必要がある場合は、代わりに.matファイル内にデータを保存することを検討してください – Suever

関連する問題