ImageMagick home / moz / ImageMagick

 ImageMagickは、コマンドラインで画像を処理するツール群です。 Unixとその仲間たちなら標準のパッケージがあるでしょう。 Cygwinもsetupから入れられます。

 中心となるのはconvertというプログラムです。 Windowsではconvertハードディスクのフォーマット形式をFATからNTFSに変換するコマンドだったりするので気をつけて。 つまり、Cygwinでは/usr/binが先に検索されるようにPATH環境変数を設定する必要がある、ということです。 まぁ、毎回/usr/bin/convertって打ってもいいけど・・・。

TIPS home / moz / ImageMagick

 覚え書きともいいます。

減色 (08 Jun 2019)

 8bppなら-colors 256とか-depth 8とか。 -colors 16だけだと4bppにならなかった。

白黒にする (08 Jun 2019)

 -colorspace gray

 24bppだけどそもそも白黒の場合は-depthで減色するのが簡単。

画像の向きを自動で変えたい

 -auto-orient

EXIFデータなんかを全部取っ払う

 -strip。 単純なPNG画像でこれをやるとアホみたいに小さなファイルができます。

余計な余白を削る

 -trim +repage-trimだけだと画像実体はそのままで、+repageを付けると画像実体も削られるらしい。 よく知らないけどきっとそう。 gsでてけとーに作った図の余白を削るときに重宝してます。

余白を付ける

 -bordercolor white -border 3x3

縦画像も横画像も指定のサイズに縮める

 たとえば、6000×4000と4000×6000の画像があるときに、それを720×480あるいは480×720に縮小したいとき。 縮小率を計算してもいいが、-resize 720x720でよい。 widthxheight の指定は、「縦と横の最大値を指定、アスペクト比は保存」なので、横のほうが長ければ横が720になるように、縦の方が長ければ縦が720になるように、縦横の比率を保ったまま縮小される。

 なお、見た目は全部横位置で、EXIFに縦か横かが入っている場合、先に縮小してから-auto-orientすればよい。

 指定したサイズよりも大きい画像を縮小したい場合は-resize 720x720>だが、>がシェルのメタキャラクタなのでクオートする必要がある。 <は逆に小さい画像だけを拡大する。

アニメGIFを作る (09 Mar 2019)

 入力ファイルを複数指定し、最後に出力となるGIFファイルを指定する。 普通、シェルのワイルドカードを使って convert input-*.png output.gif のようにする。 再生間隔は -delay num で調整できる。 num は1/100秒単位。 ループするときの遅延を変えたい場合は、最後の画像だけ end.png のような名前に変えておき(ワイルドカードに引っかからないようにする)、

convert -delay num1 input-*.png -delay num2 end.png output.gif

のようにすればよい。

ガウスぼかしとアンシャープマスク home / moz / ImageMagick

 ImageMagickのガウスぼかし、アンシャープマスクのパラメータは、他の画像編集ツールとちょっと違っています。 ガウスぼかしは-blur-gaussian-blurがあります。 前者が縦・横別々に1次元のガウスぼかしを実行するのに対し、後者は2次元の畳み込みで実行する、という違いがありますが、まぁ結果は似たようなもんです。

 アンシャープマスクは-unsharpです。 アンシャープマスクという名前がついてますが、名前とは対照的に輪郭を強調するフィルターです。 ガウスぼかしをかけた結果を元の画像から引くと、輪郭部分だけ強調した画像が得られます。 これを元の画像に若干加えることで、輪郭強調処理を行います。

 ガウスぼかしとアンシャープマスクをまとめている理由は、アンシャープマスクもガウスぼかしを使うから。 アンシャープマスクのパラメータに「半径」というのがありますが、あれがガウスぼかしの半径なわけです。 普通のツールには「半径」しかありませんが、ImageMagickには「半径」と「シグマ」(標準偏差)というパラメータがあるのです。 そして、半径をいじっても効果は変わりません。 演算範囲が変わるだけ。

 ガウスぼかしというのはガウス関数を畳み込むことで画像を生成します。 ガウスぼかしを孤立した1ピクセルにかけてやると、ピクセルの総和が元のピクセルの値と同じになり、形がガウス関数と比例するような結果が得られます。 この計算を各ピクセルについて行い、足し合わせるのがガウスぼかし処理になります。 10×10の点に、Gimpで半径3のガウスぼかしをかけるとこうなります。

 ImageMagicのunsharpでは「半径x標準偏差」で効果の度合いを決めますが、ImageMagickで-blur 3x3とするとこうなります。

つまり、半径というのはぼかしの範囲ではなく演算範囲が3ピクセルということです。 ガウス関数の特性というのは本来は標準偏差で決まります。 それをそのまま使っているのがImageMagickです。 じゃぁ他のツールの場合はシグマはどうしているのかというと、よく分かりません。 多分、半径に一定の数値をかけて決めているのでしょう。 半径は0にしておけばImageMagickが勝手に演算範囲を決めてくれます。 だから、-blur 0x3が正解なのです。

 アンシャープマスクも最初のふたつのパラメータは同じなので、-unsharp 0x1+0.3+0のような指定が正解で、縮小後にかけるアンシャープマスクはだいたいこのくらいのパラメータが適切のようです。 1が標準偏差で、大きくすると輪郭強調に巻き込む範囲が広くなります。 0.3は適用度で、大きくすると輝度差が大げさになります。


Copyright (C) 2019-2020 akamoz.jp

$Id: imagemagick.htm,v 1.7 2020/02/06 16:06:27 you Exp $