toruのブログ

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

黒フレーム挿入と黒ライン挿入を組み合わせて CRTライクなインターレース表示を試した

1. 背景と目的

  • 以前の記事iPhone 13 Pro の 120Hz ディスプレイを活用したテストパターンを作成した
  • この時は黒フレーム挿入を試したのだが、加えて黒ライン挿入も試せば CRTライクなインターレース表示が可能になると考えた
  • ということで実際に動画を作成して iPhone 13 Pro で再生することにした

2. 結論

60fps の動画に対して 黒ライン挿入 と 黒フレーム挿入 を行い 120fps の検証用動画を作成した。この動画を iPhone 13 Pro で再生して CRTライクなインターレース表示になることを確認した (※1 ※2)。

作成した動画を iPad で 240fps 撮影し、1/32倍速再生した様子を以下に示す。動画は明るさ不足でノイジーだったため、黒ライン挿入の様子が分かるスクリーンショットも合わせて示す。

zu1
動画1 1/32倍速再生した様子 図1. 黒ライン挿入の様子(拡大表示推奨)

作成した動画は以下のリンクからダウンロードできる (サイズは 1.3GB)。iPhone 13 Pro を所有している方は Files アプリを使えば確認できる(※3)。

quasi_interlacing_video_120fps.mov - Google ドライブ

※1 リファレンスとなる CRTモニターを準備できなかったので筆者の主観的な感想である。加えて特に良い印象も受けなかった(若干の企画倒れ感あり)。

※2 筆者が使用した iPhone の解像度は 2778x1284 であるため、iPhone 上で 1:1 pixel mapping の表示になっていない。これが動画の見え方にどのような悪影響を及ぼしているかは不明

※3 nPlayer などのサードパーティー製のプレイヤーでは 120fps 再生とならない可能性がある。注意して頂きたい。

3. 動画の作り方

以下で動画の作り方を説明していく。

が、まずは前提となる CRTライクなインターレース表示について説明する。

3.1. CRTライクなインターレース表示とは?

本記事で筆者はプログレッシブ信号に対して以下の2点を行った表示を CRTライクなインターレース表示と呼んでいる。

  • 偶数ラインのみの表示と奇数ラインのみの表示を、黒ライン挿入を行うことで擬似的に OLED 上で実現する
  • 以前の記事 で試した黒フレーム挿入を行い、OLED の表示を CRTのようなインパルス発光型[2] に近づける
図2. フレーム番号 0 図3. フレーム番号 1 図4. フレーム番号 2 図5. フレーム番号 3

3.2. DaVinci と Python を使った動画の作り方

具体的な動画の作り方は以下の通り。なお、インターレース表示は擬似的に行うため、動画データは常にプログレッシブ形式で良い。

  • ①60fps のソースを準備

    • 使いたい動画を 60fps の静止画連番ファイルで吐き出す
    • 解像度は 1080x1920 (9:16) にしておく
      • 1920x1080 だと縦方向の大きさが不足しており、黒ライン挿入の効果を確認しづらかったので 1080x1920 とした
  • ②黒ライン挿入を実施

    • 静止画連番ファイルに対して Python で黒ライン挿入を行う
    • 奇数フレームと偶数フレームとて黒ラインの挿入位置が入れ替わるようにする
    • 黒ラインの高さは 2px とする
      • 1px だと「インターレース感」を知覚しづらかったため
      • また、iPhone 側のスケーリングの影響を受けにくくするため(効果があったかは不明)
  • ③黒フレーム挿入を実施

    • 60fps の黒ライン挿入済み静止画連番ファイルに黒フレームを挿入して 120fps の静止画連番ファイルにする
  • ④DaVinci で 120fps の H.265動画としてエンコード

    • プロファイルは Main 4:4:4 を選択すること[3]
    • 可逆圧縮となるようにすること
      • 少々乱暴だが今回は DaVinci の Deliverページにて Rate Control を Constant QP に設定した上で、各種 QP値を 0 に設定した

4. 感想

とりあえず作ってみたが、色々と問題点があると痛感した。ザッと列挙するだけでも以下がある。

  • iPhone の特殊な解像度の影響でスケーリングが適用されてしまう
  • iPhone の画面が小さすぎて 14型~21型の CRT と見え方が大きく異なる(今回は縦長表示とせざるを得なかった)
  • レトロな雰囲気を再現するなら、オリジナルコンテンツのスケーリングアルゴリズム[4] も考慮しなくてはならない

ここから更に検討を続けるのであれば、CRTの実機の準備、120Hz表示可能な大型の OLEDモニターの準備が必要になる。 これらの準備は困難であるため、本件はしばらく寝かせておくことにする。

参考資料

[1] みるみるコラム(TOA株式会社), "インターレース方式とプログレッシブ方式", https://www.toa.co.jp/miru2/column/column6.htm

[2] 栗田 泰市郎, "ディスプレイの時間応答と動画表示画質", 2012, VISION Vol. 24, No. 4, 154–163, http://www.visionsociety.jp/vision/vol24-4/vision2404_154-163.pdf

[3] toruのブログ, "可逆圧縮する場合に Chroma subsampling に 4:2:0 を指定するのはキケン", https://trev16.hatenablog.com/entry/2022/05/27/203620

[4] Wikipedia (EN), "Pixel-art scaling algorithms", https://en.wikipedia.org/wiki/Pixel-art_scaling_algorithms