ImageMagick
ImageMagick® は、デジタル画像の編集・加工に使われる無料のオープンソースソフトウェア群です。ビットマップ画像の作成・編集・合成・変換に利用でき、JPEG、PNG、GIF、TIFF、Ultra HDR を含む幅広いファイルフォーマットに対応しています。
ImageMagick は、Web 開発・グラフィックデザイン・動画編集といった分野に加え、科学研究・医療画像・天文学などでも広く使われています。汎用性とカスタマイズ性の高さ、そして堅牢な画像処理能力により、さまざまな画像関連タスクで人気の選択肢となっています。
ImageMagick には、複雑な画像処理タスクを実行するためのコマンドラインインターフェースに加え、その機能をソフトウェアアプリケーションに統合するための API も用意されています。C 言語で書かれており、Linux、Windows、macOS をはじめとするさまざまなオペレーティングシステムで利用できます。
ImageMagick の公式サイトは https://imagemagick.org です。最新バージョンは ImageMagick 7.1.2-25 です。本ソフトウェアのソースコードはリポジトリから入手できます。また、レガシー版である version 6 も保守しています。バージョン 6 から 7 への移行に関する詳細は、移行(porting)ガイドをご覧ください。
ImageMagick を利用する前に、各自のローカル環境に合わせたセキュリティポリシーを作成することを強くおすすめします。このポリシーの設定方法についてはガイダンスを参照してください。また、検証ツールでポリシーを検証することも重要です。
機能と能力
ImageMagick の主要な特長の一つが、スクリプティングと自動化への対応です。これにより、手作業を介さず自動実行できる複雑な画像処理パイプラインを構築できます。大量の画像を処理する必要があるタスクや、定期的に実行する必要があるタスクで特に役立ちます。
ImageMagick は、中核となる画像加工機能に加えて、アニメーション、カラーマネジメント、画像レンダリングなど多くの機能も備えています。これらの機能により、グラフィックデザイン、科学的可視化、デジタルアートなど、幅広い画像関連タスクに対応する汎用的なツールとなっています。
総じて ImageMagick は、画像ファイルの表示・変換・編集のための強力で汎用的なソフトウェア群です。スクリプティングと自動化への対応をはじめとする各種機能により、幅広い画像関連タスクで価値あるツールとなっています。
ImageMagick でできることの一例を以下に挙げます(例)。
| アニメーション | 複数の画像から GIF アニメーションシーケンスを作成する。 |
|---|---|
| バイラテラルブラー | 非線形でエッジを保持し、ノイズを低減する平滑化フィルタ。 |
| カラーマネジメント | カラープロファイルによる正確なカラーマネジメント。プロファイルが無い場合は色空間が要求するガンマ圧縮・伸張を内蔵機能で実施。 |
| カラーしきい値処理 | 指定した色範囲内のピクセルをすべて白に、それ以外を黒にする。 |
| コマンドライン処理 | ImageMagick をコマンドラインから利用する。 |
| 複雑なテキストレイアウト | 双方向テキスト対応とシェーピング。 |
| 合成(Composite) | ある画像を別の画像に重ね合わせる。 |
| 連結成分ラベリング | 画像内の連結領域に一意のラベルを付ける。 |
| 凸包(Convex hull) | 画像の前景オブジェクトを含む最小面積の凸多角形。あわせて最小外接矩形と回転補正角も生成。 |
| 装飾(Decorate) | 画像に枠やフレームを追加する。 |
| 画像特徴の抽出 | Canny エッジ検出、ハフ直線変換。 |
| 離散フーリエ変換 | 順方向・逆方向の DFT を実装。 |
| 分散ピクセルキャッシュ | 中間的なピクセル格納を 1 台以上のリモートサーバーへオフロードする。 |
| 描画(Draw) | 画像に図形やテキストを追加する。 |
| 画像の暗号化・復号 | 通常の画像を判読不能なデータに変換し、また元に戻す。 |
| フォーマット変換 | あるフォーマットから別のフォーマットへ画像を変換する(例: PNG から JPEG)。 |
| 汎用ピクセル歪み変換 | 遠近を含む画像の歪みを補正、または付与する。 |
| 異種分散処理 | 一部のアルゴリズムは OpenCL に対応し、CPU・GPU など異種プラットフォームを協調実行させて高速化を図る。 |
| ハイダイナミックレンジ画像 | 直射日光の最も明るい部分から最も深い影まで、実シーンに存在する広い輝度レンジを正確に表現する。 |
| ヒストグラム平坦化 | 適応的ヒストグラム平坦化により画像のコントラストを改善する。 |
| 画像キャッシュ | 画像・画像シーケンス・動画・音声・メタデータをローカルフォルダーに安全にキャッシュする手法とツール。 |
| 画像計算機(Image calculator) | 画像・画像シーケンス・画像チャンネルに数式を適用する。 |
| 画像グラデーション | 水平・垂直・円形・楕円形の形状で 2 色を滑らかに混色する。 |
| 画像識別 | 画像のフォーマットと属性を記述する。 |
| iPhone 上の ImageMagick | iPhone や iPad などの iOS デバイス上で画像を変換・編集・合成する。 |
| 大規模画像対応 | メガ・ギガ・テラピクセル級の画像サイズを読み書き・処理する。 |
| モンタージュ(Montage) | 画像のサムネイルをキャンバス上に並べる。 |
| 形状のモルフォロジー | 特徴抽出、形状記述、画像内のパターン認識を行う。 |
| 映画フォーマット対応 | デジタル映画制作で使われる一般的な画像フォーマットを読み書きする。 |
| マルチスペクトル画像 | 最大 32 バンド(うち 22 はメタチャンネル)のマルチスペクトル画像に対応する。 |
| ノイズ・色数の削減 | Kuwahara フィルタ、平均値シフト。 |
| 知覚ハッシュ | 視覚的に同一の画像を同一または近いハッシュへ対応付ける。画像検索・認証・索引付け・複製検出・電子透かしに有用。 |
| 特殊効果 | 画像のブラー・シャープ・しきい値処理・着色を行う。 |
| テキストとコメント | 説明的または装飾的なテキストを画像に挿入する。 |
| 実行スレッド対応 | ImageMagick はスレッドセーフであり、ほとんどの内部アルゴリズムは並列実行され、マルチコアプロセッサによる高速化を活用する。 |
| 変換(Transform) | 画像のリサイズ・回転・傾き補正・切り抜き・反転・トリミングを行う。 |
| 透明度(Transparency) | 画像の一部を不可視にする。 |
| 仮想ピクセル対応 | 画像境界の外側にあるピクセルへ手軽にアクセスする。 |
ImageMagick の利用例では、コマンドラインからソフトウェアを使ってさまざまな効果を得る方法を紹介しています。また、幾何変換・ブラー・シャープ・ノイズ除去などを適用できるスクリプトが、Fred's ImageMagick Scripts や Snibgo's ImageMagick Scripts で公開されています。さらに、ImageMagick 本体をインストールせずにその機能を利用できる Magick.NET というツールもあります。加えて、Windows 環境で ImageMagick を使うためのヒントや例をまとめた Cookbook も公式サイトに掲載されています。
コミュニティ
ディスカッションサービスに参加して、ImageMagick コミュニティに加わりましょう。他の利用者の質問への回答を見つけたり、自分の質問を投稿したりできます。技術的な質問、改善の提案、バグ修正があれば、Issue を立ててコミュニティの助けを得ることもできます。