お絵描きソフトInkscape(インクスケープ)の使い方を初級レベルから上級レベルまで広く紹介しています。
情報追加のリクエストや分かりにくい点があれば下のCONTACTフォームからどうぞ。

Inkscapeで画像トレースをやってみた

 このページでは、Inkscapeの画像トレース機能のパラメータをいろいろ変えてみて、トレース結果にどのような違いが出るのかを試した結果を紹介します。個々のパラメータの意味については「画像トレースのパラメータと手順」のほうにまとめています。

  (参考:画像トレースのパラメータと手順

(2022.11.09更新)

「単一スキャン」で「明るさの境界」

 試した画像は次のものです。

 この画像を単一スキャン明るさの境界を変化させながらトレースしてみました。

 トレース結果は次のようになります。トレース対象の画像は右にいくほど明るい色なので、明るさの境界を大きくするほど、A→Eに向かって、より広い幅の黒い領域がトレースの描線として抽出されています。



 

「単一スキャン」で「エッジ検出」

 試した画像は次のものです。

 この画像を単一スキャンエラーしきい値を小さくしながらトレースしてみました。

 トレース結果は次のようになります。真ん中の赤と緑の境界がエッジとして検出され、さらに、エラーしきい値に応じた幅の黒い領域がトレースの描線として抽出されます。

 エラーしきい値が小さいほうが、エッジの右側の部分のうち、より幅広い領域をトレースの描線として抽出しているようです。エラーしきい値が小さいと、エッジから右側のなだらかなすそ野(つまり小さいしきい値を超えて変化している部分)まで含めて描線として抽出している(つまり太目の描線になる)ということなのだと理解しています。ちなみに、画像の右半分の緑の部分の周囲はほぼトレースできてないようですが、色がうすい(コントラストが小さい)のでそもそもエッジとして抽出されていないのだと思います。



「単一スキャン」で「色の量子化」

 試した画像は次のものです。

 この画像を単一スキャンの数を大きくしながらトレースしてみました。トレース結果は次のようになります。の数を増やすと画像をより細かく白黒に分割するようになっていると思います。



「マルチカラー」で「明るさのステップ」

 試した画像は次のものです。

 この画像をマルチカラースキャン数を大きくしながらトレースしてみました。トレース結果は次のようになります。スキャン数を増やすと、よりおおざっぱなトレースから、より細かいトレースに変化していると思います。



「マルチカラー」で「色」

 試した画像は次のものです。


 この画像をマルチカラーを指定してトレースすると、元の画像の見た目をそのままパスオブジェクトに変換できています。

 このトレースは、積み重ねオプションをチェックせずに実行したので、トレース結果のパスオブジェクトをドラッグして移動すると、次のように互いが重ならないパスになっていることがわかります。

 積み重ねオプションにチェックを入れてからトレースすると、次のように重なっている部分も含めてパスオブジェクトが生成されていることがわかります。


 なお、背景を削除にチェックを入れているので、画像の一番外側の枠は背景としてパス化されていません。

スペックル

 試した画像は次のものです。すでにサンプルとして使った画像に、わざとゴミピクセルを混ぜてあります。

 この画像について、スペックルの値を大きくしながらトレースしてみました。トレース結果は次のようになります。スペックルの値に応じた大きさのゴミがトレース結果に無いことがわかります。





SIOX(ユーザーによる支援ありのトレース)

 次は、SIOX(Simple Interactive Object Extraction)を使ったトレースです。「画像トレースのパラメータと手順」のほうでも簡単に触れていますが、ビットマップのトレースダイアログの上でユーザーによる支援ありのトレースにチェックを入れて実行します。試した画像は次のものです。

 この画像のうち、トレースしたい範囲をすっぽり囲うようにシェイプまたはパスを描きます。もう少し詳しく書いておくと、トレース対象外にしたい背景にあたる部分がどの範囲なのかを指定するために、背景にあたらない領域(つまりトレースしたいものが描かれている部分)を全て内側に囲うように、閉じたパス(閉じたシェイプでもよい)を画像オブジェクトの上に描き、そのパスのフィルをなんでもいいので色を付けて塗りつぶします。なんでもいいらしいので、トレース結果を確認しやすいように画像オブジェクトの色と比べて目立つ色を選んで、かつ、後ろに画像が隠れないように不透明度を調節して、後ろの画像が透けて見えるようにします。例えば半透明の赤を設定してみました。こうしておいて、SIOXにチェックを入れてトレースを実行すると、背景にあたる部分に含まれる色を全部取り除いてからトレースを実行してくれます。

 この状態で、画像オブジェクトと上に描いたパスオブジェクトを両方選択しておいて、ユーザーによる支援ありのトレースというチェックボックスをチェックしてからトレースを実行すると、次のようなトレース結果になります。パスオブジェクトの外側に存在する色の領域は全部背景として無視してトレースします。

 ここで、わざとトレースしたい範囲をすっぽり囲わずに少しでっぱるようにパスを描いてみます。

 すると、でっぱったところの色(水色)も背景色として認識されて、その色の領域を背景として無視したトレースをするので、水色の部分は次のようにトレースされません。ということは、パスで囲ったところに存在する色と同じ色がたまたま背景部分にも存在した場合、その色はたとえパスで囲ってトレースしてほしいと指示したとしても、トレース対象から除外されてしまうことになります。

 SIOXは、他のトレース方法との組み合わせで用いる機能なので、単一スキャンの色の量子化と組み合わせたり、多重スキャンの明るさのステップと組み合わせたりすることができますが、他のパラメータの値とSIOXの指定領域との間にどういう関係があるのかもよくわかりませんから、実際にどんなトレース結果が得られるかを予想するのは難しそうです。画像トレース機能全般で思うことですが、各トレース方法の性質を理解しつつ、パラメータを変えながら欲しいトレース結果になるまで試行錯誤を繰り返すことは、SIOXを利用する場合もかなり必要なのじゃないかと思います。