Potraceでラスタ画像をベクタ画像に変換

何となく気軽に描けるのとカチッとした線になるのが好きで、アンチエイリアシングの無い落書きをよく描くのですが、拡大して印刷したり解像度を変えて違うツールで彩色しようとすると、カクカクが面倒な事が多いです。

トレースしたり最初から高解像度で描き直したり、面倒な時はFlashでベクターに分解して使っていたのですが、potraceと言うツールでベクター化出来る事を知りました。
Potraceは幅広いOSに対応したラスタ→ベクタ変換ツールで、ソースコード、コンパイル済みのバイナリの他、OSXを使っているならfinkから(少しバージョンが古いですが)入手出来るようです。

使用はCUIでの操作が前提ですが、Windowsなら直接EXEファイルにD&Dでも変換でき、バッチファイルやAutomatorを使えばコマンドを意識するのも最初だけです。また、OSX用ですがGUIフロントエンドを配布している方もおられます。

使ってみた

お絵描き掲示板で描いた絵をpotraceを使ってベクタ画像に変換してみました。
バイナリを解凍して適当なディレクトリに配置してコマンド入れます。

[Macintosh:~] LOGINUSER% Desktop/potrace-DIR/potrace Desktop/foo.bmp

変換前の画像
この画像が…
変換後の画像
設定無しでもこんな感じに変換してくれます。凄い。
単純に入力ファイルを指定するだけでも綺麗にベクター化してくれますが、多数のオプションを組み合わせる事でより複雑な処理を行う事も出来るようです。
例えばpotrace -is INPUTFILEと指定すれば、諧調反転したSVGとして出力できます。

次の様な二値化がはっきりしていない絵や写真も変換出来ます。
ペインターで描いた絵をPotraceで変換
流石にちょっと辛い、と言うか意味が無いかも。グラデーションが無い絵か、Photoshopでポスタリゼーション処理して色毎にレイヤー分けすれば何とかなるかも。

カクカクした絵が思った以上に上手く変換されたのでアンチエイリアスが効いた絵ならもっと良い具合に変換されるんじゃないの?と思ったんですが、素で変換すると線が途切れました。しきい値の調節等が必要ですね。

変換前に

変換する元データを二値化やコントラストの調節を行い、ビットマップ(BMP)形式に変換しておきます。 二値化等は省いても問題無さそうですが、なるべく正確なトレースを期待するなら予め色の差を出した方が良いかも。potraceで試行錯誤する手間も省けると思います。
以下、試し。

画像を未加工で変換

未加工のオリジナル画像を…potraceで変換。真っ黒になってしまいました

プレビュー(3.0.4)でガンマ値等を変えた画像を変換

オリジナル画像のコントラストを強くしたところ…かなり正確にラインをトレース出来ました

低解像度で描いた絵も綺麗にベクタ画像に変換出来るので、DTP素材、イラストや漫画。WebでもSVGとして出力したり、Flash用データ作成など使い道は沢山ありそうです。
とても便利なソフトを公開されているPeter Selingerさんに感謝感謝。

参考URL : Peter Selinger: Potrace

Potrace オプション

もう少し役に立つエントリになるように使えるオプションの説明を追記しました。 使ってないオプションも適当かつ曖昧な日本語に(翻訳どころか意訳ですら無いです)してますので、正確に知りたい場合はpotraceに含まれるREADMEを読んでみて下さい。
turnpolicy他を修正しました。

Potraceに関するオプション

-h,--help
ヘルプを表示して終了
-v,--version
バージョンを表示して終了
-l,--license
ライセンスを表示して終了
-V,--show-defaults
コンパイル時に設定された変換設定を表示
--progress
変換時にプログレスバーを表示

入出力に関するオプション

-o,--output <file>
出力するファイル名を指定

バックエンド(ファイルの種類の事だと思います)に関するオプション

-e,--eps
EPSとして出力(指定が無い場合のデフォルト)
-p,--postscript
ポストスクリプトとして出力
-s,--svg
SVGとして出力
-g,--pgm
PGMとして出力
-b,--backend <name>
名前でバックエンドを指定する(拡張子を指定しろって事でしょうか、gimppath,xfig)

変換に関するオプション

-z,--turnpolicy <policy>
分岐した線の処理を指定、デフォルトはminoriy(Black,White,right,reft,minority,majority)
-t,--turdsize <n>
ゴミを無視するレベル、デフォルトは2(多分px単位だと思います)
-a,--alphamax <n>
角の閾値を指定、デフォルトは1
-n,--longcurve
カーブの最適化に関するオプション(のようですがどうなるのか不明)
-O,--opttolerance <n>
カーブ最適化の精度、デフォルトは0.2(効果不明です)
-u,--unit <n>
…なんだろう。ユニット(?)辺りのピクセル数を指定する(…のかな。使ってみましたが何が変わったのか…)
-d,--debug <n>
デバッグの出力タイプを指定、n=1,2,3

縮尺と配置に関するオプション

-W,--width <dim>
出力画像の横幅を指定
-H,--height <dim>
出力画像の高さを指定
-r,--resolution <n>[x<n>]
解像度をDPIで指定
-x,--scale <n>[x<n>]
拡大縮小率を指定、PGMで出力する場合使用出来るようです
-S,--stretch <n>
縦横比、1を超える値を設定するとY方向、1以下0以上でX方向に伸びます。
-A,--rotate <angle>
角度を指定して時計回りに回転
-M,--margin <dim>
余白を指定
-L,--leftmargin <dim>
左の余白を指定
-R,--rightmargin <dim>
右の余白を指定
-T,--topmargin <dim>
上の余白を指定
-B,--bottommargin <dim>
下の余白を指定

出力オプション

-C,--color #rrggbb
線(塗り潰された部分)の色、標準は黒
--fillcolor #rrggbb
線に囲まれた部分の色、標準は透明(抜き)
--opaque
白い部分を透明にする、らしいです。SVG用かな
--group
パスをグループ化する、らしいです。SVG用だと思いますが…

ポストスクリプトとEPSのオプション

-P,--pagesize <format>
ページのサイズを指定、デフォルトはletter(a4, a3, a5, b5, letter, legal, tabloid, statement, executive, folio, quarto, <dim>x<dim>)
-c,--cleartext
圧縮せずに出力
-2,--level2
ポストスクリプトレベルを2に設定
-3,--level3
ポストスクリプトレベルを3に設定
-q,--longcoding
ファイルサイズを最適化する

PGMのオプション

-G,--gamma <n>
アンチエイリアシングのガンマ値を設定、標準は2.2

フロントエンド(?)のオプション

-k,--blacklevel <n>
二値化するための閾値を設定、標準は0.5(平たく書くと「グレーを白に振るか黒に振るか」を設定します)
-i,--invert
階調を反転して出力

補足

<>で囲んだ指定がありますがカッコは不要です。nは数値になります。dimは寸法(mm、cmやpt)で指定するようです。

次の例はOSXのターミナルでの操作ですが、DOS窓でも同じような感じだと思います。
potraceまでのパスを記述するのが面倒な場合は実行ファイルをターミナルにD&Dして下さい。自動的に実行ファイルまでのフルパスが挿入されます。


USER% /Applications/potrace/potrace -M 2cm -C #336699 -r 74 -A 45 -W 10cm -H 10cm -t 0 -o ~/Desktop/hoge/hoge.eps ~/Desktop/jony.bmp

上のような指定で『1pxのドットも見逃さず(-t 0)、2cmのマージンを取って(-M 2cm)、幅10cm(-W 10cm)、高さ10cm(-H 10cm)、解像度74dpi(-r 74)、塗り潰し部分を腐った青色し(-C #336699)、45度回転させて(-A 45)、デスクトップのjony.bmpを(~/Desktop/jony.bmp)デスクトップの”hoge"フォルダにhoge.epsと言う名前で(~/Desktop/hoge/hoge.eps)変換出力する』指定になります。

出力場所に存在しないフォルダを設定しても自動的にフォルダを作ってはくれませんので、予め用意しておく必要があります。
それと、上書き警告は無いようなので注意しましょう。

大半の場合、変換後に違うツールで編集するので、大きさや解像度をpotraceで設定する事は少ないと思いますが、変換に関する設定は色々工夫すれば狙った出力結果が得られるのではないでしょうか。

ファイル毎にコマンドを変えないのであれば、Windowsユーザならバッチファイル、OSXユーザならAutomatorに設定しておくと楽です。
私はAutomatorでやっつけてますが、コンテキストメニューから簡単に変換出来て便利ですよ。おすすめ。
一番シンプルに記述するなら以下のようになります。 Automatorのスクリーンショット画像です。


コメント
コメントする








   
この記事のトラックバックURL
トラックバック
falogさんのところで「Potrace」というものを知りました。 ラスタ画像をベクタ画像に変換してくれるというスーパーソフトらしいので使ってみました。 便利なんですが、GUIでの操作はでき...
  • Routes+blog
  • 2006/05/29 12:13 AM
Cocoapotrace フリーソフトでここまで奇麗にオートトレースが出来るんだな〜!と感動しました。(昔はAdobe® Streamline™を購入してやってたのに。) イラレCS3のライブトレースより精度が高いと思います。トレースする物で違ってくると思うので、「二つを併用して
  • 美術看板 有限会社すみよし工芸社
  • 2007/09/05 8:31 AM
ベジェ曲線練習するぞ宣言をしたら、 会社の総務の方が本を貸してくれた! 昨日はそれを読みながら、イベント告知サイトを作ってみた。 まぁ習作ということで・・・。...
  • parpue.net
  • 2008/07/29 3:04 PM
土曜塾フォーラム画像編集 画像編集に関する話題 本日=4 昨日=8 all=7484 画像編集に関する話題 本日=4 昨日=8 all=7484 ワード・エクセルで使えるWMF(Windows Meta File) イラレでライブトレース イラレなどのベクトル形式に変換したいのですが、 簡単
  • PukiWiki/TrackBack 0.1
  • 2009/05/07 12:02 PM

selected entries

categories

archives

recent comment

recent trackback

links

profile

search this site.

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM