matlab中makecform('srgb2xyz')和rgb2xyz()的区别

the difference between makecform('srgb2xyz') and rgb2xyz() in matlab

我想知道matlab在使用函数rgb2xyz()时做了什么? 我无法使用 rgb2xyz 转换矩阵重新生成结果。 此外,使用 makecform('srgb2xyz') 和使用 rgb2xyz() 有什么区别吗?他们产生不同的结果..

makecform('srgb2xyz') 的默认白点似乎是 D50,而 rgb2xyz 默认为 D65

>> applycform([.2 .3 .4],makecform('srgb2xyz','AdaptedWhitePoint',whitepoint('D65')))

ans =

0.0638    0.0690    0.1356

>> rgb2xyz([.2 .3 .4])

ans =

0.0638    0.0690    0.1356

>> applycform([.2 .3 .4],makecform('srgb2xyz'))

ans =

0.0617    0.0679    0.1024

>> rgb2xyz([.2 .3 .4],'WhitePoint','D50')

ans =

0.0616    0.0679    0.1025

请注意 makecform 的文档建议改用更新的 rgb2xyz。至于您关于使用矩阵重现结果的评论,请注意矩阵通常源自/应用于 linear 数据。如果您想重现结果,您还需要对 srgb 伽玛校正进行建模。