"妄想ノートなラクガキ帳

09/08

2013

potrace用のスクリプト

お絵かき gimp potrace

コメント:2 TB:0


やや長いので先行して独立記事にしました。
無駄に長いとも言えますが、御容赦の程を。

とりあえずpotraceとは何か?
それはビットマップをスキャンして線画に変えてくれるありがたいプログラムなのです。

http://potrace.sourceforge.net/

結構昔からあるもののようですが、おいらは最近になってようやく知りました…

ubuntuではapt-get install potraceで入れることができます。

なお、有名なフリーのベクタグラフィックソフト「Inkscape」のビットマップトレースエンジンは、potraceのものを使用しているとのことなので、GUIで行いたい人はInkscapeを使うといいかもです。

そんなpotrace、残念ながら少々弱点がありまして、bmpとかxpm?とかの、ベタビットマップしか扱えないのですね。
そこで、ImageMagickを併用してテンポラリなbmpに変換することで、jpgなどでも対応できるようにするスクリプトを作ってみたというわけです。


#!/bin/sh

workdir=/tmp
b_level=0.9

while [ "$1" != "" ];do

case $1 in
-k | --blacklevel)
b_level=$2
shift 1
;;
-o | --output)
outfile="$2"
shift 1
;;
-h | --help)
cat $0
exit 0
;;
-w | --workdir)
if [ -d "$2" ];then
workdir=$2
else
echo "ERROR: work directory '$2' does not exist."
exit 1
fi
shift 1
;;
* )
infile=$1
;;
esac
shift 1
done

workfile=$workdir/tmp_$$_img.bmp

if [ "$outfile" = "" ];then
fname=${infile##*/}
outfile=${fname%*.*}.svg
echo output file name $outfile automatically selected.
fi

outfile="--output $outfile"


if [ -e "$infile" ];then
convert $infile $workfile
potrace -k $b_level -s $workfile $outfile
rm $workfile
else
echo "ERROR:file '$infile' does not exist."
fi



これをmypotrace.shとして、/usr/local/bin/mypotrace にシンボリックリンクしてあたかも新しいコマンドのようにして使っています。

使い方は、

./mypotrace.sh hoge.jpg

とすると、適当にその場にhoge.svgを生成します。
ソースを読めば分かるとは思いますが-o(--output)で出力svgファイル名を変更可能です。

デフォルトのブラックレベルは0.9、これは鉛筆絵の濃さだけでなく、スキャナの撮れ方も関わってきます。

このブラックレベルの数値が高くなれば高くなるほど、認識されるコントラストが上がり?よくわかりませんが、とにかく濃い線になる感じです。低くすると、線がかすれていきます。


うちのDCP-J940N(カラーJPGスキャン、全てデフォルト値でかなーり薄い)とおいらの元絵ではこれがちょうどいい感じなので、0.9としてあります。0.87ぐらいに微調整してもいいかな?そんな感じです。


ran_scanned.jpg
これがDCP-J940Nで撮って出し。もちろんスケーリングはしてあります。

ran_potrace.jpg
それをpotraceでトレースしてみた版。

レベル・ガンマ調整だけでここまで追い込めることは無いと思うんで、かなり使いでのあるプログラムなのではないかと思っています。
というか、こうして記事にしてまじまじと見つめてみて、うーむこれはもうちょっとスキャナの設定を追い込んだほうがいいかな、というものを感じましたね…
なんだかキングジムのスキャミル・PSS10のほうが綺麗に読み込めてる気がするのですが。

なお、場合によっては前処理でレベル調整してもいい感じです。ゴミもそれなりに取っておいたほうが望ましいでしょう。頑張らなくてもそれなりに結果を出してくれて、頑張って元絵を描くとさらにそれに答えてくれるソフトという感じがします。



また、このスクリプトはテンポラリファイルを書き出します。テンポラリファイルは処理終了後、自動で削除されます。

スクリプトに慣れた方ならもっと短くエレガントに書けるのでしょうが…まぁ、なんというかですね。
可読性を重要視したんですよ!!(言い訳)

…っていうか別に可読性よくなってないしw

ちなみに、potraceだけでなく、ImageMagickが入っていないと機能しません。
そのうちラスタライズも自動化したいところ。
スポンサーサイト

コメント


名無しさん - 2014/05/13 14:46

編集

いいですね。
リアル鉛筆やリアルボールペンは得意でも、ペンタブトレスは苦手という人もいますし、
デジタルとアナログが一周して、いい時代になってきましたね。

dothiko - 2014/05/13 21:59

編集

> いいですね。
> リアル鉛筆やリアルボールペンは得意でも、ペンタブトレスは苦手という人もいますし、
> デジタルとアナログが一周して、いい時代になってきましたね。

コメントありがとうございます!
お絵かきにはハードとソフトの進化が非常にありがたい時代ですね〜

potraceに与える下絵を、人間の側で工夫してうまく描けば、「鉛筆で一度描けば一切修正なしに=鉛筆をつけペンのごとく使えるのでは?」とも考えているのですが、なかなかうまくは行かないですね…可能性はあるとは思うのですが…

そこで、いずれはソフトのほうがさらに進化して、人工知能的に「自動ペン入れアシスタント」的なモノになってくれないかな、などと妄想してしまうおいらでしたw

名前
メールアドレス
URL
パスワード

トラックバック


トラックバックURL :

モブ沢ドト彦(dothiko)

ブログ主:モブ沢ドト彦(dothiko)
@dothiko

当ブログについて (←いわゆる「最初にお読みください」というヤツです)

このfc2ブログをお絵かき専用ブログに再編するにあたり、ハンドル名ではなくペンネーム「モブ沢ドト彦」を名乗ることに致しました。今後はプログレッシブに生きていこうと思います。基本的にお絵かきは毎週土曜日更新(予定)、その他のネタは不定期という事にしています。
amazonアソシエイトに参加することにしました。
年齢は特に明示しませんが
* おっさんです *

10 | 2017/11 | 12
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -

ユーザータグ

FC2Ad