Navigation Log - なびろぐ -
2007/10/03

...X680x0 spirit inside...

この日記はGNSで生成しています。
この日記の画像はOPTPiX webDesigner Ver.4で生成しています。

hauN
Go amazon.co.jp

■ご注文リストから■ [一覧]
■Amazonギフト券■ [購入]
SilverStone Milo CASE Mini-ITX 縦横対応 ハンドル付 黒 SST-ML08B-H []
SilverSton...
Amazonほしい物リスト


2007/10/03 (水)

480pと480iの区別 (AV, アニメ)

_ 480pと480iの区別。I/P変換とか2-3プルダウンとか逆プルダウンとかアップスキャンとかを勉強するとわかるようになります。というか、自分で480iと480pのテスト映像をそれぞれ作って、1080iに引き伸ばして表示させると一目瞭然。

_ とりあえず原理だけ。アニメや映画は24p(プログレッシブ24フレーム)で作られるのが一般的。対して、TVは60i(インターレース60フィールド)で表示しています。インターレースとは1画面を奇数ラインと偶数ラインの2回に分けて表示させる方式で、それぞれの回を「フィールド」と呼びます。

_ 24pの映像を60iで表示させるには、24フレームの映像を60フィールドに変換することになります。これがプルダウン。24フレームを60フィールドということは、約分すると2フレームを5フィールドで表示すればいいことになります。よって、最初の1フレームを2フィールド表示し、続いて2フレームめを3フィールド表示すれば、とりあえずつじつまが合います。この方式を、2・3をそれぞれとって「2-3プルダウン」と呼びます。*1

*1: 「2-3」とわざわざ付けるのは、それ以外のルールがあるからです。2-3-3-2とか2-4-2-2とか。

_ 文章だけじゃわかりにくいので図で説明。縦線が左から右へ動いていく映像で、上が24p、下が60i。


図1
   1               2                       3               4
┌──────┐        ┌──────┐                ┌──────┐        ┌──────┐                
│ ■    │        │  ■   │                │   ■  │        │    ■ │                
│ ■    │        │  ■   │                │   ■  │        │    ■ │                
│ ■    │        │  ■   │                │   ■  │        │    ■ │                
│ ■    │        │  ■   │                │   ■  │        │    ■ │                
│ ■    │        │  ■   │                │   ■  │        │    ■ │                
│ ■    │        │  ■   │                │   ■  │        │    ■ │                
└──────┘        └──────┘                └──────┘        └──────┘                
┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
│ ■    ││      ││  ■   ││      ││  ■   ││      ││   ■  ││      ││    ■ ││      │
│      ││ ■    ││      ││  ■   ││      ││   ■  ││      ││    ■ ││      ││    ■ │
│ ■    ││      ││  ■   ││      ││  ■   ││      ││   ■  ││      ││    ■ ││      │
│      ││ ■    ││      ││  ■   ││      ││   ■  ││      ││    ■ ││      ││    ■ │
│ ■    ││      ││  ■   ││      ││  ■   ││      ││   ■  ││      ││    ■ ││      │
│      ││ ■    ││      ││  ■   ││      ││   ■  ││      ││    ■ ││      ││    ■ │
└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
   1       2       3       4       5       6       7       8       9       10

_ 60iで送られてきた映像は、TV用ブラウン管であれば(表示特性による残像で)自動的に前フィールドが適切に合成された画に見えましたが、現在のプログレッシブ表示方式のモニタでは「I/P変換」なる合成作業が必要になります。これが、ただ前のフィールドを合成すればいいというものではありません。実際に合成してみると、以下のようになります。


図2
┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
│ ■    ││ ■    ││  ■   ││  ■   ││  ■   ││  ■   ││   ■  ││   ■  ││    ■ ││    ■ │
│ ■    ││ ■    ││ ■    ││  ■   ││  ■   ││   ■  ││   ■  ││    ■ ││    ■ ││    ■ │
│ ■    ││ ■    ││  ■   ││  ■   ││  ■   ││  ■   ││   ■  ││   ■  ││    ■ ││    ■ │
│ ■    ││ ■    ││ ■    ││  ■   ││  ■   ││   ■  ││   ■  ││    ■ ││    ■ ││    ■ │
│ ■    ││ ■    ││  ■   ││  ■   ││  ■   ││  ■   ││   ■  ││   ■  ││    ■ ││    ■ │
│ ■    ││ ■    ││ ■    ││  ■   ││  ■   ││   ■  ││   ■  ││    ■ ││    ■ ││    ■ │
└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
   1       2       3       4       5       6       7       8       9       10

_ 3・6・8フィールドは縦線ではなくギザギザになってしまっています。これをコーミング(櫛)と呼び、見苦しいノイズとなります。で、これを消すための加工を施す必要があるわけです。この作業を含めたI/P変換作業を「デインターレース」とか「インターレース解除」と呼びます。

_ もっとも簡単な方法は、「縦方向にぼかす」ことです。


図3
┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
│ ■    ││ ■    ││ ■■   ││  ■   ││  ■   ││  ■■  ││   ■  ││   ■■ ││    ■ ││    ■ │
│ ■    ││ ■    ││ ■■   ││  ■   ││  ■   ││  ■■  ││   ■  ││   ■■ ││    ■ ││    ■ │
│ ■    ││ ■    ││ ■■   ││  ■   ││  ■   ││  ■■  ││   ■  ││   ■■ ││    ■ ││    ■ │
│ ■    ││ ■    ││ ■■   ││  ■   ││  ■   ││  ■■  ││   ■  ││   ■■ ││    ■ ││    ■ │
│ ■    ││ ■    ││ ■■   ││  ■   ││  ■   ││  ■■  ││   ■  ││   ■■ ││    ■ ││    ■ │
│ ■    ││ ■    ││ ■■   ││  ■   ││  ■   ││  ■■  ││   ■  ││   ■■ ││    ■ ││    ■ │
└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘

_ ほとんど計算量は要りませんが、映像としてはイマイチです。しかも・・・


図4
┌──────┐ ┌──────┐
│      │ │      │
│      │ │      │
│■■■■■■│→│■■■■■■│
│      │→│■■■■■■│
│      │ │      │
│      │ │      │
└──────┘ └──────┘
  変換前      変換後   

_ 横線があると壊滅的です。太くなっちゃうんですね。「じゃ縦線だけ検知して処理すればいいのでは」と思うでしょうが、次のような問題が出ます。


図5
   1               2                       3               4
┌──────┐        ┌──────┐                ┌──────┐        ┌──────┐                
│  ■   │        │   ■  │                │    ■ │        │     ■│                
│  ■   │        │   ■  │                │    ■ │        │     ■│                
│ ■    │        │  ■   │                │   ■  │        │    ■ │                
│ ■    │        │  ■   │                │   ■  │        │    ■ │                
│■     │        │ ■    │                │  ■   │        │   ■  │                
│■     │        │ ■    │                │  ■   │        │   ■  │                
└──────┘        └──────┘                └──────┘        └──────┘                
┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
│  ■   ││      ││   ■  ││      ││   ■  ││      ││    ■ ││      ││     ■││      │
│      ││  ■   ││      ││   ■  ││      ││    ■ ││      ││     ■││      ││     ■│
│ ■    ││      ││  ■   ││      ││  ■   ││      ││   ■  ││      ││    ■ ││      │
│      ││ ■    ││      ││  ■   ││      ││   ■  ││      ││    ■ ││      ││    ■ │
│■     ││      ││ ■    ││      ││ ■    ││      ││  ■   ││      ││   ■  ││      │
│      ││■     ││      ││ ■    ││      ││  ■   ││      ││   ■  ││      ││   ■  │
└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
│  ■   ││  ■   ││   ■  ││   ■  ││   ■  ││   ■  ││    ■ ││    ■ ││     ■││     ■│
│  ■   ││  ■   ││  ■   ││   ■  ││   ■  ││    ■ ││    ■ ││     ■││     ■││     ■│
│ ■    ││ ■    ││  ■   ││  ■   ││  ■   ││  ■   ││   ■  ││   ■  ││    ■ ││    ■ │
│ ■    ││ ■    ││ ■    ││  ■   ││  ■   ││   ■  ││   ■  ││    ■ ││    ■ ││    ■ │
│■     ││■     ││ ■    ││ ■    ││ ■    ││ ■    ││  ■   ││  ■   ││   ■  ││   ■  │
│■     ││■     ││■     ││ ■    ││ ■    ││  ■   ││  ■   ││   ■  ││   ■  ││   ■  │
└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
│  ■   ││  ■   ││  ■■  ││   ■  ││   ■  ││   ■■ ││    ■ ││    ■■││     ■││     ■│
│  ■   ││  ■   ││  ■■  ││   ■  ││   ■  ││   ■■ ││    ■ ││    ■■││     ■││     ■│
│ ■    ││ ■    ││ ■■   ││  ■   ││  ■   ││  ■■  ││   ■  ││   ■■ ││    ■ ││    ■ │
│ ■    ││ ■    ││ ■■   ││  ■   ││  ■   ││  ■■  ││   ■  ││   ■■ ││    ■ ││    ■ │
│■     ││■     ││■■    ││ ■    ││ ■    ││ ■■   ││  ■   ││  ■■  ││   ■  ││   ■  │
│■     ││■     ││■■    ││ ■    ││ ■    ││ ■■   ││  ■   ││  ■■  ││   ■  ││   ■  │
└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
   1       2       3       4       5       6       7       8       9       10

_ 垂直に近い斜め線が右へ移動していく映像ですが、3段目の3フィールドはともかく6・8フィールドは完全に線が崩れています。そのため、実際にはたとえば4段目のような処理を施すことになります。

_ また、水平に近い斜め線が現れた場合も困ることになります。3段目のようにただ合成しただけでは線が消えてしまうので、4段目のように線を太くして処理せざるをえなくなります。


   1               2                       3               4
┌──────┐        ┌──────┐                ┌──────┐        ┌──────┐                
│      │        │      │                │      │        │    ■■│                
│      │        │      │                │    ■■│        │  ■■  │                
│      │        │    ■■│                │  ■■  │        │■■    │                
│    ■■│        │  ■■  │                │■■    │        │      │                
│  ■■  │        │■■    │                │      │        │      │                
│■■    │        │      │                │      │        │      │                
└──────┘        └──────┘                └──────┘        └──────┘                
┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
│      ││      ││      ││      ││      ││      ││      ││      ││    ■■││      │
│      ││      ││      ││      ││      ││    ■■││      ││  ■■  ││      ││  ■■  │
│      ││      ││    ■■││      ││    ■■││      ││  ■■  ││      ││■■    ││      │
│      ││    ■■││      ││  ■■  ││      ││■■    ││      ││      ││      ││      │
│  ■■  ││      ││■■    ││      ││■■    ││      ││      ││      ││      ││      │
│      ││■■    ││      ││      ││      ││      ││      ││      ││      ││      │
└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
│      ││      ││      ││      ││      ││      ││      ││      ││    ■■││    ■■│
│      ││      ││      ││      ││      ││    ■■││    ■■││  ■■  ││  ■■  ││  ■■  │
│      ││      ││    ■■││    ■■││    ■■││      ││  ■■  ││  ■■  ││■■    ││■■    │
│    ■■││    ■■││      ││  ■■  ││  ■■  ││■■■■  ││■■    ││      ││      ││      │
│  ■■  ││  ■■  ││■■■■  ││■■    ││■■    ││      ││      ││      ││      ││      │
│■■    ││■■    ││      ││      ││      ││      ││      ││      ││      ││      │
└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
│      ││      ││      ││      ││      ││      ││      ││      ││    ■■││    ■■│
│      ││      ││      ││      ││      ││    ■■││    ■■││  ■■■■││  ■■  ││  ■■  │
│      ││      ││    ■■││    ■■││    ■■││  ■■■■││  ■■  ││  ■■  ││■■    ││■■    │
│    ■■││    ■■││  ■■■■││  ■■  ││  ■■  ││■■■■  ││■■    ││■■    ││      ││      │
│  ■■  ││  ■■  ││■■■■  ││■■    ││■■    ││■■    ││      ││      ││      ││      │
│■■    ││■■    ││■■    ││      ││      ││      ││      ││      ││      ││      │
└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
   1       2       3       4       5       6       7       8       9       10

_ さて、ここでちょっと考え方を変えます。60iで送信されてきている映像が「これは元は24pだ」ということがわかりきっていれば、上のような面倒な手間を踏まなくても「この時刻ではどの2つのフィールドを合成すれば元のフレームを再現できる」というルールを作ることができます。「2-3プルダウン」というルールで作られた映像を逆解釈して元に戻すので、この作業を「逆プルダウン」と呼びます。

_ ただ、この逆プルダウンも簡単ではありません。たとえばプルダウンを行ったあとの映像をフィールド単位で編集してしまった場合、その部分で「2-3」というルールが崩れることになります。逆プルダウン処理を行う場合は、「2-3というルールが崩れた」ことを検知して、適宜補正する処理が必須になります。この検知に失敗した場合はコーミングが現れるので、こういったフレームを「逆プルダウン失敗フレーム」と呼びます。自動処理している以上、どんなにうまくやっても数分に1回くらいの失敗は避けられない場合がほとんどです。

_ さて、時代はハイビジョンです。テレビ局側、またはマスター映像を作成納品するスタジオ側で「スタンダード形式の映像をハイビジョン形式に変換」しなければならなくなります。変換というのはすなわち拡大なわけで、上のようなI/P変換の破綻やごまかし、逆プルダウンの失敗も拡大されてはっきり見えてしまうわけです。

_ さて最初の話。アニメや映画の大元のソースは大抵24p形式です。最初からこのソースを変換していれば、I/P変換の破綻も逆プルダウンの失敗も起こりようがないし、ごまかす必要もないわけです。「480iか480pかを判定する」という作業は、実は「I/P変換の破綻やごまかし、逆プルダウンの失敗を見つける」作業に他ならないわけです。

_ それはつまり、上の解説をみればわかる通り「パンする映像で不自然に線が太くなったり崩れたりぼけたりしていないか」をチェックすることで、簡単に見分けがつくわけです。*2

*2: あと大抵の場合、24pから60iのマスターを作る作業の際に、ダビングや再圧縮などの過程で画質がやや劣化します。これも見分けるヒントになります。


[Trackback/Comment]
2007/10/06 18:30:15 インターレース解除
480pと480iの区別(from なびろぐ)アニメや映画などの24fpsソースを、テレビ信号のインターレース60fpsに変換するとき、さらにそこからプログレッシブ映像に変換するときの仕組みが詳しく解説されています。AviUtlのインターレース解除機能に「自動24fps」という設.... (グチ言う三 品川支部)




メールはこちらへ...[後藤浩昭 / Hiroaki GOTO / GORRY / gorry@hauN.org]

「表紙へ戻る」
「会議室」 「最新版」 「なびろぐindex」 「GNSソースを読む」