Ubuntu Weekly Recipe
第102回 ImageMagickでコマンドラインから画像加工
今回は,コマンドラインから画像加工を行えるImageMagickを取り上げます。画像加工ならGIMPやF-Spotを使えばいいのに,“なぜコマンドラインから?”と思われるかもしれませんが,コマンドラインならではの利点もあります。
例えば,数百枚の画像に同じ処理を施す場合,GIMPで1枚1枚手作業で処理するのに比べて,コマンドラインやスクリプトから一括で処理した方が,時間も労力もかかりません。
ImageMagickは数多くの機能を備えていますが,その中からデジカメで撮影後の写真を加工する用途を中心に紹介していきます。
ImageMagickのインストール
インストールは,[アプリケーション]-[アクセサリ]-[端末]を開いて以下のコマンドを実行します。
$ sudo apt-get install imagemagick
ImageMagickのドキュメントをインストールする場合は,以下のコマンドも実行します。
$ sudo apt-get install imagemagick-doc
インストールしたドキュメントを閲覧するには,Firefoxのアドレス欄に以下を入力します。
file:///usr/share/doc/imagemagick-doc/index.html
ドキュメントを開いてみるとわかりますが,これはImageMagickのホームページとほぼ同一のものです。
ImageMagickの基本
ImageMagickでは,画像を変換する場合に「convert」や「mogrify」というコマンドを用います。「mogrify」コマンドを使ってしまうと元画像を書き換えてしまうため,新たなファイルとして保存する「convert」コマンドを使うのがよいでしょう。
例として,カレントディレクトリ内に保存されている写真「P001.jpg」のJPEG圧縮率を90%に変更して「converted_P001.jpg」という名前で保存してみます。以下のコマンドを実行します。
$ convert P001.jpg -quality 90 converted_P001.jpg
ただし,このようにImageMagickを使うだけでは,GIMPで写真を開いて,ファイルの保存ダイアログで,圧縮率を指定するのと手間が変わりません(図1)。
そこで,「xargs」というコマンドと組み合わせて使い,カレントディレクトリ内のJPEGファイルすべてに同じ処理を施してみます。以下のコマンドを実行します。
$ ls *.jpg | xargs -I{} convert {} -quality 90 -verbose converted_{}
このコマンドでは,lsコマンドでカレントディレクトリ内のJPEGファイルをリストアップし,その出力をxargsコマンドに渡します。xargsコマンドは,与えられたファイル名を{}の部分に代入して,JPEGファイルの数だけconvertコマンドを実行してくれます。
例えば,カレントディレクトリ内に「P001.jpg, P002.jpg, P003.jpg, ...」というファイルがあった場合は,変換後の画像を「converted_P001.jpg, converted_P002.jpg, converted_P003.jpg, ...」と保存してくれます。
なおここでは,処理状況を表示させるため「-verbose」オプションを追加しています。
輝度,彩度の変更
「-modulate」オプションを用いると,簡単に輝度と彩度が変更できます。ただし,この操作が行われるのはHSL色空間です。
-modulateオプションは3つの値を取り,「輝度(Lightness)」「彩度(Saturation)」「色相(Hue)」の順にパーセントの値で指定します。値が指定されない場合は100%が指定されたものと解釈されます。
輝度を110%,彩度を130%に上げる場合は,以下のように実行します。
$ convert P001.jpg -modulate 110,130 converted_P001.jpg
この操作は,元の画素の持つ値に対して,-modulateオプションで指定した値を掛ける動作をします。これは,GIMPメニューの[色]-[色相-彩度](図2)とは全く異なる動作です。GIMPと似たような動作をさせる場合は,以下のように指定します。
$ convert P001.jpg -colorspace HSL \ -channel B -evaluate Add 10% \ -channel G -evaluate Add 30% \ -colorspace RGB converted_P001.jpg
このコマンドでは,まず画像をHSL色空間に分解し,チャンネルごとに値を加えています。そして最後にRGB色空間に戻して保存しています。
操作するチャンネルの指定方法ですが,ImageMagickではRGBの3文字しか使えません。HSL色空間ではHを操作したい場合はRを,Sの場合はGを,Lの場合はBを指定してください。
また,加える値をパーセントではなく直接指定する場合の値の範囲ですが,ImageMagickでは内部でチャンネルごとの値を16bitで持っているため,0から65535までです。
Ubuntu Weekly Recipe
- 第112回 Bansheeを使用して携帯音楽プレーヤと同期する
- 第111回 UbuntuからHDDレコーダを使いこなす(2)動画ファイルのダウンロード
- 第110回 HYBRID W-ZERO3を使いこなす(2)
- 第109回 HDDレコーダを使いこなす(1)DLNAクライアント
- 第108回 HYBRID W-ZERO3を使いこなす(1)
- 第107回 HandBrakeでリッピングしたDVDをNetWalkerで再生する
- 第106回 PulseAudioでリモートスピーカを使う
- 第105回 Acer Aspire Timeline 1410でUbuntu 9.10を動かす
- 第104回 標準搭載予定のPiTiViでビデオ編集
- 第103回 Deja Dupで簡単バックアップ
- 2009年11月30日 Ubuntuベースの初心者向きディストロ「Linux Mint 8」が登場
- 2009年11月20日号 UDS-L・Netbook Remixの終了・Ubuntu One Music Store・UWN#168・Firefoxの再アップデート
- 2009年11月6日号 9.10 Japanese Remix・Ubuntu Open Week・10.04の開発開始・FCM#30・UWN#166・Firefoxのセキュリティアップデート
- 2009年10月23日号 9.10のRC・UWN#164・今週のセキュリティアップデート
- 2009年10月16日号 9.10のリリースフリーズ・UECのテストとアプライアンスイメージ・Japanese Remixの配布方法・UWN#163・Ubuntu Open Week


