0.99a以降で修正されたようです。以下は0.99での話です。(2008.2.25)
aviutlとを使っていると色ゴーストに遭うことがあるらしい。プレビュー画面(RGB)で見ると下の感じ。
@元のRGB画像(x8に拡大) |
Aいろいろやってaviutlでのプレビュー時の画像 |
もう明らかに変になっている。 まあオーバーレイ表示(YUY2で表示)だと問題は見えないのだが。
ここではこの原因と影響、対策について検討する。
・2004年2月15日
BhuffyuvがRGB->YUY2にしたものを、huffyuvがYUY2->RGBに戻したもの。 | AhuffyuvがRGB->YUY2にしたものを、aviutlが読み込んで->内部YUV->RGBにしたもの。 | C4:4:4->4:2:2フィルタをかけたもの(YUY2->内部YUV->YUY2化フィルタ->RGB) 軽減はされたが直ってない... |
Dちなみに4:2:2->4:4:4補間。
huffyuvがYUY2->RGBに戻したもの(B)にそっくり。
2.RGBデータを読んだ場合
@huffyuvがRGBのまま保存したもの。 | Eそれをaviutlが読み込んでRGB->内部YUV->RGBにしたもの。(全く同じ?) | F4:4:4->4:2:2フィルタをかけたもの(YUY2->内部YUV->YUY2化フィルタ->RGB) ゴミが出る。Cと同じか? |
Gちなみに4:2:2->4:4:4補間。huffyuvのRGB->YUY2変換(B)に似ている。
怪しい影が見え隠れている。
3.オーバレイ表示
(画面は示せないが)
オーバレイ表示(YUY2表示)にすると、上のどの状態でもほとんど同じで、問題ないように見える。
HRGB画像のY(輝度データ) (@のY) |
IRGB画像のCbCr(色データ) (@のCbCr) |
J波形表示 使っているのは緑線の辺り。 |
Khuffyuvに保存されているYUY2データの予想(実はFのCbCr)
LhuffyuvでRGB->YUV->RGBにしたもの (BのCbCr) Kの境界をぼかしたもののようである。 全ての色データが変わり、keep Originではない。 |
Mavutl読み込み後 (AのCbCr) 左ピクセルはオリジナル、右はKの色を上下左右で補間なのか? やっぱり変か? |
Naviutlで読み込んで、4:2:2->4:4:4補正したもの おそらく左ピクセルを元に(右ピクセルを捨てて)補間している。keep Originではない。 |
OMS-YUV無圧縮に保存し、TMPGEncで開いたもの。 (プレビュー画面を8倍に拡大) Fと同じようである |
考察
huffyuv内部では、RGBにYUY2フィルタをかけたもの(F)と同じような状態で持っていると思われる。これをYUY2->RGBのときに左ピクセル、右ピクセル共に補間して出してくる。一方aviutlはYUY2データをもらったときに左はオリジナル、右は周り4方の値から補間して出しているが、この距離は隣だけではないようだ。この差によってRGBでの見え方に差ができているようだ。
ついでに言えば元の絵がキャプチャものではなくCGであることも影響している。こんなに急で大きな色変化は、NTSCのキャプチャでは起こらない。
結論
4:2:2から4:4:4への補間のやり方が異なるのは、huffyuvとaviutlのポリシーの違いなので仕方ない。この色ゴーストの場合にはaviutlのやり方が裏目に出ているのである。aviutlからYUY2出力した時には左ピクセルの値が採用される(Left Origin)ため問題は出ない。aviutlからのRGB出力の時には、最終的にMPEG2/DivXなんかにするときに結局は左ピクセルのみ(あるいは補間されて)色情報となるので問題は見えにくくなる。Left originならば問題ないが、補間されるようだと問題が出るかもしれない。そして何より上下の色データがもれていているというのは、aviutlで色補正などを行うときに問題となってくる。そもそもYUY2は左右方向のみに間引いているので、補間も左右方向のみで行わないといけないはずだ。
またaviutlのこの色情報の補間の問題は、ソースのコーデックとは関係ない。MY-YUVでも何でも、YUY2で読んで内部YUVに展開するときに必ず起きている。防ぐにはRGBで読むか、4:2:2->4:4:4補正するか、YUY2フィルタで元に戻すかである。4:2:2->4:4:4補正では元データを壊すので、RGBでの見かけは良くなってもYUY2出力時の状態はわからない。
YUY2データを読み込んだときには、まずはYUY2フィルタを入れてから編集することを勧める。RGBデータのときにも最後にYUY2フィルタを入れると最終的なもの(MPEG2なりDivXなり)のイメージに近くなると思われる。このときにFのように微妙におかしくなっているのは、YUY2の(色データを共有するということの)問題点を可視化できているということである。
RGBで見て操作するのならば、本当は編集も2ピクセル共有で行いたい。aviutlのYUY2モードはそれを望んで作られたのだろう。
aviutlは補間せずに元のまま読み込み(色データは同じまま)、補間の仕方をフィルタで変更できるようになっていれば問題はなかっただろう。(が上の通りRGBでがんばって調整したところで意味がない)
aviutl 0.99の、補間して取り込むという仕様は私には納得できない。これはバグと呼ばれても仕方ないだろう。
余談
ところでaviutlではツールウインドウを出すとプラグインフィルタがずらずら並ぶ。フィルタがかかる順に並んで欲しいと思うのは私だけだろうか?
続き
こっちに続きの話がある。まあやっぱりバグありだってことなのだが。
http://www10.plala.or.jp/p205tb16/colorghost.html
坂井瑞穂