toruのブログ

月1くらいで記事書きたい。

テストパターン動画を作った

背景

急にテストパターン動画を作りたくなったので作った。本来であれば色彩工学に関する勉強を色々と進める必要があった。しかし我慢ができなかった…。

成果物

以下のようなテストパターン動画を作った。

良い点

  • Chroma Subsampling の 4:4:4, 4:2:2, 4:2:0 を目視で判別できるようなドットパターンを入れた(右端)
  • 表示デバイス10bit 表示できているか目視で判別できるような Rampパターンを入れた(左端)
  • テストパターン動画のエンコード作業の自動化に成功した
    • テストパターン動画はパラメータとして 解像度、フレームレート、ダイナミックレンジ の組み合わせが合計12通りある
    • これまでは手作業でエンコードしていたが大変手間だった
    • そこで DaVinci Resolve Studio で Python スクリプトを使った自動エンコード環境を整えた

悪い点

  • H.264 や H.265 で圧縮してしまうと、圧縮による画像劣化で Chroma Subsampling や 8bit/10bit の判別が極めて困難になる
    • つまり実用性がかなり低い
    • 言い訳をしておくと、ProRes や DNxHR などの業務用コーデックなら十分に目視判別が可能である
  • 10bit 表示できているか確認するパターンは 「真の 10bit表示」 と 「8bit + Dithering」の区別がつかない
    • 特定環境では 8bit ディスプレイを使っているのに 10bit のように表示されてしまう
  • Python スクリプトを使った DaVinci での自動エンコードは不完全である
    • 一部の設定は事前に手作業で済ませておく必要がある

Chroma Subsampling の判別パターン

テストパターン動画の右側に用意した "WYCGMRB" のドットパターンは 偶数ピクセルスタートと 奇数ピクセルスタート の 2種類がある。 これにより Chroma Subsampling に応じた見え方が 図1のように変化する。 したがってビットレートが極めて高い動画であれば目視で Chroma Subsampling の判別が可能である。

なお、一般的なビットレートの動画では圧縮によってパターンが潰れてしまい目視判別は困難である。

f:id:takuver4:20200705141347p:plain
図1 Chroma Subsampling による見え方の違い

Chroma Subsampling 確認用の動画

実際の動画で見比べたい場合は以下の動画をダウンロードして確認して欲しい(右クリックして「名前を付けてリンク先を保存」を推奨)。 なお、以下の動画は可逆圧縮となるようにエンコード時に -c:v libx264 -qp 0 オプションを適用してある。

なお上記の動画は 8bit でエンコードしてあるので、左側の 10bit パターンは参照しないこと

10bit 表示の確認パターン

8bit/10bit の差はブログでは説明が困難なので解説は省略します。

なお、本パターンの作成では ELSAさんのサイトにある 10bit確認用の PSDファイルを参考にさせて頂きました。

www.elsa-jp.co.jp

DaVinci Resolve Studio での Python スクリプトを利用した自動エンコード

以下の動画のように自動エンコードするスクリプトを作成した。

しかし、現時点では DaVinci Resolve の Pythonスクリプト制約が非常に多い。筆者は制約に悩まされて膨大な量の時間を無駄にした。よって Python スクリプトの使用はオススメしない

なお、どうしても使ってみたい方は以下の手順で README.txt を参照して欲しい。

  1. DaVinci Resolve Studio の画面から "Help --> Documentation --> Developer" を選択
  2. 表示されたウィンドウの "Scripting" フォルダを開く

感想

来週こそは色彩工学の勉強を進めたい。