2012/04/30

logoGuilloの動作精度を上げる為の注意点

一部FAQと重複する内容もありますが、logoGuilloの動作精度の向上に関係する事を書いておきます。

ロゴの検出精度を向上させる

ロゴの検出精度を向上させる事は全体的な精度の底上げに繋がります。

[ロゴデータを作成する際の注意事項]

ロゴデータの出来は重要です。目安としてはロゴが綺麗に消せる程度の精度が必要となります。

・MPEG-2 VIDEO VFAPI Plug-In で余計な処理が行われない設定にします。
・AviUtlでのリサイズを無効にします。
・AviUtlでのフィルタを無効にします。
・AviUtlでのインターレース解除を無効にします。
・ソースにはアニメ等、単色ベタが多い物を使用します。
・ブロックノイズの多いソースはロゴの品質低下の原因となります。
・ロゴの含まれないシーンが紛れ込まないように削除しておきます。
・ロゴ解析の閾値は低めの値にしておきます。(16等、サンプル数が少なくなりすぎない程度に設定)
・ロゴ解析の選択範囲はロゴのエッジから3~4ピクセル程度にします。


[検出パラメータ調整モードでの注意事項]

検出パラメータの調整作業ではそれほど注意する事はありません。

・エンドカードや提供画面、前後の番組の一部などでロゴが表示される場合に指定し忘れないように注意する。
・取りこぼしの発生しやすい難易度の高い動画(高輝度シーン、動きの激しいシーンなどが含まれる)を使用します。
・ある程度の尺(30分以上)がある動画を使用する。
・どうしても上手く調整できない場合は違う動画を使用する。

補助機能を使用する

補助機能を使用する事でロゴが検出困難な厳しいソースでの精度を向上させます。
CMカットの信頼性:(字幕+DTC) > (字幕のみ) > (DTCのみ) > (全無効)
また、補助機能の字幕補助とDTCは共に常に安全側に動作します。

[字幕データの使用](v2.05で実装済、デフォルトで有効)

ロゴが検出困難なソースの代表格は高輝度でロゴが見えない局かつ高輝度テロップが表示される番組ですが、そういった番組は字幕が存在する事が多いです。
条件の悪いソースでは、詳細な動画の解析が必要となるので時間が掛かります。そういった番組に字幕補助を利用すると精度の向上に加え最大で50%近く高速化する事があります。

字幕補助を使用するには、Caption2Ass_mod1等で字幕データ(*.srt)を抽出して動画と一緒に置くだけです。

例:
CX.m2v
CX.srt


*字幕補助機能の詳細設定 (v2.06β2で実装済)

(-srtMrg double)[デフォルト:0.4 sec] 字幕と映像のタイミング誤差を吸収する為のマージンです。デフォルトでは若干大きめの値が設定されています。
(-srtGap double)[デフォルト:15.0 sec]字幕同士の間隔が指定値以下の場合連続と見なします。(設定したい値) + (srtMrg x 2) の値を指定して下さい。

字幕範囲外が欠落する可能性も未だありますが、テロップが出るような番組では字幕のないシーンは対して重要ではないのでそれほど問題にはならないと思います。

[Dynamic Threshold Control を使用する](v2.06β2で実装済、デフォルトで有効)

Dynamic Threshold Control (DTC)は本編の大幅な欠落を防ぐ機能です。

ロゴが認識できないシーンが長時間連続すると本編の一部が欠落する事がありますが、その場合は本編の割合が減少します。
通常は8割程度は本編の筈なので、本編が7割以下しか検出出来なかった場合にはDTCが何かしら検出漏れがあると判断してロゴ検出閾値を自動で下げ、ロゴ検出感度を増感します。

DTCはデフォルトで有効ですが、汎用性を確保する為に若干閾値が低めに設定されています。固定尺の番組では適切な値を設定しておくと効果的です。

-dtcThd double)DTCが使用される本編の割合の下限値を指定(デフォルト値:0.70)
-dtcThdAbs int)DTCが使用される閾値を秒で指定(内部で割合に自動で変換される)

*30分枠のアニメ等の尺がしっかり決まった番組ではデフォルトの0.70ではなく、0.75以上を指定するか、30~40秒程度短めの秒数を指定すると良いと思います。CMカット結果概要に有効フレームの割合と総時間が出力されるので参考にして下さい。

その他

[カットマージンを正しく指定する]

検出パラメータの調整を行う際に、シーンチェンジ検出の結果に基づき自動的にカットマージンが決定されます。このカットマージンが間違っている場合、手動でカットマージンを指定すると精度の向上に繋がります。

ロゴが出るまで6フレーム、ロゴが消えてからCMに入るまで30フレームの場合、
"-cutMrgIn 4 -cutMrgOut 28"を引数に追加して下さい。
*2フレーム引いているのはシーンチェンジ検出による補正が本編側へは1フレームしか行われない為です。但し、(n>=0)として下さい。
*検出パラメータファイル(*.param)をメモ帳で開き直接書き換えると引数で指定する必要がありません。(推奨)
*シーンチェンジ検出は普通は使用した方が良いですが、シーンチェンジ検出を使用しない場合はそのままのフレーム数を指定して下さい。