3

携帯端末の Android/iPhone で正しい色を表示したいので、端末ごとに ICC プロファイルを作成しました。私の色は L*a*b* (CIELAB) 形式です。L*a*b* から RGB への変換は XYZ 色空間を経由し、Bruce Lindbloom のWeb からの数学を使用します。

問題は、XYZ を RGB に変換するアルゴリズム (Lindbloom の Web だけでなく、Web 全体) が sRGB プロファイルに直接変換されることです。次に、sRGB からデバイスの ICC プロファイルに変換します (www.color.org の「SampleICC」ライブラリを使用します)。XYZ 値をデバイスのプロファイルに直接変換し、できれば SampleICC ライブラリを使用して sRGB をスキップする方法はありますか、または ICC プロファイルを適用するための他の C/C++ ライブラリはありますか? ...ドキュメンテーションおよび/またはサンプル付き。これで精度を上げたい。

編集: @Nikita Nemkin のアドバイスに基づいて、組み込みの Lab プロファイルを使用して小さな CMS を試し、次のような変換を作成しました。

cmsHPROFILE outProfile = cmsOpenProfileFromFile("my_profile.icm", "r");
// Lab to RGB with custom ICC profile
g_LcmsTransform = cmsCreateTransform(cmsCreateLab4Profile(cmsD50_xyY()), TYPE_Lab_DBL, outProfile, TYPE_RGB_DBL, INTENT_RELATIVE_COLORIMETRIC, 0);

これにより、SampleICC ライブラリを使用した以前のアルゴリズム (Lab -> XYZ -> sRGB -> カスタム ICC プロファイルを使用した RGB) とは少し異なる結果が得られます (特に暗い色の場合)。私の最初のアルゴリズムでは、Lab -> XYZ 変換で暗い色を適応させていないため、これは部分的なものです。本当に悪いことは、これらの変換の両方が、Photoshop での変換とは異なる結果になることです。例えば:

Lab (18, -30, 70) is sRGB (0, 54, 0)
SampleICC RGB (39, 57, 24)
SampleICC RGB with proper dark colors handling (45, 57, 24)
LittleCMS RGB (39, 54, 0)
Photoshop RGB (45, 55, 0)

すべての変換は相対的な測色を意図して行われ、Photoshop ではブラック ポイント補正と Adob​​e エンジンを使用しました。どの番号を信頼する必要がありますか? 私の値をチェックするための 100% 信頼できるソフトウェアはありますか?

4

1 に答える 1

2

Little CMSは、人気のあるオープン ソース (MIT ライセンス) のカラー管理ライブラリです。それはあなたが望むことをすることができるはずです。

于 2013-06-06T10:14:20.417 に答える