アイドルマスター ダンス自動抜きツール「nukIM@S」公開
※使い方を一通り書き終えるまで随時更新
コメントを頂いたループの件、対処しました。バージョン0.1.1です。naocoさんのログ、役に立ちました。ありがとうございます。
ファイルが読めない件もコメント頂いたとおり、ファイル名やパスに日本語を使っているとダメみたいです。
必要なもの
- Java5 以上
- QuickTime 7.4 以上
- 高画質キャプチャ環境
- できるだけ速いPCと大量のHDD
JavaもQuickTimeもこれから入れる場合は、Java -> QuickTime の順にインストールしてください。逆だと後でひと手間増えます。JavaもQuickTimeもすでに入っているけどどっちを先に入れたかなんてわかんねー、と言う場合はとりあえずそのまままでよいです。nukIM@Sを起動した時に次のようなメッセージが表示されたら、指示に従って QTJava.zip をコピーしてください。
QuickTime7.4以上が必要です。 QuickTime7.4以上をインストール済みにも関わらずこのメッセージが表示される場合は、 QuickTimeを再インストールするか以下の操作を行ってみてください。 1. QTJava.zip を探す。通常は次の場所にあります。 C:\Program Files\QuickTime\QTSystem 2. QTJava.zip を次の場所にコピーする。 C:\Program Files\Java\jre1.6.0_06\lib\ext
Javaをアップデートすると再びこのメッセージが表示されるようになるので、その時はまたコピーしてください。
キャプチャ環境は、できるだけ高画質で撮れるものを用意してください。複数ステージの動画の共通部分を抽出するため、高画質かつキャプチャ時の設定が揃っている方が綺麗に抜けます。私は Intensity Pro を使ってふぬああ/huffyuvで 1280x720/60p でキャプチャ。キャプチャ後に無圧縮に展開したものを使用しています(無圧縮にしている理由は後述)。
最大で6ステージ分の動画を同時に処理するため大量のディスクアクセスが発生し、また計算量も膨大になります。そのため、できるだけ速いHDDと速いCPUがあったほうが良いです。特にHDDの速さ重要。また、元動画用のHDDと出力用のHDDを分けた方が若干速くなるかもしれません。以下、私の環境です。この環境で1曲全部を、元動画60fps/出力30fpsで処理すると1時間半くらいかかります。
- 元動画用HDD: HDP725050GLA360x2 (ICH9R RAID0)
- 出力用HDD: HDP725050GLA360x1
- CPU: Core 2 Duo E8400
元動画のコーデック
QuickTimeを使用しているので、QuickTimeでも読めるコーデックにしておく必要があります。そうすると実質的には無圧縮くらいしか選択肢が無くなってしまうと思います。Intensity/Intensity Pro に付属のコーデックはQuickTimeでも使えるので、無圧縮よりは若干小さくなります。
元動画の読み込み
「元動画」タブをアクティブにするとウインドウ右下に「ここにファイルをドラッグ&ドロップできます」と書かれているので、その辺りにエクスプローラから元動画のファイルをドロップしてください。無事に読み込めた場合は、元動画タブ内に各元動画のボックスが表示されます。
「切り抜き元」ドロップダウンメニューから、切り抜き元として使用する動画を選んでください。最終的に出力される画像は、ここで選んだ動画から切り出されます。
「ライブハウスまたは市民ホール」ドロップダウンメニューから、ライブハウスまたは市民ホールの動画を選択してください。これは、切り抜き設定の「漏れ修復」に使用します。必ずしもライブハウスまたは市民ホールを選ばなければならないわけではありませんが、ライブハウスまたは市民ホールを選ぶと漏れ修復の結果が良好な事が多いです。未選択の場合は「切り抜き元」と同じ動画が使用されます。
開始フレーム合わせ
開始フレームをきっちり合わせないと、まともに抜けません。1フレームでもズレてはだめです。開始フレーム合わせを簡単に行う手順は他にもあると思いますが、以下は私が行っている手順です。
仮合わせ
画面中央のスライダーが左端にある状態で(=右端のフィールドの値が1の状態で)、「元動画」タブ内の各ボックスにある「開始」フィールドの値を調節して、「NOW LOADING…」の表示が消えるフレームを探します。
左が「NOW LOADING…」の表示があるフレーム、右が消えたフレームです。この付近に全てのステージを仮合わせをしておくと数フレーム以内のズレになるので、本合わせがしやすくなります。
本合わせ
画面中央のスライダーを適当な位置に進めます。曲が始まってダンスの動きがある位置ならどこでも良いです。CTRL+1 〜 CTRL+6(Mac版では Cmd+1 〜 Cmd+6)をタイプすると、元動画1〜6に表示が切り替わるので、この表示を順番に切り替えながら「開始」フィールドの値を調節して、全元動画がぴったり合うようにします。
念のため、中盤や後半でもフレームがズレてないか確認しましょう。もしズレてるステージがあったら、それだけキャプチャしなおしてください。
切り抜き設定
まずは概要ですが
シード → ゲイン1 → 粒子除去 → ゲイン2 → 漏れ修復 → ホール修復 → ホール識別 → エッジ拡張
の順に(=タブでフォーカスが移動する順番に)調節するとだいたいうまく行くように作ったつもりです。なので、よくわからなくなったときはリセットしてシードからやり直した方が早いでしょう。
シード
とりあえず種を蒔きます。あまり大きくしすぎないようにしましょう。細かな調節をしてもほとんど意味がなく、大抵は25くらいでOKです。
ゲイン1
どんな種も蒔けば芽だつんです。シードで蒔いた種を育てます。これも細かな調節はあまり意味がありません。大抵は50〜100くらいでOKです。
粒子除去
どんな芽でも花になるんです…というわけにはいきません。ごめんねやよいっち。余計なところに生えてきた芽を摘みます。まれに、巨大な芽が生えてくる事があるので、その時はうまく調節してください。大きくしすぎなければ大抵は適当でかまいません。
ゲイン2
粒子除去で余計な芽が消えたので、思い切って大きくすることができます。といっても私がテストした範囲では400を超えると、あちこち漏れだしてくることが多かったです。エッジまでうまく広がりきらない箇所がある時は、少し漏れるくらいまで大きくしておいて、次の「漏れ修復」で綺麗にします。
漏れ修復
背景色と同系統の色の領域は「漏れている」と判定して修復します。数値が小さいほど修復する面積が広がります。最適値はケースバイケースで私のテストでは500〜3000くらいまで幅がありました。「感度 強」が役に立つことは滅多にありません。感度 強では、背景色と髪の色が近い場合にすぐに髪が削れてしまいます。
ホール修復
ランダム瞬きや紙吹雪などで出来たキャラ内部の穴を埋めます。数値は、埋める穴の面積の上限です。大きくしすぎると、首や脇の周りにしばしばできる背景から孤立した空間まで埋まってしまいますが、次の「ホール識別」との組み合わせで、そこそこうまい具合にできます。
ホール識別
穴が、埋めるべき穴かそうでない穴かを識別するための閾値です。大きくしすぎるとランダム瞬きなどが埋まらなくなります。小さすぎると、首や脇の周りまで埋まってしまいます。
エッジ拡張
ゲイン2を大きくしても一番外側の輪郭線まではなかなか広がらないようなので、1ピクセルだけ拡張するといい感じ。
仮出力
一通り設定したら、適当にフレームを移動して確認しましょう。でも、フレーム移動が結構重くてストレスフルだと思うので、3fpsか10fpsで仮出力して確認するのが良いです。私の環境では3fpsで10分くらいかかります。10分「も」ですね。。。
本出力
AVI形式で出力ファイルサイズが大きくなる場合、複数のファイルに分割します。これはQuickTimeのAVI出力には大きなファイル(たぶん4GBを超えるファイル)を出力するとファイルが壊れてしまうバグがあるようで、それを回避するために分割しています。また、QuickTime形式で一時ファイルに出力した後にAVIに変換しているので、少し余分に時間がかかります(余分にHDDの空きも必要です)。ですので、QuickTime形式を読める編集ソフトを使用している方は、QuickTime形式で出力する方が良いかもしれません。
というか「マスクのみ出力」にして、編集ソフトの方で合成する方がHDDに優しいし、出力時間も少し短くなるかもですね。