首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RGB颜色的CIELUV均匀随机采样

RGB颜色的CIELUV均匀随机采样
EN

Stack Overflow用户
提问于 2021-04-08 03:20:23
回答 1查看 70关注 0票数 0

在电脑上随机选择一种颜色比我想象的要难一点。

对于R、G、B,采用0..255的均匀随机抽样的天真方式往往会绘制出许多相似的绿色。从像CIELUV这样的感知均匀的空间进行采样是有意义的。

一个简单的方法是在规则网格上采样L,u,v,并确保颜色实体包含在边界中(我已经看到了不同的边界)。如果样本落在嵌入的RGB实体之外(通过映射XYZ然后RGB进行测试),则拒绝它,然后再次采样。如果您拒绝的次数超过某个任意的阈值次数,那么您可以满足于一个杂乱无章但有保证终止的“救助”选择(就像天真的过程)。

我认为,测试样本是否在RGB内需要确保测试黑色的特殊情况(一些实现最终在除以零时保持沉默)。如果为L=0,并且u!=0或v!=0,则需要拒绝样本,否则将在Luv空间中对L=0平面进行过采样。

这个过程有明显的缺陷吗?它似乎是有效的,但我确实注意到,我滚动黑色的次数比我认为有意义的次数更多,直到我考虑到在这种情况下发生了什么。谁能给我指出CIELUV网格的正确边界,以确保我是封闭的RGB实体?

对于那些不知道它的人来说,一个有用的参考:https://www.easyrgb.com/en/math.php

EN

回答 1

Stack Overflow用户

发布于 2021-08-29 19:15:20

这样做的关键问题是,您需要界限来拒绝落入RGB之外的样本。我可以在这里找到它(页面上很好的演示,API提供了方便的函数):https://www.hsluv.org/

在使用RGB对CIELUV进行均匀采样时,我注意到了以下几点:

  • 大多数颜色是绿色和紫色(这是真的,与RGB边界无关)
  • 您很难对我们认为的黄色(非常小的体积,高亮度,高色度空间)进行采样

我实现了各种策略,专注于采样色调(当我们考虑“采样颜色”时,这是我们真正想要的),根据亮度的最大色度进行加权。这使得像彩色浅黄色这样的颜色更容易捕捉,并避免对绿色和紫色进行过采样。你可以在这里的操作中看到这些方法(选择“随机化颜色”):

https://www.mysticsymbolic.art/

颜色随机化器的来源:https://github.com/mittimithai/mystic-symbolic/blob/chromacorners/lib/random-colors.ts

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66992830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档