YLog

Cutout Assistant: ベクトルアートのアンチエイリアリング解除を支援するツール

ラスタライズされたベクトルアートは、背景から切り出したり、特定の領域の色を変えたりする加工を綺麗に行うのが意外と難しいものです。 この理由は、アンチエイリアシングにより、異なる色の隣り合った領域間に中間色が生成されてしまう為です。 グラデーションの存在も邪魔になります。 解決法の一つはアンチエイリアシングを解除をすることで、その方法の一つは減色を行うことですが、あまり良い結果にはなりません(下図)。

アンチエイリアシングにより上部のエッジが数段階の色で表現されてしまっています。 この原因は、ある箇所の色が離れた箇所の中間色を近似するのに用いられてしまうことです。 そこで、隣接した領域の色のみを用いることにより、この現象を起こりにくくした減色ツールを作ってみました

ソースコードはGitHubに上げてあります。 プルリクエスト大歓迎です。

使い方

  1. キャンバスに画像ファイルをドラッグします。右側にはその時点の出力画像、左側にはそれと入力画像の差分が表示されます。
  2. 画像上の点をクリックすると、そのピクセルの色に近い隣接した部分が同じ色で塗りつぶされます。
  3. 右クリックか、あるいはスクリーンショットを撮るなどして保存して下さい。

ワークフロー

Cutout Assistantのアルゴリズムが領域の連続性をうまく検出するためには、最も細い特徴が少なくとも2, 3ピクセル程度の太さになるよう、入力画像を拡大するのが効果的なようです。 通常の拡大アルゴリズムでは輪郭がぼやけてしまう為、waifu2x等の超解像アルゴリズムを用います。

入力画像の質によっては”ごみ”が入るため、境界周辺に現れる変な色を取り除くクリーンアップ行程が必要になります。 メジアンフィルタ等で除去できそうなものですが意外と効かないようです。 ワンドツール+ブラシ等で取り除きます。

処理後の画像はアンチエイリアシングされていない状態になります。アンチエイリアシングされていたほうが良い場合は、最後にOLM Smoothやダウンサンプリングなどを適用するとよいでしょう。