今期人気の「魔法少女まどか☆マギカ」ですが、 ニコニコ動画(ニコニコチャンネル)アニメワンで配信している動画の色変換がどうやら間違っているようです。

 まずはニコニコチャンネルのキャプ画像。何か色が混ざってます。

まどマギ5話_ニコニコ


 次にアニメワンのキャプ画像。これも何か色が混ざってます。

まどマギ5話_アニメワン


 上の2つはいずれも第5話のオープニング部分です。(注:話数によって色が混ざるフレームが変わります)
 ニコニコとアニメワンの同じシーンで同じ色混ざり現象があります。

 この混ざっている色ですが、どうやら次のフレーム(上の例だと下のシーン)が混ざっているようです。

 
次のコマ






◆考えられる原因
 おそらく、元の素材がインターレースのYV12で、YUY2へ変換するとき間違ってプログレッシブ(ノンインターレース)のYV12のとして変換してしまっているのだと思います。

◆大雑把な説明
 まず用語の解説をすると、インターレースというのは1フレームを表示するのに奇数ラインと偶数ラインの2回の走査で行う縞々のあれです。ブラウン管向けの旧世紀の方式っぽいですが、地上波デジタルの時代になってもこの方式が使われてます。

 次にYUY2とYV12ですが、ざっくりと説明すると、YUY2は輝度情報が2つに対して色情報を1つ格納する形式です。
 YV12は輝度情報2x2に色情報が1つある形式で、インターレースの場合、2x2はフレームではなくフィールド(奇数ラインや偶数ライン)ごとに取ります。
 こんな感じです。
[YUY2]
YY C

[YV12(プログレッシブ)]
YY C
YY

[YV12(インターレース)]
YY C
YY C
YY
YY


 さて今回の肝になるYV12からYUY2への変換ですが、乱暴に説明すると、色情報を2倍に拡大するだけです。そして問題になるのは、プログレッシブとインターレースで拡大方法が違うことです。
 下の例では上の[YV12(インターレース)]をYUY2へ変換した場合です。

[プログレッシブとしてYUY2へ変換]
YY C
YY C
YY C
YY C

[インターレースとしてYUY2へ変換]
YY C
YY C
YY C
YY C


 インターレースのYV12を間違ってプログレッシブとして変換してしまうと隣のフィールドに色が混ざってしまうことになります。

◆再現
 テレビ放送の同じシーンで再現してみます。

 まずYV12(インターレース)→YUY2を正しく変換した場合。

インタレtrueでYV12toYUY2


 これをインターレース解除するとこうなります。正しい例です。

インタレ解除_正しい例


 次にYV12(インターレース)→YUY2を間違えてYV12(プログレッシブ)→YUY2で変換をした例。

インタレfalseでYV12toYUY2


 これをインターレース解除するとこうなります。青が混ざってます。

インタレ解除_駄目な例


 冒頭のキャプ画像に近くなりました。この再現では色が薄いのでもっと何かやっているのかもしれません。

再現



◆ちなみにニコニコ動画の方は……
 ニコニコ動画の方はアスペクト比が微妙に違います。640x352なので16:8.8です。縦に微妙に潰れてます。


[追記:2021年2月]
 このブログ記事は2011年2月のものです。10年後の現在ではこういう変換の失敗は見ることはなくなりました。