ImageMagickは、コマンドラインで画像を処理するツール群です。 Unixとその仲間たちなら標準のパッケージがあるでしょう。 Cygwinもsetupから入れられます。
中心となるのはconvert
というプログラムです。
Windowsではconvert
はハードディスクのフォーマット形式をFATからNTFSに変換するコマンドだったりするので気をつけて。
つまり、Cygwinでは/usr/bin
が先に検索されるようにPATH
環境変数を設定する必要がある、ということです。
まぁ、毎回/usr/bin/convert
って打ってもいいけど・・・。
覚え書きともいいます。
8bppなら-colors 256
とか-depth 8
とか。
-colors 16
だけだと4bppにならなかった。
-colorspace gray
。
24bppだけどそもそも白黒の場合は-depth
で減色するのが簡単。
-auto-orient
。
-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ファイルを指定する。
普通、シェルのワイルドカードを使って
convert input-*.png output.gif
のようにする。
再生間隔は
-delay num
で調整できる。
num
は1/100秒単位。
ループするときの遅延を変えたい場合は、最後の画像だけ
end.png
のような名前に変えておき(ワイルドカードに引っかからないようにする)、
convert -delay num1 input-*.png -delay num2 end.png output.gif
のようにすればよい。
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 $