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

Inkscapeで写真から被写体を切り取る

 このページでは、Inkscapeを使って写真のようなビットマップ画像から被写体を切り取る方法について考えてみたいと思います。

(2024.05.20更新)

 例えば次のような画像から被写体である花の部分だけその輪郭に沿って切り取って、背景部分を消すにはどうすればよいかということです。

 Inkscapeのトレース機能を使って自動的に花の輪郭を抽出してパスオブジェクトに変換できれば簡単なのですが、写真のような境界のあいまいな画像の境界線を目で見た通りに抽出するのはトレース機能のパラメータをがんばって調節してもなかなかうまくいきません。

 もっともよく見かける方法は、次のようにInkscapeにインポートした画像オブジェクトの上からペンツールを使って目で見ながら境界線をなぞっていくことでパスを描き、そのパスを使ってクリッピングするという方法です。

 切り出したいところ(被写体の縁)をぐるっと一周ペンツールでパスを描いて、画像オブジェクトとそのパスを同時に選択した状態でクリッピングを指示するとその形に切り抜くことができます。

 が、ペンツールで例えばベジエ曲線などを細かく描くのはそれなりに大変で、複雑に変化する境界線に沿うようにパスを描くのもそれほど簡単ではありません。(鉛筆ツールならフリーハンドの線が描けますが、さらに難しそう)

 そこで次のような手順を考えてみました。

 何でもいいのでペイント系のツールで切り出したいところの縁にぴったりの位置を白(または黒)一色で塗りつぶし、それによってくっきりと浮かび上がった境界線をInkscapeのトレース機能でパスに変換しようという手順です。

 例えばWindowsの「ペイント」で太い幅に設定した「鉛筆」ツールを使って、被写体をぴったり囲うように白で塗りつぶします。この例の写真は暗い写真なので境界線がくっきりするように白を使いました。

 そしてこの画像をInkscapeにインポートして、次のようなパラメータでトレースを実行します。

 いろいろ試してみましたが、くっきりと分かれている色の境界線上にパスを生成するにはこれが良さそうです。細かいでこぼこもできるだけパス化したいので「平滑化」や「最適化」はゼロに設定しました。

 すると多数のパスが生成されます。

 ここで生成されているパスのうち、切り出す縁のところに生成されたパス以外のパスは削除したいのですが、トレース実行直後は複数のパスがグループ化されており、かつ、1個1個のパスも多くのサブパスから構成されていて1本だけ残す操作が難しいので、「グループ解除」を行ってから不要なパスを削除し、さらにパスの「分解」を行ってから必要なサブパスを1本だけ残すよう編集します。(細かい具体的な手順※AIは教えてくれなかった(笑)は「トレース機能でクリッピングパスを作る」のほうに書いてあります。)

 結果は次のようになります。

 被写体の外側に沿ったパスだけが残った状態にしました。パスのノードが非常に多くて、細かい凸凹も生成できていることがわかります(この例では388個のノードがトレース機能によって生成されています)が、これと同じパスをペンツールを使って手で描くのは難しそうなことも分かります。

 この1本だけ残したパスをクリッピングパスに使って元の画像オブジェクトをクリッピングすれば完成です。

 ペンツールを使ってクリッピングパスを直接手で描くよりも、ペイントツールで塗る操作で境界を描いたほうが楽だと思い、こんな手順を考えてみました。