itwmw/color-difference

颜色差异:Din99,CIE76,CIE1994,CIEDE2000,CMC l:c

v1.2.0 2022-01-15 06:23 UTC

This package is auto-updated.

Last update: 2024-09-15 13:07:19 UTC


README

颜色差异

License PHP Version Support

一个用于计算颜色感知差异(ΔE)的库。

两种颜色之间的差异或距离是色彩科学中感兴趣的一个度量。它允许对以前只能用形容词描述的概念进行量化检查。对这些属性的量化对于那些色彩关键工作的人来说非常重要。常见的定义在设备无关的色彩空间中使用欧几里得距离。

支持以下测量

  • 欧几里得
  • 加权欧几里得
  • DIN99 (2007)
  • CIE76 (1976)
  • CIE94 (1994)
  • CIEDE2000 (2000)
  • CMC l:c (1984)

所有计算都在L*a*b*或L*C*H*空间中进行(如度量所规定)。

快速入门

此库可在Packagist上找到,如下所示

composer require itwmw/color-difference

使用方法

颜色差异度量通过以下函数实现

  • 欧几里得RGB getDifferenceEuclideanRGB(Color $color): float
  • 欧几里得Lab getDifferenceEuclideanLab(Color $color): float
  • 加权欧几里得RGB getDifferenceWeightedEuclideanRGB(Color $color): float
  • Din99 getDifferenceDin99(Color $color): float
  • CIE76: getDifferenceCIE76(Color $color): float
  • CIE94: getDifferenceCIE94(Color $color, CIE94 $type = CIE94::GraphicArts): float
  • CIEDE2000: getDifferenceCIEDE2000(Color $color): float
  • CMC l:c: getDifferenceCMC(Color $color, CMC $type = CMC::Imperceptibility): float
use Itwmw\ColorDifference\Color;
use Itwmw\ColorDifference\Lib\RGB;
use Itwmw\ColorDifference\Support\CIE94;
use Itwmw\ColorDifference\Support\CMC;

$color  = new Color(new RGB(255, 183, 255));
$color2 = new Color(new RGB(55, 65, 53));
echo('Din99:' . $color->getDifferenceDin99($color2) . "\n");
echo('CIE76:' . $color->getDifferenceCIE76($color2) . "\n");
echo('CIE94-GraphicArts:' . $color->getDifferenceCIE94($color2, CIE94::GraphicArts) . "\n");
echo('CIE94-Textiles:' . $color->getDifferenceCIE94($color2, CIE94::Textiles) . "\n");
echo('CMC-Acceptability:' . $color->getDifferenceCMC($color2, CMC::Acceptability) . "\n");
echo('CMC-Imperceptibility:' . $color->getDifferenceCMC($color2, CMC::Imperceptibility) . "\n");
echo('CIEDE2000:' . $color->getDifferenceCIEDE2000($color2) . "\n");
echo('Euclidean RGB:' . $color->getDifferenceEuclideanRGB($color2) . "\n");
echo('Euclidean Lab:' . $color->getDifferenceEuclideanLab($color2) . "\n");
echo('Weighted Euclidean RGB:' . $color->getDifferenceWeightedEuclideanRGB($color2) . "\n");

CIE94和CMC l:c接受一个可选参数,用于调整评估的准度量。CIE94提供了应用类型选择,可以是'graphicArts'或'textiles',以符合其同名的使用。CMC l:c提供了阈值选择,可以是'acceptability'或'imperceptibility',以细微区分颜色之间的可察觉差异。

参考白

使用referenceWhite为颜色类支持指定参考白

  • A; //白炽灯/钨丝
  • B; //中午的旧直射阳光
  • C; //旧日光
  • D50; //ICC配置文件PCS
  • D55; //上午日光
  • D65; //日光,sRGB,Adobe-RGB
  • D75; //北天日光
  • E; //等能量
  • F1; //日光荧光灯
  • F2; //冷荧光灯
  • F3; //白荧光灯
  • F4; //暖白荧光灯
  • F5; //日光荧光灯
  • F6; //浅白荧光灯
  • F7; //日光荧光灯,D65模拟器
  • F8; //西尔维亚F40,D50模拟器
  • F9; //冷白荧光灯
  • F10; //Ultralume 50,飞利浦TL85
  • F11; //Ultralume 40,飞利浦TL84
  • F12; //Ultralume 30,飞利浦TL83
new Color(new RGB(255, 183, 255), referenceWhite: ReferenceWhite::D65);

RGB工作空间

使用RGBSpace为颜色类支持指定RGB工作空间

  • Adobe RGB (1998)
  • AppleRGB
  • 最佳RGB
  • Beta RGB
  • Bruce RGB
  • CIE RGB
  • ColorMatch RGB
  • Don RGB 4
  • ECI RGB
  • Ekta Space PS5
  • NTSC RGB
  • PAL/SECAM RGB
  • ProPhoto RGB
  • SMPTE-C RGB
  • sRGB
  • 宽色域RGB
new Color(new RGB(255, 183, 255), RGBSpace: RGBSpace::sRGB_D65);

通常,RGB工作空间需要与参考白相匹配。

默认为

new Color(new RGB(255, 183, 255), referenceWhite: ReferenceWhite::D65, RGBSpace: RGBSpace::sRGB_D65);