• ベストアンサー

DCT変換の圧縮について

画像をDCT変換すると、左上の方に重要な成分が集まりますよね。 なので右下の方をカットして復元しても元画像に大きな影響を与えない。つまり少ない劣化で圧縮できた。 と言うのがDCT変換の圧縮であると認識しています。 (これが間違いだったらすみません。勉強不足でした。) でもこれって復元画像の画素数(ピクセル数?)は変わりませんよね?変わるのは各画素の数値だけ。この場合、元画像に比べて復元画像のファイルサイズは減少するんでしょうか?ファイルサイズは画素数に依存すると思うんですが… (もしかして、圧縮=ファイルサイズの減少、って訳ではない?)

質問者が選んだベストアンサー

  • ベストアンサー
  • SortaNerd
  • ベストアンサー率43% (1185/2748)
回答No.2

>と言うのがDCT変換の圧縮であると認識しています。 違います。 が、それはひとまず置いておいて、疑問に対して答えておくと、 その方法で保存するのはDCT結果のデータであって、復元した画像データではありません。 たとえば元画像が8×8の64個の数値からなっているとして、DCTをかけると同じく64個の数値になります。これを保存するときはそのうち左上16個だけを保存します。 保存した画像を見る時にはその16個のデータから逆DCTによって画像を復元します。 もちろん復元した状態を保存しようとしたら元と同じデータ量になります。bmp→jpg→bmpと変換したようなものです。 で、これが圧縮かということですが、 この例は圧縮の説明に必ずといっていいほど出てくるのですが、jpgなどの実際の圧縮方式とは全く別物です。似ているところはDCTを使っているところだけ。これはあくまでDCTの概念の説明だと考えてください。 例えば上の例で挙げた「64個のDCTデータから左上16個を保存(の後逆DCTをかける)」というのは、「画像を1/2に縮小(の後2倍に拡大)」と同じことです。これを圧縮とは普通呼びません。

kk-ponpon
質問者

お礼

丁寧な説明ありがとうございました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

DCT で圧縮しようとすると, 普通は画像を「ブロック」単位に分割して各ブロックに対して DCT を使う, ということになりますね. で単純な計算をします. 今どきはブロックの大きさが 8×8 です. このブロックに対して DCT を適用すると (やはり) 64個の数値になりますが, そのうち 32個だけ使うことにするとしましょう. ファイルサイズはどうなりますか?

kk-ponpon
質問者

お礼

回答ありがとうございました。

kk-ponpon
質問者

補足

32個のDCT係数を使って逆変換したとしても、復元された画像は8×8になりませんか? 元画像に比べて、各画素の数値は変化しても個数は変わらないような…。 ということはファイルサイズも変わらないのでは?

関連するQ&A

専門家に質問してみよう