将RGB颜色转换为DMC牙线颜色

时间:2020-03-31 18:40:15

标签: r excel rgb

我正在尝试找到一种自动方法来计算什么DMC color最接近给定的RGB。我找到了这个网站:

http://www.damaniel.info/dmc/dmctorgb.html

这就是我想要的。但是,我必须分别键入每个RGB,并且我有很多。

我想使用公式自动进行计算。最好是在Excel或R中。我还没有Selenium的运气(并且现在没有太多的空闲时间来加快速度),因此对于在上述站点进行自动表单填充来说,这可能不是最佳选择。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

DMC R软件包( 1 )将帮助您解决此问题。看起来它仅支持十六进制代码,但是您可以使用<ul>包中的rgb函数转换RGB颜色(如果使用grDevices与{{ 1}})。

maxColorValue = 255

如果颜色很少,则可以将其包装成一个循环或应用函数,然后通过提取所需的元素(例如RGBrgb,将dmc值写入主对象等)

1 https://github.com/sharlagelfand/dmc

答案 1 :(得分:0)

此处有一个与DMC牙线颜色对应的RGB值列表:http://my.crazyartzone.com/dmc.asp。在找到的网页的源代码中也内置了一个列表(并且有所不同)。您可以在以下URL上查看该列表:http://www.damaniel.info/dmc/dmctorgb.js

为什么它们不同? RGB有不同的标准。现在最常见的一种称为sRGB(对于“标准RGB”)。他们可能使用了不同的标准。也许他们是从不同的来源获得颜色。无论如何,它们都是近似值:牙线颜色不同。因此,只需选择一个即可。

然后您需要做的就是获取RGB值并在其中一个列表中找到最接近的值。

这并非易事,因为很难定义“最近”。该网页似乎要做的是在RGB空间中使用欧几里德距离,但是该空间远非感知上统一的。因此,最好将输入的RGB颜色和牙线颜色表转换为感知距离相等的其他表示形式。我认为LAB空间(请参见?colorspace::LAB)可能是一个不错的选择,但我不知道它是否是最好的。如果您想深入了解细节,请阅读http://colorspace.r-forge.r-project.org/articles/color_spaces.html

这就是您需要做的:

  1. 将这些表之一的版本加载到数据框中。
  2. 将所有RGB值转换为LAB值,并将其添加到数据框。
  3. 编写一个函数,将输入的RGB值转换为LAB。
  4. 在数据框中找到最接近您想要的LAB值的LAB条目,并输出相应的牙线编号。

编辑为补充:在撰写本文时,@ dcruvolo指出了不错的dmc软件包。所以用那个! (也许您想更改距离的方式;您确实不想要RGB空间中的默认欧几里得距离。)

相关问题