雑感

DCT方式の場合、ビットレートが低いとブロック歪みが出てくるけれどこれはDPIが高い環境で見ると気付きにくい感じだ。これはブロック境界の段差が一定以上の小ささだと人間の目が認識しにくくなるっていう事なんだろうか?(高周波に対する感度が低い)
となると大きい画面サイズのTVを近くで見る場合、1920*1080よりもっと解像度が上のスーパーハイビジョンでないと画質の劇的な改善はなかなか厳しいのかも。

高周波部分はあまり目立たないので量子化行列の高周波寄りの係数を高くすると良いっていうのは本当にそうだ。大体同じくらいの見た目でかなり符号量に差が出る。

progressive方式のJPEGでもそうなんだけど、量子化された情報を符号化する際にブロック毎にするのではなくて周波数帯毎に並び替えてから符号化すると、圧縮率が上がる。メモリアクセスの観点から処理速度的には全然好ましくないけど、縮むんだからしょうがない。。

圧縮でBZIP2を使っているんだけれど(重くないか心配、まぁ最終的には置き換えかも)、全体をまとめて圧縮するのではなくて、周波数帯ごとに圧縮すると少しだけ圧縮率が上がった。偏りが集まるからだろうか?

DC成分は差分を保存すると情報量が減らせる特性がある。PNGで使われているPaeth Predictorを使ったら少し圧縮が効きやすくなった。

負の整数をバイナリで表すと断続的に立っているビットが多くなってしまう為か圧縮が効きにくい感じ。単純に加算してずらすのではなく、負の整数は*-2で1以上の整数は*2+1-1というように変換すると、最小値を調べ上げる必要もないし、発生頻度がなるべく崩れない為か、少し圧縮率が上がった。

Golomb-Rice 符号を使うと、符号量を減らせた。Lena画像の場合、DC成分や低周波のAC成分はGolomb-Rice符号化のみが一番圧縮率が高くて、中間AC成分はGolomb-Rice符号化したのをBZIP2圧縮したのが一番縮んで、高周波AC成分はそのままBZIP2圧縮したのが一番縮んだ。

粗く量子化された高周波のAC成分を更に非可逆圧縮するのは駄目なんだろうか?なんか良い圧縮方式無いかなぁ…。

H.264の算術圧縮のCABACは結構縮むらしいけど実装が大変そう。

なんか色々とやっても同じ容量のprogressiveのJPEGと比較して一目で画質が良くなったと思えるくらいには改善出来ていない。あとなんとか10%くらいは縮めたい。