「量子化」自体を「画質劣化度」とムリヤリ肚に落としているので「量子化」「量子化値」「被量子化値」「量子化パラメータ」がそれぞれ違うらしい となるとあまり深入りするのも問題だが…。
「デッドゾーン」とは、量子化値が0になる範囲のことで、非常に細かい値は強制的に0に丸めて省略してしまへ!
という事のようだ。従って実用上は、deadzone_inter、deadzone_intraの入力値より細かい輝度値(=ほぼディテイルと 思って良いだろう)は潰してしまいますよ、という理解で良いと思う。上記の通り、x264はそれぞれにデフォルト値が入っており、細かいディテイルを潰し ている。
他方、教科書p137には「H264/AVCでは画面内、画面間符号化ともデッドゾーンの無い量子化を採用し
ています」とある。
つまり、規格上は非常に細かいフィルムグレインやスノーノイズまでがっつり残せる。
画面内符号化 | 画面間符号化 (動き補償により小さい成分が多い) |
備考 | |
---|---|---|---|
MPEG-2 | 有り |
ナシ |
|
H.264/AVC | ナシ | ナシ | intra,interで同じ量子化が使える |
ただし、フィルムグレインやスノーノイズまでがっつり保持って事になると、必要なビットレートがうなぎのぼる。
x264は実用性の観点
からデッドゾーンを採用してるって事だ。
例えば自分の場合、1024kbpsと2048kbpsの画質差はほとんど感じ取れない。bitrateの高 い方が全体的になんとなぁく、じんわりと「良いかな?」とは思うものの、噺家の顔の皺、着物の質感などにはまず違いがなく、素材と比べるとどちらも同程度 の潰れがある。
逆に古い白黒映画ではフィルムのコマ単位で輝度がばらついたり、一コマだけやたら汚れてたりする事があるのだが、そうした部分がやけに強調されて しまうケースがある。しかも素材に忠実ではないブロックノイズという形で。そのくせ衣装の毛羽立ち具合などは同程度の潰れがある。
もちろん、hqdn3d やpp=l5を-vfチェインに組み込んでいるのでその影響が一番大きいハズだが、両デッドゾーンのデフォルト値の存在と教 科書の記述の不整合から見て、x264自体が1024kbps近辺に主眼をおいたチューニングになっているのだと思う。
使い道としてはまずロスレスを考えたい。huffyuvを受け付けないQuickTime系とapple intermediate/Pixletを受け付けないlinux系を繋ぐ中間生成物だ。qp=0:deadzone_intra=0:deadzone_inter=0:nodeblockこれで理屈上は、スノウノイズだろうがフィルムグレインだろうが着物のケバ立ちだろうが噺家の顔の皺だろうがどーんと来い!って事になる。
Doom9 Explanation for new switches in x264一般的に適切なbitrateというのは存在しないが、一応の目安としてBPP表を作ってみた。
#4 IgorC
--deadzone:高bitrate でディテイルレベル向上。ノイズ、フィルムグレイン、など。#10 AlexW(x264 contributor)
IgorC が言ったように、--deadzoneは中~高bitrate領 域での精細なディテイルやフィルムグレインを向上させる。#23 akupenguin(x264 author)
まず--deadzone-intra の調整から始めるのをお奨めする。違いの大半はここで発生するみたいだから。--deadzone-intra の デフォルト値は11だが、いくぶん0に近い方がややディテイルが残るようだ。CQMと一緒に使うとなお良いハズ。
理論上、lambdaを改造すればtrellisに もdeadzoneが使える。でも実装はまだ。#10 AlexW(x264 contributor)
まだちゃんとテストしてないが、速度低下は最小限のハズだ。#14 Sharktooth
一般的なbitrateとして数字を上げるのは意味が無い。完全に素材の複雑さ次 第だからだ。#27 akupenguin(x264 author)
こんなふうに考えてくれ:
超低ビットレート=見るに耐えない画質。
低ビットレート= 悪くは無いが決して良いとは言えない。
中ビットレート= 良い。但し完璧では無い。
高ビットレート= 完璧に近い。
Deadzoneはquality-per-qpに 影響する。理想的なデブロック強度はqualityに依るが、現実のデブロック強度(規格上の定義によるもの、およびx264オプション で指定するもの)はQPと相関関係にある。qualityでは無い。#29 pinkie_1
だ からもしquality-per-qpを調節すれば、デブロックの設定も変えたいケースがあるだろう。しかしながら、デブロック設定の単位は極めて粗いの で、deadzoneを最低値の0まで下げた場合でも(推奨しない)、対応するデブロック補正はせいぜい-1に止めるべきだろう(default deadzoneの時に使っていたデブロック強度に対して-1)。反対にdeadzoneを最大値の32まで上げるなら、適切なデブロックはせいぜい+ 1。
適切なdeadzoneとbitrateとの間に特定の関係は無い。Deadzoneは常にrate-distorion optimal valueと相関関係にあるので、いかなる変化もサイコビジュアルな もので、まだ断定的な推奨値を書けるほどテストされていない。
詳しい人に--deadzone の正しい使い方を聞きたいのだが:
奇妙な組み合わせで使う人が多いように思える。例えば(4,4) 、 (6,6,)、(0,0)すらある(intra, interの順)。
自分の理解では:
1. intra < inter であるべき。
2. (0,0) は非実用的。
個人的には--deadzoneを使う際は (2,4) か (4,8) にしてる。
更新履歴