x264 と x265 で CRF 毎の画質の変化を比較してみたり

Software
この記事は約5分で読めます。
この記事は最終更新日より 1 年以上経過しています。
画像やリンクが無効になっている可能性もあるのでご了承下さい。
 本記事掲載当時の x265.exe にはビットレートが無駄に割り振られるバグ持ちバージョンだったので、SSIM のグラフに記載のあるビットレートやファイルサイズ表記は全く宛にならない間違ったデータという事になっている。予めご了承を。
(2018/03/09 追記)

 昨日書いた x265 エンコのメモでは「実際に画質の比較はやらない」なんて書いてはみた物の、個人的にはやはり気にはなるので自分の心に留める程度には調べてしまった。
 人間の目で見て判断する画質コンピューターが良いと判断する画質では乖離があるハズなのだが、人間が見て判断する為の補助的な意味としてソースにどれだけ近いかを数値化した SSIM と言う物を見る事にしてみた。


 まずこの SSIM と言う物は今回初めて気にかけた物。以前から言葉だけは聞いた事があるんだけども、実際にそれはなんなのか知らなかった。SSIM を調べてみるとソースを 1 とした場合、エンコードなどの圧縮で劣化した物がオリジナルにどれだけ近いかを分析して数値化した物の様だ。SSIM が 1 であればソースと全く同じ。1 以下であればデータとしては劣化しているがソースと同じ物だと認識可能であると言う事になる。
 では SSIM の数値がどの様な指標になるのかなと、あちこち調べていると 0.985 と言う値を頻繁に目にする。0.985 を越えていれば実用的に扱える画質の物であるとの意見が多かった。より高画質でありたいのであれば 0.990 以上ともあった。さらに 0.991 以上ともなるとソースとの区別が付きづらい程の物になるとかで、そこまでははっきり言ってファイルサイズが大きくなる分無駄になるかもと思う。
 それならば SSIM が 0.985 以上を目指して –crf の値を上げて行き SSIM が 0.990 に近い結果を出力する物を x265 エンコ常用設定にしてみようと思い立ち、およそ 2:30 程の長さに動画をトリミングして crf の値を変えつつ、比較用に x264 も絡めてエンコードしまくってみた。

 エンコード環境としては次の通り。
 ソースは TOKYO MX の某アニメを録画した TS ファイル。本編冒頭部のみの 2 分 27 秒をチョイス。
 Avisynth のフィルターは Trim, EraseLOGO, Auto24FPS, Crop, GPU_Convolution3D, GPU_LanczosResize, GPU_TemporalSmoother, WarpSharp を使用する程度。CM カット Crop してロゴ消して 24fps にしたあとノイズ除去して Smoother かけてリサイズ。
 バイナリは x264 では x264.2479kMod.10bit.x86.exe を。x265 では rigaya 氏ビルドの x265_1.3+212_x86_16bpp.exe を用いている。共に 10bit 深度で揃えた。
 エンコードオプションは分からない事が多いんで色々適当にこう。
 x264 は「–preset fast –tune animation –crf 19 –threads auto –cabac –ssim」
 x265 は「–crf 19 –preset fast –tune ssim –ssim」
 この様にして crf の値を 19, 20, 22, 24, 26, 28, 30 の 7 パターンずつエンコード。

 実際にエンコードした物から同じフレームの物を抜き出して 2 倍に拡大させた物を以下に示す。

左 : x264, 右 : x264


 crf を大きくすると画質は低下していくが x264 では crf 26 あたりからノイジーでシャープさが薄れていく感じになった。x265 であれば crf 30 でもまぁアリかなとも思える画質。また、全体的に x265 の方がシャープであり、発色的にもバンディングを軽減してくれているので綺麗に見える。しかし、静止画としてみるには違和感があるので最終的な評価は実際に動画として見た方が良い。

 折角 –ssim を付けたのでその結果を基にファイルサイズも絡めたグラフを作って見た。
0921_graph3
 個人的な指標として SSIM 0.985~0.990 を満たしたいので、その範囲内にある crf 値をみると x264 なら 23~26 程度、x265 なら 24~28 程度になる。x265 の方が x264 よりも 2~3 段階ビットレートを落としても同等となり得る画質が得られるようだ。
 ファイルサイズを見て見るとこっちは全体的に x264 の方が縮んでいる。x265 ではバンディング軽減の為かディザリングされた箇所がみうけられるので、この辺りが圧縮率に影響しているのではないかと妄想してみる。
 また、今まで x264 エンコでは crf 19 としていたけど、SSIM だけを見ればはっきり言って過剰すぎたのかなと言う印象を受けた。20~21 でも充分高画質であると言えそうだから、ちょっと見なおしていかないとだ。

 最後に注意点としては、x265 では心理効果が得られる処理もあるので、この記事の様に静止画として切り抜いた画像を比較するだけでは充分な評価は得られない。SSIM で数値化した比較であってもそれはコンピューターの判断する物なので、最終的には自身の目で確認を行い設定を詰めていくのがベストだろう。

* 2014/09/26 19:55 追記 — グラフ追加
 CRF 毎にエンコードした動画の「ビットレート」に関して見ていなかったので、保存してあったファイルを MediaInfo 0.7.70 を用いて読み取ってグラフ化をした。
0926_graph
 ビットレートに関してはソースによって大きく変化する為、あまり参考となり得る物にはならないかもしれないが……
 おおよそ同じ CRF 指定であれば x265 の方が高ビットレートになる。この事からファイルサイズも大きくなっていると見て取れた。x265 は x264 のビットレートと比較すると 50~75% 程度でも同等の画質に見える事が多いので、x265 の crf 19~21 ではやはりビットレートが高すぎて HEVC エンコードを活かせていないかなとも思える。x265 なら 1,500kbps 前後でも充分だから crf 26 程度で充分ぽい。
 低ビットレートでファイルも低容量だけど高画質という x265 らしい使い方が出来る様にまた調整をしていかねばだ……
 

著者プロフィール
ぶっち

本格的に PC へ触れ始めてたのは 1990 年位から。
興味は PC 全般。OS は Windows と Linux などを嗜む。
プログラマやネットワークエンジニアを経てフリーに活動している 40 代も後半に入ったおじさんです。

ぶっちをフォローする

コメント

  1. thank you for ur effort!

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.