やんま まのblog(仮)

2010年09月

既存のRGB画像ファイルをCMYKに変換するためにSeparate+とGIMPを使用することができますが、GIMPは画像編集全般の機能をカバーする大きなアプリケーションですし、作業効率を考えると割に合いません。単に変換を行うだけなら他のツールを活用するのが賢いやり方といえるでしょう。

変換に使えるツールはいくつかありますが、ここではメジャーなところでImageMagickを取り上げてみます。非常に多機能なツールなのでサクサクとまではいかないかもしれませんが、GIMPよりはずっと効率よく処理できるはずです。CLIですからバッチファイルやシェルスクリプトを用意すれば大量のファイルを一括変換することも可能です。

RGB→CMYKの変換は、そのものズバリでconvertコマンドを使用します。最も基本的な用法は次の通りです。

convert rgb.tif -intent Relative -black-point-compensation -profile JapanColor2001Coated.icc cmyk.tif

-profileオプションはプロファイルを指定するためのものですが、効果は文脈によって異なります。画像にプロファイルが紐付いている状態では、そのプロファイルのカラースペースと指定されたプロファイルのカラースペースとの間で変換が行われ、指定プロファイルが画像に紐付けされます。プロファイルの紐付けがない状態では、プロファイルの紐付けのみ行われ変換は発生しません。

-intentオプションはレンダリングインテントの指定です。これは基本的にRelative(またはPerceptual)でよいでしょう。Relativeを指定する場合は、-black-point-compensationオプションの併用が有用です。

プロファイルが埋め込まれていない画像を処理する際には、正しく変換が行われるように、画像のカラースペースに相当するプロファイルを指定してやる必要があります(都合、2つの-profileオプションを記述することになります)。

convert rgb.tif -profile AdobeRGB1998.icc -intent Relative -black-point-compensation -profile JapanColor2001Coated.icc cmyk.tif

処理対象の画像に埋め込みプロファイルを持つ画像と持たない画像が混在するケースでバッチ処理を行うには、ひと工夫が必要です。すべての画像が同じカラースペースであることが自明なら、-strip "+profile ICC"オプションで埋め込みプロファイルを破棄することで2番目の用法が使えます(注:-stripは全てのメタデータを破棄するオプションです)。そうでない場合には事前に埋め込みプロファイルの有無をチェックして1番目の用法か2番目の用法かを選択するようにしてください。埋め込みプロファイルの有無はidentifyコマンドを-verboseオプション付きで実行することで確認できます。

追記

現行バージョンをお使いの場合、convertidentifyなど用途別のコマンドがなく、代わりにmagickコマンドがインストールされているかもしれません。上記解説の範囲ではconvertmagickに置き換えればそのまま動作するようです。

identifyコマンドの使用については以下のように代替します。

magick image.tif -verbose info:-

時々Mac OS XでSeparate+を導入しようとされている方を見かけます。Mac OS Xならカラースペース変換を行うことができるツールが標準で入っていますので必ずしも追加で何か入れる必要はないと思うのですが、条件によっては別途ツールを用意した方がよいケースもあるでしょう。

Mac OS Xではプラグインを単体で配布するのはなかなか難しいようです。少なくともTiger、Leopard、Snow Leopardそれぞれのバイナリを用意しなくてはなりませんが、当方では全てをビルドできる環境は持ち合わせていません。

まあ、基本的には各自でXcode ToolsやMacPortsを導入した上で自分の環境用にビルドしていただくのがよいかと思いますが、どうしても時間を節約したいという方はSeparate+を同梱したgimp-painter-のMac用バイナリをダウンロードしてみてはいかがでしょうか。以下のリンクよりどうぞ。

※Tiger用は既にビルド環境が手元にない(以前勤めていた会社のMacを使ってたため)ので更新されることはありません。あしからず。

Little CMS(以下lcms)は5月にメジャーバージョンアップとなる2.0が公開されました。

コードは完全に刷新され、ICCバージョン4仕様のサポートやプラグインによる機能拡張が可能になるなど、いくつかの目玉があるのですが、パフォーマンスの向上もそのうちのひとつに入るのではないかと思います。Mozillaプロジェクトのqcmsが生まれる背景にlcmsのパフォーマンス問題があったことも記憶に新しいところですし、バージョン2で速度が改善されたかどうかというのは注目されるポイントと言ってよいでしょう。

パフォーマンスに関するデータについては開発者のブログ(その1その2)にて記事が上がっていますのでそちらをご覧いただくのがよいでしょう。こちらでは、バージョン2に対応予定のSeparate+ 0.5.8を用いてバージョン1との比較を簡単に行ってみます。

テスト項目は、次の通りです。

  1. Adobe RGB→sRGBへの変換。Matrix-Shaperプロファイル同士の変換処理です。
  2. Adobe RGB→PX5500 Photo Crispiaへの変換。一方がMatrix-Shaper、もう一方がLUTタイプのプロファイルの組み合わせです。
  3. 自作モニタプロファイル→PX5500 Photo Crispiaへの変換。LUTプロファイル同士の変換となります。
  4. Adobe RGB画像に抽象プロファイルを適用。Matrix-Shaper→LUT→Matrix-Shaperのマルチプロファイル変換です。
  5. 自作モニタプロファイルの画像に抽象プロファイルを適用。LUT→LUT→LUTのマルチプロファイル変換です。

以上のテストを8000x6000ピクセルの画像にそれぞれ5回実行し、平均の時間を求めました(単位は秒)。処理時間はicc_colorspaceプラグインにGTimerを用いた測定コードを組み込んで測定しています。

続きを読む

背景の抜ける画像というとまだまだクリッピングパスの方が出番が多いかと思いますが、バージョン0.5.8では一応透過TIFF(RGBCMYKA画像)ファイルの書き出しに対応します。

日本語で説明がついているので、その通りにやればよいでしょう。

バージョン0.5.6より、クリッピングパスに対応しています。TIFF、JPEG、Photoshop PSDのいずれもクリッピングパス付きのファイルを書き出すことが可能です。

このデモは開発中のものなので元画像からパスをコピー&ペーストしていますが、実際にはその必要はありません(分解時に自動的にパスがコピーされます)。

実際の手順は、

  1. 元画像にパスを作成
  2. 分解
  3. 書き出し時にクリッピングパスとして使用するパスを選択
あるいは
  1. 分解
  2. 分解画像にパスを作成
  3. 書き出し時にクリッピングパスとして使用するパスを選択

となります。3があるのは、複数のパスをファイルに含めたり、クリッピングパスを明示しないことも可能だからです(画像を配置してからクリッピングパスを決定するケースを想定)。 まあ、Photoshopでクリッピングパス付きの画像を作成したことのある方ならおおよそ分かるのではないかと思います。

このページのトップヘ