パソコン・メモメモ備忘録

気の向くままパソコン関係等で気になることを書き記す。時々更新!

JPEG の圧縮効率を上げる Google Guetzli

Impress さんの記事。画像や動画像の非可逆圧縮では、少しでも同じ画質でファイルサイズを下げるべく圧縮効率を上げようと色々研究されていて、時々成果が発表される。今回は、JPEG というフォーマットは固定した中で、如何に画質をあげるかという話のようだ。実際、一般的な JPEG ライブラリは、それなりの速度で圧縮するために、探索空間を限定しているということらしい。時間を掛ければ、もっと圧縮効率を上げられると。

実際、圧縮は探索問題とも言える。ある評価関数をできるだけ小さくするべく、圧縮後のデータをどうすればいいかを探す感じか。一つは評価関数の良し悪し、もう1つは探索方法の良し悪し。今回は、どちらかというと評価関数の方を改善する感じか。実際には、もうちょっとややこしくて、Guetzli の評価関数に JPEG の評価関数が近づくように計算するとか。この辺は小生の理解を越える。Guetzli の評価方法で圧縮した結果に、出力が近づくように JPEG の圧縮データを構成する? 実際には、DCT した係数群へのビットの振り分け方(量子化)を最適化する感じなんだろうか。色々な振り分け方をしてみて、復元した際の Guetzli の評価が一番高くなるようなものを見つける?

Web ページに埋め込む画像とか、何万~億回アクセスされるようなものだと、少しでも小さくして通信量を減らすのも意味があるのかもしれない。理論的には、Guetzli の評価を最大にする圧縮データが存在するはずだが、それを見つけられているのだろうか。

結構、実際にその画像を見るデバイスの解像度とか、その画像のどこを見せたいか、みたいな意図を反映させようとすると、そんなに簡単に評価関数が得られる気がしないが… 人物の写真なら、顔の目の周りは画質を上げて… とかもできるといいのかも。その辺どうしているのかなぁ。そういうツールがあるのだろうか。

はてさて。