Chapter 20. Tracing Bitmaps

Inkscape にはビットマップをパスに変換する機能がある。次のように実装している:

Inkscape has the ability to convert bitmap images into paths via tracing. Inkscape uses routines from Potrace, with the generous permission of the author, Peter Selinger. Optionally, SIOX can be used as a preprocessor to help separate a foreground from a background.

画像のトレースは容易な業ではなく、絵によって得手不得手がある。精巧にトレースしようとすると、パスノードがどうしても多くなる。その結果、CPU が酷使される:

The paths that are created can have thousands of nodes depending on the complexity of the image and may tax the power of your CPU. Using the Suppress speckles option can reduce the number of nodes generated by the scan. After the scan, you can use the Path ‣ Simplify (Ctrl + L) command to reduce the number of nodes (but at a cost in resolution).

パスを単純化することでノード量を減らすのは基本中の基本だ。

In the latter case, careful tuning of the Simplification threshold under the Misc section of the Inkscape Preferences dialog may be necessary to obtain optimal results.

Inkscape 1.2 では Behavior ‣ Simplification threshold に移転。

この機能のコマンド起動方法は次のいずれか:

  • Path ‣ Trace Bitmaps を選択する。

  • Shift + Alt + B を押す。

    The dialog has three tabs. The first is to select the tracing mode and the second has a list of options.

読者ノート

本書で解説されている UI が 1.2 とかなり異なるので、以降は使えるところだけ引用する。

The Mode tab is divided into a number of parts. On the left are two sections: one for Single scans, where one Path is created, and one for Multiple scans, where several Paths are created.

Mode タブは廃止され、Single scans タブなどに分割されたと思われる。Multiple scans はどうなったかまだわからない。

On the right is a Preview window, which can give you a quick idea of what the final scans will look like.

プレビューはダイアログ下部にある。

A check box at the top right toggles on and off SIOX foreground selection

この SIOX オプションが行方不明。後述。

本章の各節で扱う画像の説明:

A number of scanning strategies are available. Each is discussed in a following section. The sections show the results of tracing a black-and-white figure and a color figure. The input figures (from the August 1919 edition of Vanity Fair) are shown below. The scans have been passed through the Gimp Gaussian Blur filter to remove the effects of the printing screens.

GIMP で掃除しておいた二枚のイラスト画像を題材に、複数のスキャン戦略を議論していく。

The following part of the chapter is divided into four parts. The first two cover Single Scans and Multiple Scans. The last two cover options that can be used both with Single Scans and with Multiple Scans.

Single Scans

This section covers creating single Paths from bitmap images. One option common to all scanning strategies is available: Checking the Invert image box will invert the area the created Path encloses.

このオプション以外にも全スキャン戦略に共通するオプションがあり、 Details としてまとめられている。

Brightness Cutoff

まず、とくにカラー画像での輝度の定義を確認したい:

Output depends on the Brightness of the pixels in the bitmap. Brightness is defined as the sum of the red, green, and blue values for a pixel (or the grayscale value for black-and-white drawings).

形成されるパスの特徴:

One path is created containing all regions that are darker than the Threshold setting. This works well for black-and-white line art.

暗い領域を検出しようとする。

閾値を三通り変えて処理するデモの結果を比較する。紳士のイラストの 0.6 版がいい。上着の形がくっきりしている。カラー絵のほうはいずれも一長一短あるので悩む。部分ごとに採用できればいいのだろうが。

Edge Detection

Output depends on differences in brightness between adjacent pixels. A path is created between areas with changes that exceed the Threshold setting.

隣接する画素間の輝度差が閾値を超える変化を持つ点をつないでパスを作成するということだ。

デモを見ると、紳士のほうはこれから手作業でイラストを完成させたい。自動車のほうはこれ単品では使い物にならない。原画とフィルター処理するなどを考慮する?

Color Quantization

Output depends on changes in color between adjacent pixels. The Number of Colors gives the number of different colors that were used in looking for edges.

現在の UI ではラベルは Colors だ。

Only one path is created; what is inside and outside of the path is based on whether the index of the color is even or odd.

なぜこれで境界が検出できるのか。

デモを比較すると使いこなすのが難しいように思える。結果の変化が激しい。

Multiple Scans

読者ノート

本節の記述は Inkscape 1.2 でいう Multicolor タブの内容に相当するものと判断してノートを綴る。

スキャンを何度か行い、その度にパスを生成する方式だ:

The bitmap is scanned multiple times, each time with a different setting. One path is created for each scan. The paths are stored in a group.

ドロップダウンリストの中身について

The scanning criteria can be Brightness steps, Colors, or Grays.

とあるが、Inkscape 1.2 ではもう一つ、Autotrace (slower) というものがある。このノートではカバーできない。

Brightness Steps

この検出モードの仕様は次のとおり。輝度で輪切りにするとでも言えようか:

The bitmap is scanned one more time than the specified number (Bug?). The values at which the scans are performed is nontrivial. The lowest (darkest) scan is always done at a brightness threshold of 0.2, the next scan is at a threshold of (0.2 + (0.9 - 0.2)/n). The output level of the darkest region is 0.2 and the lightest is 0.9.

中間レベルが等間隔に割り振られる:

Other regions fall at evenly spaced positions in between.

背景として、特に明るい部分が採用される:

If the Remove background box is checked, the 90% region is removed.

本書のデモの出力は紳士と車のどちらもかなり良い。

Colors

入力画像を以下の手順でトレースし、指定された数だけパスを出力する:

The number of colors in the bitmap is reduced to the value in the Scans entry box using an optimal set of colors chosen via the Octree Quantization method. A black-and-white bitmap is created for each color, which is then sent to Potrace for tracing.

カモーンカカカモーンの分身それぞれを描くのに使える。色数を小さくすればするほど像が劣化するのを利用するのだ。

Grays

The tracing principle is the same as for Colors but the result is turned into a grayscale image.

したがって紳士に対する双方の処理出力画像が一致する。

Options

Scans の下、Details の上の項目三つ。

Smooth

トレース処理前にガウスぼかしを入れるかどうか。GIMP などで自分でぼかした場合にはこれをオフにする。

This has the effect of smoothing out the difference between adjacent pixels and can be very useful, for example, with scans of screened prints. Too much filtering can lead to loss of detail.

Stack

オフの場合は生成パスは重なり合わない。オンの場合は各パスが z-order の意味でその上のパス領域を含む。

The advantage of unstacked paths is that they are easier to divide into sub-paths, while the advantage of stacked paths is that there are no “holes” between the coverage of the paths. The differences between the two situations is depicted below.

イラストを比較すると、オフのほうは形状の輪郭を縁取るようにパスが生成されている。

Remove background

背景とは z-order の意味でいちばん下のパスのことだ。

Normally, this path has the lightest color. When the Stack scans option is chosen, the background path corresponds to a rectangle the size of the scanned image. Checking the Remove background box prior to scanning suppresses this path.

これは前述されている。

Common Options

Details 下のオプションを述べる。元ビットマップの特性に合わせて有用かどうかが決まる。

Two of the options reduce file size while the third produces smoother paths. These are all options that are part of Potrace. Their usefulness will vary depending on the source bitmap.

Speckles

指定量より小さいパスすべてを削除する。

Northern Pacific チュートリアルに使用例がある。

Smooth corners

滑らかなノードをなるべく生成する。値が小さいほど角が鋭くなる。

  • 値 0 は平滑化なし。折れ線のようになる。

  • 値が 1 に近づくほどは滑らかなノードの割合が増え、かつノード量が減る。

Optimize

スキャン中に隣り合う Bezier 曲線同士をマージしてノード数を減らすオプションだ。 CAD の感覚で理解していいと思う:

The Tolerance value controls the allowed error in the resulting curve from the merging. The higher the tolerance, the more likely two Bezier curves can be merged into one. As Bezier curves are required for the merging, the Smooth corners option must be used (with a non-zero value).

Tolerance value が長さに関するものだという理解でいいか気になる。もしそうならば単位は何か。

本書赤丸デモ。右側の結果が望ましい。

SIOX

Simple Interactive Object Extraction or SIOX allows one to separate an object from the background in a bitmap image. It acts as a preselection routine for normal tracing.

この記述からすると、トレース処理本体というわけではないようだ。

At the moment, only a background region can be specified. In the future, a foreground region will also be definable.

背景と前景は何らかの基準で明確に異なる扱いをしていると推察される。

SIOX の性能はビットマップ画像の特性で決まる。性能を最も引き出せる入力画像は:

Colored bitmaps where the object is clearly distinguished in color from the background work best.

使い方の説明:

To use SIOX, check the SIOX foreground selection box in the Trace Bitmap dialog. The label is a bit misleading as the next step is to select a region that includes the entire object of interest and excludes most of the background. The SIOX algorithm uses the excluded region to characterize the background.

この名前のチェックボックスは存在しないが、この記述とツールチップの文を照らし合わせると、Inkscape 1.2 では User assisted trace チェックボックスのことだと思われる。ユーザー自らがパスを描くのだ:

Create a closed path around the object you wish to extract. Give the path a fill if it doesn’t already have one. Select both the bitmap image and the path and then trace as usual.

SIOX デモはあえて前景色と背景色が一部共通する画像を扱っている。