Color Modes

カラーマネジメント

インターネット上でのsRGBの標準化により、ほとんどの画像フォーマットはデフォルトの作業カラースペースとしてsRGBを使用しています。画像のカラースペースが不明で、8〜16ビットの画像フォーマットである場合、sRGBカラースペースであると仮定するのが安全です。これはグレースケールにも当てはまります。非線形グレースケールを想定しています。これらの仮定は、特定の画像フォーマットにカラースペースやガンマメタデータが含まれている場合はオーバーライドされます。カラースペースがsRGBではなくRGBの場合、ImageMagickは線形カラーを想定します。カラープロファイルまたは-setオプションを使用して、デフォルトのカラースペースの仮定をオーバーライドすることもできます。

ImageMagickはカラープロファイルをサポートしていますが、プロファイルまたはカラースペースの宣言がない画像の場合、ImageMagickは非線形sRGBを想定します。ほとんどの画像処理アルゴリズムは線形カラースペースを想定しているため、特定の画像処理アルゴリズムを適用する前に、線形カラーに変換するか、ガンマ関数を削除することをお勧めします。例えば、

magick myimage.jpg -colorspace RGB -resize 200% -colorspace sRGB mybigimage.jpg

画像がsRGBではなく線形RGBであることを宣言するには、setオプションを使用します

magick myimage.png -set colorspace RGB myRGBimage.png

画像を線形として宣言することと、画像を線形に変換することは同じではないことに注意してください。線形として宣言すると、メタデータが設定されるだけで、ピクセルデータは変更されません。一方、線形への変換は、以下で詳しく説明するように、実際にピクセルデータを変更します。

その後、出力ファイルの詳細情報に、カラースペースがRGBとしてリストされます。これは、線形RGBと非線形sRGBを区別するメタデータを含む画像タイプ(PNGやGIFなど)でのみ機能します。したがって、上記のcommandをJPGまたはTIF出力形式で実行した場合、カラースペースの詳細情報にはsRGBが表示されます。JPG出力が線形RGBであることを正しく認識させるには、適切なカラープロファイルを含めます。

デフォルトでは、カラー画像をグレースケールに変換すると、非線形グレーが返されます。代わりに線形グレーに変換するには、-setまたは-intensityまたは-grayscaleオプションを使用します


convert myimage.png -colorspace LinearGray myRGBimage.png
convert myimage.png -colorspace RGB -colorspace Gray myRGBimage.png
convert myimage.png -intensity Rec709luminance -colorspace gray myRGBimage.png
convert myimage.png -grayscale Rec709luminance myRGBimage.png

LinearGrayはImagemagick 6.9.9-29および7.0.7-17以降の新機能です。

チャネルを分離する場合も、同じ概念が必要です。通常、sRGBカラー画像の各チャネルを分離変換すると、個別の非線形グレースケール画像が生成されます。ただし、個別のチャネルを線形グレースケールとして保持したい場合は、同じ概念を適用できます。たとえば、次のコマンドは線形グレースケールチャネルを生成します。

magick myimage.png -colorspace RGB -separate myimage_channels_%d.png

チャネルを分離して再結合する場合、潜在的な中間処理を行う場合は、特に再結合中に、使用されるカラースペースを特定することが重要です。例えば、

magick myimage.png -separate myimage_channels_%d.png
magick myimage_channels_*.png -combine myimage2.png

上記の例では、分離されたチャネルは非線形で、-combineのデフォルトは非線形チャネルを想定することです。そのため、結果は入力と同じです。

線形グレースケールチャネルに分離し、後で何らかの処理を行った後に非線形カラーに再結合する場合は、線形グレースケールを維持するために上記と同じ概念を使用します

magick myimage.png -set colorspace RGB -separate myimage_channels_%d.png
magick myimage_channels_*.png -set colorspace RGB -combine -colorspace sRGB myimage2.png

sRGBとHSLなど、別のカラースペースに変換して戻す場合、次の2つのコマンドは、最初のケースの非線形チャネルと2番目のケースの線形チャネルを処理します

magick myimage.png -colorspace HSL -separate myimage_channels_%d.png
magick myimage_channels_*.png -set colorspace HSL -combine -colorspace sRGB myimage2.png
magick myimage.png -set colorspace RGB -colorspace HSL -separate myimage_channels_%d.png
magick myimage_channels_*.png -set colorspace HSL -combine -colorspace RGB -set colorspace sRGB myimage2.png

ほとんどの画像形式はsRGBカラースペースを想定しています(JPEG、PNGなど)。線形RGB(EXR、DPX、CIN、HDRなど)または線形GRAYのみをサポートするものもあります。CMYKをサポートする形式もいくつかあります。たとえば、JPGはサポートしますが、PNGはサポートしません。また、LAB(つまりCieLAB)もサポートする形式もあります(TIFF、PSD、JPG、JP2など)。詳細については、カラースペースおよびサポートされている形式のページをご覧ください。

rgb(...)または16進数として個々の色を指定する場合、これらの色は非線形、つまりsRGB色として解釈されます。ただし、線形カラーを作成する場合は、icc-color(rgb,r,g,b)"を使用します。ここで、rg、およびbは0〜1の範囲です。カラーページをご覧ください。