paper_readings icon indicating copy to clipboard operation
paper_readings copied to clipboard

Vectorizing Cartoon Animations

Open xchiex17 opened this issue 7 years ago • 0 comments

ラスタのアニメの画像データをベクタにする

論文本体・著者

著者

  • Song-Hai Zhang (Tsinghua University, Beijing)
  • Tao Chen (Tsinghua University, Beijing)
  • Yi-Fei Zhang (Tsinghua University, Beijing)
  • Shi-Min Hu (Tsinghua University, Beijing)
  • Ralph R. Martin (Cardiff University, Cardif)

論文情報

  • http://ieeexplore.ieee.org/document/4745633/
  • http://cg.cs.tsinghua.edu.cn/papers/tr080701.pdf
  • IEEE Transactions on Visualization and Computer Graphics 2009

解きたい問題

  • 論文 Figure.1 参照
  • 左列のラスタ画像から右列のようなベクタデータを作る

新規性

  • 装飾線と輪郭線、どちらも取りこぼしのない線検出手法
  • 手描きアニメだと頻出する「閉じられていない線」も含む絵からセグメンテーション
  • 多すぎないセグメンテーション
  • 前景背景分離を含むベクタ化

実装

アルゴリズム

※論文 Figure.3 参照

  1. 輪郭線を検出し、セグメンテーションのためのマスクを作成
  2. 輪郭線情報に基づきセグメンテーション
  3. セグメンテーション結果のフレーム間コヒレンシを考慮し、前景背景分離
  4. ベクタ化

segmentation mask の作成

  • セグメンテーションのためのマスクを作るために、輪郭線を検出する。

  • 普通の輪郭線検出とは異なり、「decorative lines」と呼ばれる線と普通の輪郭線を分けて、双方を検出する。

    • キャニーフィルタを用いた輪郭線検出だと、太い輪郭線などは2本に分けて検出されるため、1本の線として扱われるようにしたdecorative linesを検出する
    • decorative linesの検出方法
      • ガウシアンの二次導関数を元に、line pointsと呼ばれる1本として扱いたい線の中心上の点を見つける。
      • line pointsはorientationの値を持っているのでそれらの値が一致する点を出来るだけ連結する。
      • 線の太さはなだらかに変化すること、外れ値は除去すること、10pix以上の太さにならないという制約条件のもと、キャニーで検出された結果と共に線および端点を決定する。
  • trapped-ball region segmentationと呼ばれる手法を元に閉じていない線で描かれていても相応しく領域わけを行う手法を用いる。

    • trapped-ball region segmentation
    • trapped-ball filling
      • 最初に領域を大体決める
  • 論文 Figure.5参照

  • 塗り潰しの(b)から(a)のmaskを引いて(c)が出る⇒(c)から収縮を行うことで白いとぎれとぎれの線が繋がって(d)⇒(d)を膨張して(e)⇒マスクを重ねて(f)

    • color modeling
      • Ardecoの手法[1]に基づいて、 image で表される二次のHSVカラースペースモデルで各領域の色を表現。
    • region growing
      • 2つの条件を元にfillされていない領域もfillする
        1. 輪郭線画素は領域に加えない。
        2. 領域に追加されたピクセルは、人間の知覚の限界内で、領域のカラーモデルによって与えられた予測と色が一致するか確認する。
    • リコンストラクションエラーが小さい順に並べられ、出来るだけ領域が大きくとれるように繰り返す。
    • 初期半径は端点から任意のピクセルの最大距離にすべきだけど、経験的に8pixから始めた。
    • 小さすぎるよう領域は取り除きたいので0~200pixの範囲でユーザが選択した部分はもっとも色モデル的に類似した隣接領域とマージする。
  • 論文 Figure.4 参照

  • (d)のMean shiftは領域を過剰に分けているが、提案手法(c)では、出来るだけ大きく領域が輪郭線情報に基づき分けらている。

前景背景分離を含むベクタ化

  • 背景

    • 結果にちらつきのない良いベクタグラフィックス群の出力を得るために、特に背景に注意を払う
    • 前景領域が画像全体に比べて大き過ぎず、背景動きが平行移動およびスケールを含むことを前提とし、背景だけを抽出し、前景で遮られた部分を埋める。
    1. フレーム間で動かないピクセルを見つける - 色差を区別できる視覚能力の限界となる閾値を20単位で設定し、その閾値を元に出される「背景だと思われる確率」が十分に大きい場合、動かないピクセルとする。
    2. 前景によって遮られた背景を復元する - 前のフレームのセグメンテーション結果を元に、属するregionを決定し、遮られている部分を埋める。 ※論文 Figure.6 参照
  • 前景

    • 前景は背景と異なり動きを含むが、隣接するフレーム間での動きは小さいので、追跡が難しい小領域も隣接の大領域から推測する。
    • グラフカットを使って動きに応じてピクセルをグル―プ化する過去手法[2]を用い、最終的なグループ化とオクルージョンを決定する。
  • ベクタ化

  • 論文 Figure.7 参照

  • 3次ベジエ曲線をつかって曲線を表現し、2つ以上の領域が合致する点(緑点)または局所的な最大曲率を有する境界点(赤点)である端点で切断する

  • 4〜20ピクセルを許容誤差とし、品質とファイルサイズのトレードオフ。

実験・議論

Results

定性評価

  • 論文 Figure.9参照

  • 左がVectorMagic、真ん中が提案手法、右がAdobe Illustrator Live Trace。

  • 輪郭線検出も一番妥当で、ベクタ化結果も領域境界のアーティファクトもなく、綺麗。

  • 論文 Figure.10(a)参照

  • 前景背景分離が出来ているので、左画像内、左列と右列のように各画像で前景背景分離できる。右画像から、この結果から2枚の合成も可能であることが確認出来る。

その他の結果は、論文を開いて実際に拡大して、自分の目で元のラスタ画像とベクタ結果を比較した方がいい。

定量評価

640×480の入力では、セグメンテーションは通常フレームあたり2〜3秒、バックグラウンドとフォアグラウンドの抽出には4〜8秒、ベクトル化には1秒未満がかかる。

image
論文 Table.1 より
元データよりも圧縮出来る。
  • |論文 Figure.13参照
  • 左が24kB、右が9kB。所望のビットレートでのベクトル化が可能。結果品質も妥当に見える。

Limitation & Future work

  • |論文 Figure.12参照

  • 水彩画のような画風や、明るい光効果を伴う詳細な漫画クリップ、複雑なテクスチャを含む漫画クリップは、適していない。

  • これらはセグメンテーションが難しい。

  • 背景画像をベクトル化すると、多くの小さな領域と大きなファイルサイズになる。2つの解決策を提示。

    • 1つの可能な対応は、細かいディテールパラメータに対してより大きな値を使用するように領域セグメンテーションプロセスを調整する。
    • もう1つの解決策は、単に背景をビットマップとして保存する。

読んだ中での不明点などの感想

関連論文

この研究を用いて、漫画の自動着色をしている研究 #29

xchiex17 avatar Jan 30 '18 09:01 xchiex17