color-management について
オープンソースのワークフローでICCプロファイルを扱う画像編集者や色彩の専門家向けのスキルです。プロファイル検査、色空間変換、色域確認、画像分析の資料とスクリプトを備えています。
主な機能
- 01ICCプロファイルのメタデータ検査
- 02画像の色空間変換
- 03色域チェックとソフトプルーフ
- 04画像間の色差計算
- 05モニター校正のガイド
- 06総合的な色分析レポート
活用シーン
- 01画像に埋め込まれたICCプロファイルの確認
- 02作業色空間間での画像変換
- 03変換前の色域外カラーの確認
- 04画像間の色差の比較
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ magnus919/ agent-skills --skill color-managementインストール後、Claude Code で/color-managementを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitignoreREADME.mdassets/templates/icc-profile-report.mdlch-layer-stack.mdevals/evals.jsonreferences/color-management-overview.mddcraw-pipeline.mdglossary.mdhex-quantization-and-profile-creation.mdicc-profile-operations.mdmonitor-calibration-workflow.mdsoft-proofing-workflow.mdtool-reference.mdworking-spaces-reference.mdscripts/color-difference.pycolor-report.pycolor-space-convert.pygamut-check.pyicc-profile-inspect.pysrgb-compare.pywell-behaved-check.py詳細
カラーマネジメントスキル
オープンソースのワークフローにおける ICC プロファイルのカラーマネジメントに関する、専門家レベルのガイダンスです。色彩科学の基礎、作業色空間の選択、ICC プロファイルの操作、色域分析、実用的なツールの使い方を扱います。
クイックリファレンス
| 次のことが必要な場合 | このリファレンスを読み込む | このスクリプトを実行 |
|---|---|---|
| CIELAB、xyY、または色彩科学の基礎を理解する | references/color-management-overview.md | — |
| ICC プロファイルのメタデータ/原色/TRC を調べる | — | scripts/icc-profile-inspect.py |
| プロファイルが適切に動作するか(ニュートラルグレー軸)確認する | references/working-spaces-reference.md | scripts/well-behaved-check.py |
| 画像を色空間間で変換する | references/icc-profile-operations.md | scripts/color-space-convert.py |
| 画像の色のうち、色空間の色域を超えるものを確認する | references/soft-proofing-workflow.md | scripts/gamut-check.py |
| sRGB プロファイルのバリエーションを比較する | references/working-spaces-reference.md | scripts/srgb-compare.py |
| 2 枚の画像間の色差(dE)を計算する | — | scripts/color-difference.py |
| 変換前に画像をソフトプルーフする | references/soft-proofing-workflow.md | scripts/gamut-check.py |
| モニターをキャリブレーションしてプロファイルを作成する | references/monitor-calibration-workflow.md | — |
| dcraw で RAW ファイルを処理する | references/dcraw-pipeline.md | — |
| 16 進数の量子化を理解し、適切に動作するプロファイルを作成する | references/hex-quantization-and-profile-creation.md | scripts/well-behaved-check.py |
| 包括的な色分析レポートを生成する | — | scripts/color-report.py |
| 色調と色を個別に編集するための GIMP LCH レイヤースタックを設定する | assets/templates/lch-layer-stack.md | — |
| 画像に埋め込まれた ICC プロファイルを抽出する | references/icc-profile-operations.md | scripts/icc-profile-inspect.py |
| 変換インテント(相対/絶対/知覚的)を理解する | references/color-management-overview.md | — |
| カラーマネジメント対応のブラウジング向けに Firefox を設定する | references/tool-reference.md | — |
必要なツール
このスキルのスクリプトは以下のツールを確認し、不足している場合は報告します。必要なものをインストールしてください。
- ImageMagick(
convert、identify、compare、composite)— 主要な画像処理 - Exiftool — メタデータおよび ICC プロファイルの抽出
- ArgyllCMS(
xicclu、iccgamut、colprof、cctiff)— プロフェッショナル向けカラーマネジメント - LittleCMS(
tificc、transicc)— ICC プロファイル変換
# macOS
brew install imagemagick exiftool argyllcms littlecms
# Debian/Ubuntu
sudo apt install imagemagick libimage-exiftool-perl argyll littlecms2
# Fedora
sudo dnf install ImageMagick perl-Image-Exiftool ArgyllCMS littlecms2
Python スクリプト
すべてのスクリプトは scripts/ にあります。実行には Python 3.8 以降と、以下のオプションの依存関係が必要です。
pip install numpy colour-science Pillow # optional but recommended
各スクリプトには --help フラグがあります。
python3 scripts/icc-profile-inspect.py --help
python3 scripts/well-behaved-check.py --help
注意点
sRGB プロファイルのバリエーション
「sRGB」という単一の ICC プロファイルはありません。ベンダーによって、D50 順応、16 進数の量子化、TRC のエンコーディングが異なるプロファイルが作成されています。ArgyllCMS の sRGB.icm と colord の Shared sRGB.icm はどちらも適切に動作します。一方、Adobe/color.org/Windows 2000 のバリエーションは適切に動作しません(高ビット深度で誤ったマゼンタかぶりが発生します)。references/working-spaces-reference.md および scripts/srgb-compare.py を参照してください。
マトリックスプロファイルでは知覚的インテントを使用できません
sRGB、AdobeRGB、ProPhotoRGB、その他すべてのマトリックス作業色空間プロファイルは、知覚的インテントにも彩度インテントにも対応していません。マトリックスの出力先プロファイルに知覚的インテントを選択しても、実際には相対的な測色インテントが適用されます(色域外の色がクリップされます)。「知覚的インテントならすべての色が保たれる」という定説が当てはまるのは、LUT プロファイル(プリンタープロファイル、一部のモニタープロファイル)への変換時のみです。
sRGB に対する知覚的インテントは見せかけです
「sRGB に変換するとき、知覚的インテントは色を保持する」という繰り返し唱えられてきた説明は誤りです。sRGB はマトリックスプロファイルであり、知覚的インテントテーブルを持ちません。実際に適用されるのは、クリッピングを行う相対的な測色インテントです。浮動小数点で色域外の色を保持する唯一の方法は、LCMS2 のアンバウンドモードを使用することです。
ディスプレイ基準とシーン基準
- ディスプレイ基準:RGB 値は 0.0~1.0 の範囲です。白(1,1,1)はディスプレイの最大輝度を表します。ダイナミックレンジは約 9 段です。処理時に値がクランプされます。
- シーン基準:RGB 値に上限はありません。白に特別な意味はありません。20 段以上のダイナミックレンジも可能です(OpenEXR)。リニアガンマが必要です。処理時に値はクランプされません。 編集パイプラインでどちらのモデルを使用しているか、必ず確認してください。
範囲無制限の編集にも限界があります
LCMS2 の範囲無制限モードは、負の値や 1.0 を超える RGB 値を許容することで、変換時のクリッピングを防ぎます。これは保存や転送には便利ですが、多くの編集操作(乗算、除算、スクリーン、レベルのガンマスライダー、トーンカーブ、色補正)は、色域外の色に対して意味のない結果を生みます。色域外の値を管理したくない場合は、整数精度を使用してください。
輝度とルーマの違いは単なる細かいこだわりではありません
- 輝度:リニア化した RGB から計算されます(放射測定学的に正確です)。sRGB 固有の係数を使用します(R0.213 + G0.715 + B*0.072)。
- ルーマ:ガンマ符号化された RGB から計算されます(知覚的に均一です)。係数は異なります(GIMP 2.9 以降では R0.222 + G0.717 + B*0.061、D50 に Bradford 変換で適応)。 GIMP 2.8 では誤った係数が使われていました。GIMP 2.9 以降では修正されています。物理的に意味のある白黒変換には、必ず輝度を使用してください。
カメラプロファイルには負の三刺激値が必要です
すべてのデジタルカメラセンサーでは、入力マトリックスプロファイルに負の XYZ 三刺激値が必要です(233 台の dcraw 対応カメラの分析では、100% で緑の Z が負、93% で青の Y が負でした)。ICC V2 ではこれらが禁止されていましたが、V4 では 32 ビット浮動小数点を介して許可されています。ワークフローで負の値をクリップすると、青と緑のチャンネルのディテールが失われます。
8 ビット、16 ビット、浮動小数点の違い
- 8 ビット:sRGB または AdobeRGB のみを使用してください(色域が狭く、知覚的に均一な TRC)。リニアガンマは決して使用しないでください(シャドウにポスタリゼーションが発生します)。
- 16 ビット整数:ProPhotoRGB を使用できます。放射測定学的に正確な編集には、リニアガンマも問題ありません。
- 32 ビット浮動小数点:任意の作業色空間と TRC を使用できます。範囲無制限の変換が可能です。シーン基準の HDR に必要です。
LCH は HSV のアップグレードではなく、置き換えです
HSV は、CPU が遅かった 1960 年代に生まれた「高速演算」のための小手先の手法です。色と色調を分離できません。LCH(明度、彩度、色相)は CIELAB から導出されており、色と色調を真に分離して編集できます。GIMP の LCH ブレンドモードは、オープンソースソフトウェアにおける初の正しい実装です。本格的な編集では、HSV ブレンドモードを決して使用しないでください。
具体的な失敗例:レベルのガンマスライダー+範囲無制限の sRGB =大惨事
彩度の高い赤を含む ProPhotoRGB 画像を 32 ビット浮動小数点の範囲無制限 sRGB に変換し、レベルのガンマスライダーで調整(例:gamma=3.0)すると、赤はマゼンタになり、画像内のクローム部分はシアンになります。これは、ガンマスライダーが色度に依存し、作業色空間によって異なる倍率で各チャンネルに作用するためです。解決策は、画像の編集に使用したものと同じ作業色空間でガンマ調整を行うか、値チャンネルのレベル補正のような色度に依存しない操作を使用することです。
具体的な失敗例:誤った作業色空間での色補正
ProPhotoRGB 色空間で画像に緑かぶりが生じた場合、範囲無制限の sRGB でホワイトバランスのスポイトを使って補正すると、草はシアンに、肌色はオレンジに、空は高彩度に、遠くの赤いトラックは彩度の高い赤になります。白色点のマーカー自体がニュートラルになっても、他のすべての色は不正確です。色補正は、色かぶりが生じたときと同じ色空間で行う必要があります。別の色空間に変換して補正すると、予測できない結果になります。
具体的な失敗例:色域外の色をチャンネルベースでモノクロミックスする場合
カメラ入力プロファイルから sRGB に黄色いトラックを変換すると、黄色い車体の大部分で青チャンネルの値が負になります。その後、Channel Mixer(Mono Mixer)を使って青チャンネルをブレンドし、白黒に変換しようとしても、青チャンネルの値が負のため、まったく意味のない結果になります。色域外の色に対しては、オルソクロマチックフィルムやその他のチャンネルベースの効果を再現できません。 チャンネルベースの編集は、より狭い色域に変換する前に行うか、画像内のすべての色を含められる十分に広い作業色空間で行う必要があります。
参考資料
| ファイル | 読み込むタイミング |
|---|---|
references/color-management-overview.md | CIELAB、xyY、色彩科学の基礎を理解する必要がある場合 |
references/icc-profile-operations.md | ICC プロファイルの変換、割り当て、抽出、作成が必要な場合 |
references/tool-reference.md | ImageMagick、ArgyllCMS、Exiftool、LCMS の CLI コマンドが必要な場合 |
references/working-spaces-reference.md | 作業色空間のデータ(原色、白色点、ガンマ値)が必要な場合 |
references/glossary.md | 見慣れない用語が出てきた場合 |
references/soft-proofing-workflow.md | 変換前にソフトプルーフを行う必要がある場合 |
references/monitor-calibration-workflow.md | モニターのキャリブレーションまたはプロファイル作成が必要な場合 |
references/dcraw-pipeline.md | RAW ファイルを扱い、カラーマネジメントされたパイプラインが必要な場合 |
references/hex-quantization-and-profile-creation.md | 適切に機能する ICC プロファイルを作成する必要がある場合 |
アセット
| ファイル | 説明 |
|---|---|
assets/templates/icc-profile-report.md | 人が読みやすい ICC プロファイル分析レポートのテンプレート |
assets/templates/lch-layer-stack.md | トーンと色を個別に編集するための GIMP LCH レイヤーグループのテンプレート |