掲示板お問い合わせランダムジャンプ

トップスペース

2008年04月18日
SSFの動画キャプ用に「間引ける1/2縮小フィルタ」を作った
 AviUtlのフィルタ「間引ける1/2縮小」というのを作ったのでそれに関する薀蓄です。

 フィルタはいつものページにアップしてあります。
 AviUtl プラグイン フィルタ by うえぽん

 このフィルタはセガサターンのエミュレータ「SSF」の動画を編集するために作りました。セガサターンの画面モードは320x224~704x480と幅広くあります。704x224なんてパターンもあったりします。しかしSSFでは画面モードが320x224の時でも二倍の640x448で表示していたりします(遊ぶだけならその方が良いのですが)。しかし、動画にする場合は本来の320x224の方が容量の節約になります。
 そこでこのフィルタを作ってみました。まあ、既存のフィルタでも同じことができますが。

●SSFの画面は縦方向に補間されている
 下の画像はSSFの同じ場面をキャプしたものです。左はPrintScreenでキャプ、右はSSFのスナップショットでキャプしたものです。
SSFより

 よく見ると左側の方が少しぼやけています。どうやら縦方向にだけ補間されているようです。おそらくWindowsのAPIを使って縦に引き伸ばしているのでしょう。ディスプレイドライバーが親切に補間してくれてます。Bilinear FilteringをOFFにしても同じです。
 これをそのまま縮小してしまうとさらにぼやけた映像になります。だからと言ってラインを間引いて縮小しても右側と同じになりません。
 もしくっきりした映像が欲しいなら、スキャンラインをONにしてキャプし、当フィルタで加工すると良いと思います。

●インタレース表示
 「セガサターンマガジン」にこの事が書いてありましたが、バーチャファイター2のフレームは下のようにブレブレしてます。テレビのNTSC方式が奇数ラインと偶数ラインを交互に表示しているのを利用して、解像度を上げつつ処理を半分にするためだったと思います。
VF2スナップ1

 この動画をキャプするには、間引いて1/2に縮小すればいいようです。下の画像が単純に間引いたものです。
VF2スナップ2

 しかしテロップのWのあたりなどがギザギザしています。これはテロップが704x448なのに単純に間引いてしまったからです。そこで横方向だけはブレンドして縮小することにします。
VF2スナップ3

 これでだいぶマシになりました。よく見るとギザギザしている部分もありますが、動画にしてしまえばあまり気にならないかと思います。

●ベンチマーク
 「間引ける1/2縮小」には簡単なベンチマーク機能がついてます。マルチスレッドの効果があるのか調べるために付けてみました。
 私が使っている環境はAthlon X2 4200+(AM2)、2.2GHzを約2.4GHzにオーバークロック、メモリはDDR2で約800MHz動作です。これで1280x720の画像を縮小した際の結果は以下の通りです。
-マルチスレッドシングルスレッド上昇率
間引き1.23 sec1.44 sec14.6%
横ブレンド1.24 sec1.65 sec24.8%
縦ブレンド1.96 sec2.24 sec12.5%
4ドットブレンド1.96 sec2.40 sec18.3%
 興味深いのは、縦ブレンドと横ブレンドは同じ計算量なのに横ブレンドの方が処理時間が短いことです。おそらく横ドット同士の方が連続したメモリなのでCPUの内部キャッシュにヒットしやすいためだと思います。メモリ転送量も減っているはずです。
 マルチスレッドで12%~25%ぐらい速度アップしてます。Athlon X2のL2キャッシュは非共有なのでマルチスレッドにすると都合L2キャッシュが2倍になるため、それによる速度アップがほとんどではと考えています。つまり計算速度が倍になったことによる速度アップはそれほど無いと推測しています。L2キャッシュが大きいCPUだとマルチスレッドによる速度アップ率は少ないのではないでしょうか。
 あとマルチスレッドにしても処理時間が同じになってしまうのは、もしかしたらメモリ転送量の壁があるのかもしれません。

●マイナス時の四捨五入
 四捨五入は0.5して小数点以下切捨てという処理が一般的です。しかし-2.5のようにマイナス時が厄介です。これは-2.0にしても-3.0でも良いようですが、YUVの場合、-2.0の方に丸めてしまうと全体的に色が偏ってしまいます。あまり気にならないレベルのことですが、AviUtlの有名なフィルタの中にはそれをやってしまっているものがあるようです。
 当フィルタではマイナスの値をとらない輝度情報は四捨五入、色情報はマイナスもあるので単純に切り捨てるようにしています。
[ 投稿者:うえぽん at 04:09 | AviUtlや画像処理 | コメント(0) | トラックバック(0) ]

この記事へのコメント

この記事へのトラックバック

この記事へのトラックバックURL
http://shinshu.fm/MHz/14.30/a13493/0000235253.trackback

この記事の固定URL
http://shinshu.fm/MHz/14.30/archives/0000235253.html

記事へのコメント
 
簡単演算認証: 7 x 1 + 5 =
計算の答えを半角英数字で入力して下さい。
名前: [必須]
URL/Email:
タイトル:
コメント:
※記事・コメントなどの削除要請はこちら