色空間の変換(xyYからSRGB, Lab)

色空間の変換(RGBからLab)をまだご覧になっていないかたは、先にそちらをご覧ください。

xyYの値をSRGBとLabに変換するプログラムです。

サンプルデータをページの末尾からダウンロードできます。各行がxyYのデータに相当します。

dataFileName = 'xyYData.csv'; % 各行のデータは、x, y, Y の順番です。
colData = csvread(dataFileName);
XYZdata = xyYToXYZ(transpose(colData));
origSRGB = XYZToSRGBPrimary(XYZdata/100); % 100で割るのがポイント
sRGB = SRGBGammaCorrect(origSRGB, 0); % ガンマ補正

illuminant = transpose([0.96422 1.00000 0.82521]); % Labの光源 D50

Lab = XYZToLab(XYZdata/100, illuminant); % XYZ -> Lab空間への変換

[pathstr, fileName, exqt] = fileparts(dataFileName); % 拡張子を取り除いたファイル名を取得。
csvwrite([fileName '-SRGB.csv'], transpose(sRGB));

csvwrite([fileName '-Lab.csv'], transpose(Lab));