色空間の変換(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));