ImageMagick - convert コマンドで画像変換!
Updated:
コマンドラインから画像処理ソフト ImageMagick の convert
コマンドを使用して、画像を色々と変換してみました。
convert
コマンドでどのような変換ができるかを確認するためです。
今回、やってみたことは以下の通り。
0. 前提条件
- Linux Mint 14 (64bit) での作業・動作確認を想定。
- 画像処理処理ソフト ImageMagick がインストール済みである。
- 画像に関する用語については説明しない。必要であれば、別途お調べください。
- 今回使用する画像以下のような画像(ファイル名:”test.jpg”, 幅:320px, 高さ:240px)
サイズ変更
画像のサイズをピクセル値を指定して変更する場合は、以下のようにする。
$ convert test.jpg -geometry 240x180 test_resize_1.jpg
画像のサイズを比率を指定して変更する場合は、以下のようにする。
$ convert test.jpg -geometry 100%x70% test_resize_2.jpg
80%x80%
のように幅・高さが同じなら 80%
と記述してもよい。
また、元の画像のサイズより小さくなる場合のみ適用したいときは 240x180>
と、元の画像のサイズより大きくなる場合のみ適用したいときは 240x180<
とするようだ。
上下反転
画像を上下反転させたい場合は、以下のようにする。
$ convert test.jpg -flip test_flip.jpg
左右反転
画像を左右反転させたい場合は、以下のようにする。
$ convert test.jpg -flop test_flop.jpg
回転(時計回り)
画像を時計回りに回転させたい場合は、以下のようにする。
半時計回りならマイナス値で指定する。
$ convert test.jpg -rotate 30 test_rotate.jpg
枠付け
画像の周りに単純に色を付ける場合は、以下のようにする。
$ convert test.jpg -bordercolor blue -border 10x10 test_border.jpg
画像の周りに立体的な枠を付ける場合は、以下のようにする。
$ convert test.jpg -mattecolor yellow -frame 10x10+4+4 test_frame.jpg
画像が浮き上がったように見える枠を付ける場合は、以下のようにする。
$ convert test.jpg -raise 10x10 test_raise.jpg
モノクロ変換
画像をモノクロ画像に変換するには、以下のようにする。
$ convert test.jpg -monochrome test_monochrome.jpg
二値化
画像を二値化変換するには、以下のようにする。
-threshold
の設定値は画像の輝度に合わせて調節する。
$ convert test.jpg -threshold 10000 test_threshold.jpg
メディアンフィルタ
画像にメディアンフィルタをかけるには、以下のようにする。
-median
の設定値は適当に調節する。
$ convert test.jpg -median 10 test_median.jpg
ぼかし
画像にぼかしをかけるには、以下のようにする。
-blur
の設定値は適当に調節する。
$ convert test.jpg -blur 5x5 test_blur.jpg
モザイク
画像にモザイクをかけるには、以下のようにする。
2つの -sample
を使用する。1つ目の -sample
値が元画像の 1/x 倍なら、2つ目の -sample
値は元画像の x 倍を指定する。
$ convert test.jpg -sample 20% -sample 500% test_sample.jpg
エッジ検出
画像のエッジを検出するに、以下のようにする。
-edge
の設定値は適当に調節する。
$ convert test.jpg -edge 10 test_edge.jpg
エンボス
画像にエンボス効果をかけるには、以下のようにする。
-emboss
の設定値は適当に調節する。
$ convert test.jpg -emboss 10 test_emboss.jpg
水墨画風
画像を水墨画風に変換するには、以下のようにする。
-charcoal
の設定値は適当に調節する。
$ convert test.jpg -charcoal 5 test_charcoal.jpg
ぬりえ風
画像をぬりえ風に変換するには、以下のようにする。
$ convert test.jpg -edge 1 -negate -normalize -colorspace Gray \
-blur -0x.5 -contrast-stretch 0x50% test_colorspace_1.jpg
以下のようなコマンドでもよい。
$ convert test.jpg -background white -flatten -colorspace Gray \
-negate -edge 1 -negate -normalize -threshold 50% -despeckle \
-blur 0x.5 -contrast-stretch 0x50% test_colorspace_2.jpg
さらに、以下のようなコマンドだと、よりぬりえ風に近づいた。(画像の質による)
$ convert test.jpg -colorspace gray \
\( +clone -blur 0x2 \) +swap -compose divide -composite \
-linear-stretch 5%x0% test_colorspace_3.jpg
スケッチ風
画像をスケッチ風に変換するには、以下のようにする。
$ convert test.jpg -colorspace gray -sketch 0x20+135 test_sketch_1.jpg
以下のように、あらかじめスケッチ風背景画像を作成しておき、次にその画像を元の画像に重ね合わせるような方法も可能。
$ convert -size 256x256 xc: +noise Random -virtual-pixel tile \
-motion-blur 0x20+135 -charcoal 1 -resize 50% pencil_tile.gif
$ convert test.jpg -colorspace gray \
\( +clone -tile pencil_tile.gif -draw "color 0,0 reset" \
+clone +swap -compose color_dodge -composite \) \
-fx 'u*.2+v*.8' test_sketch_2.jpg
参考サイト
これらの他にも、様々な画像変換方法が考えられます。
他の方法は、必要になった際に考えることにします。
以上。
Comments