NVEncでH.265エンコ時はインタレ解除必須なのは周知の通りだが偶々経験した中で
KFMなどで自動インタレ解除できないソースに遭遇したのでそれの対処方法
まず異変に気づいたのが某ゾンビドラマで通常KFMなどで24fps化できる番組なのだが
なぜか第3シーズンだけ24fps化できず本編の大半が60fpsとして処理されてしまうのだ
ソースをコマ送りすると5フレーム中3フレームはインタレ縞で残り2フレームは二重化した残像のようなものが入っている
おそらくマスターを編集中に誤ってフィールドがズレたまま60i化して放送したのではないかと予想
そこでAvisynthのSeparateFields()でフィールド分離して1フィールドずつの動きを検証した例を以下にまとめてみた
| テレシネフィールド順 | 0t | 0b | 1t | 1b | 2’ | 2b | 2t | 3b | 3t | 4′ |
|---|---|---|---|---|---|---|---|---|---|---|
| フィールド番号(Avisynth) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| ソースフレーム番号 | 0 | 1 | 2 | 3 | 4 | |||||
| 逆テレシネ後フレーム番号 | 0 | 1 | \ | 2 | 3 | \ | ||||
○フレーム及びフィールド順を表す番号はAvisynthに準拠し、いずれも0番から開始なので注意
○テレシネフィールド順の番号はテレシネ前(逆テレシネ後)に同じフレームだったものについては同じ番号を割り振っている
tはトップ bはボトムフィールドを示している
○フィールド番号はAvisynthから見たフィールドの並び順
○逆テレシネ後フレーム番号は逆テレシネでのインタレ解除+フレーム間引き後のフレーム番号を記述
2’は恐らく1tと2tが二重化されて残像になったフィールドでこのフィールドは全く使えないので破棄
4’も同上(3tと4tの二重化)
○ソースの時点で縞と判断できるのはソースフレームで言うと2,3,4番の3フレーム
○表のフィールドやフレームの順番はあくまで一例で同一ソースでも途中で狂うこともあり厄介
表の通りトップとボトムをSelectEvery()及びWeave()でフィールド指定、結合し出来上がったプログレッシブフレームは
元々5フレームだったものが4フレームに間引かれるので結果24fps化したのと同じになる
表の例だと
Trim(0,9797).SeparateFields().SelectEvery(10, 0, 1, 2, 3, 6, 5, 8, 7).Weave()
2’を破棄した時点でボトムファーストになっているのだけどフレーム途中でフィールド順が変わるのはまずい
なのでコマンド記述例ではAvisynthのフィールド番号「4」と「9」を飛ばして5番以降はトップファーストとなるよう記述
ただSelectEvery(10, 0, 1, 2, 3, 6, 5, 8, 7)とSelectEvery(10, 0, 1, 2, 3, 5, 6, 7, 8)で違いがあまりわからなかった
ちなみにこの方法でも完璧ではなく恐らく本土放映時にCMが入っていたであろう暗転箇所の前と後で
またフィールド順が狂うので縞検出ツールなどで検出されたらまたSeparateFields()で検証し直す必要あり
結果的には3度ほどフィールド順の変更部分があったのですべての箇所をフィールド指定で逆テレシネするには
Trim(2118,80486) #aviutl用
c1 = Trim(0,9797).SeparateFields().SelectEvery(10, 0, 1, 2, 3, 6, 5, 8, 7).Weave()
c2 = Trim(9798,25438).SeparateFields().SelectEvery(10, 2, 1, 4, 3, 6, 7, 8, 9).Weave()
c3 = Trim(25439,76900).SeparateFields().SelectEvery(10, 0, 1, 4, 3, 6, 5, 8, 9).Weave()
c4 = Trim(76901,78368).TIVTC24P2() #ED
c1 + c2 + c3 + c4
注意点として最初のTrimでCMカット
c1~c4は指定したフレーム箇所にフィルターを適用するユーザー関数
c1~c4は最終的に24fpsとなるのでフィールド順が狂って縞が出る部分のフレームをTrimに指定するときは
30fpsの時とフレーム数が変わってくるのでフレームではなく時間をメモしておくと良い
※例:c1でフィールド順が狂い縞が出るフレームをc2のTrim開始箇所に指定→フレーム位置が狂うのでNG
c1~c4の最初のTrimは30fpsでのTrimフレームとなる
c4のエンディング箇所も色々とおかしいけどもう適当に自動24fpsで妥協
これで一応インタレ解除と言うか逆テレシネによる24fps化はできたのだけど画質面については
やはりフィールドのズレとYV12サンプリングの弊害で色ノイズのような物が出てしまっている
細かい点ではマクロブロック単位でのコーミングノイズのようなものが発生するので
インタレ縞検出ツールなどで誤爆しやすくなる
30pソースを60i化した場合にも起きることはあるのでこの辺はもう目をつぶるしかないなぁ






コメントを残す