• ベストアンサー

データ圧縮にDCTを用いるのはなぜですか?

jpegなどの圧縮形式では離散コサイン変換(DCT)が用いられているそうなのですが、これは画像内の関数をコサインの級数展開して、更に高次の項を無視することで不可逆的な圧縮をかけるものだという理解でよろしいでしょうか? 質問は、なぜexpの級数展開であるフーリエ変換では同じようなことをしないのか、 ということと、sinを用いない理由はDC成分が重要だからと本には書かれているのですが、cosだとDC成分をなくしたくても、残ってしまうために問題になることもあるのではないのでしょうか? よろしくお願いいたします。

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

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.2

なぜJPEGなどの画像圧縮で、DCTといった周波数領域への変換を行うかというと、人間の眼は「低周波成分の変化には敏感」だが、「高周波成分ほど変化に鈍感になる」という特性があるからです。 そのため、DCT変換後の周波数領域で、高周波成分の精度を落としても、 視覚上はあまり情報が劣化しているように感じない、ということになるのです。 ここで重要なのは「精度を落とす」のであって「無視する」のではないことに注意してください。 通常、画像は8bit=各画素256段階で表現していますが、JPEGではDCT変換後の高周波領域を、256値よりももっと荒い段階数で表現することで、情報量を減らしているのです。 (結果として、元々の高域成分が非常に小さい場合は、高域成分が0になってしまうことになりますが、「高次の項を無視」するのは、あくまで結果です。高域成分も大きいような画像だと、JPEGでも高域成分は残ります。) 次に、周波数領域への変換方法で、なぜフーリエ変換ではなくDCT変換なのかというと、 フーリエ変換では、入力が実数の場合でも、変換後の周波数領域成分が「複素数」になってしまいますが、 DCTでは、入力が実数なら、変換後の周波数領域成分も「実数」になるので、計算が容易になるからです。 なお、このDCT変換後の周波数領域での「DC成分とは何か」ですが、 DC成分とは、対象としているブロック全体の「平均輝度」を表しています。 例えば、全体的に真っ白な画像は、DCT変換すると、DC成分が1で、それ以外の周波数成分は全て0になります。 全体に真っ黒な画像は、DC成分も0で、それ以外の周波数成分も0です。 DC成分が失われるということは、この「平均輝度」情報が無くなるということですので、 DC成分無しではまともに「画像」情報を処理することが出来ないのです。

その他の回答 (1)

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

>jpegなどの~よろしいでしょうか? だいたい合っています。注意点は高次の項は量子化を粗くするだけで完全には無視しないのと、DCTは情報量を減らしているだけで圧縮は次の段階であることです。 >なぜexpの級数展開であるフーリエ変換では同じようなことをしないのか 質問の意味が分かりません。 フーリエ変換においてDCTと別の操作をするのは、別の変換なので当たり前だと思うのですが。 >DC成分をなくしたくても、残ってしまうために問題になることもあるのではないのでしょうか? 画像圧縮においてDC成分をなくしたいと思う場面が思いつきません。

FUKUSHU
質問者

お礼

ありがとうございます。 すいません、フーリエ変換ではなくフーリエ級数展開するのではなぜだめなのでしょうか? それと、画像圧縮においてDC成分をなくしたいと思う場面が思いつきません。というのは具体的にどういうことなのでしょうか? 画像におけるDC成分というのがいまいちよく分からないのですが・・・

関連するQ&A

専門家に質問してみよう