将对象分布在多维数据集中,以使它们之间具有最大距离


11

我正在尝试使用彩色相机来跟踪空间中的多个对象。每个对象将具有不同的颜色,为了能够在每个对象之间很好地区分,我正在尝试确保分配给对象的每种颜色与其他任何对象上的任何颜色都尽可能不同。

在RGB空间中,我们有三个平面,所有平面的值都在0到255之间。在这个立方体,我想分布种颜色,以便它们之间的距离与其他尽可能。另外一个限制是,在种颜色中应包含和(或尽可能接近),因为我想确保我的所有对象采用任何一种颜色,因为背景可能是这些颜色之一。Ñ 0 0 0 255 255 255 Ñ ñ - 2 000/255255255ñ000255255255ññ-2

也许,(包括黑色和时间)不会多14左右比。ñ

在此先感谢您获得这些颜色的任何指示。


2
我认为您应该只考虑一个二维空间,因为您的相机可能无法区分颜色相同但强度不同的对象。但是,这个问题很有趣。
斯特凡希门尼斯

这三个维度来自三个颜色平面:红色,绿色和蓝色,它们各自可以独立采用0-255之间的值。在RGB空间中,我认为没有强度。还有其他一些色彩空间可能更适合于此,因为它们可能只是2D的,尽管我对此并不了解。
马特

如果您可以精确控制投射在对象上的光量,则可以。在RGB空间(100、100、100)和(200、200、200)中,我称之为强度不同的相同颜色(灰色)。
斯特凡希门尼斯

@ Matt,Stephane似乎建议您使用HSL或HSV多维数据集而不是RGB多维数据集。颜色或多或少都已映射,但是您可以忽略2D映射的S分量。我会进一步建议在所选的SV或SL上单独在H上使用1D比例尺,这将使您的颜色保持类似的美学“色调”。一维均等分布算法也更简单!
杰森·克莱班

1
是的,最大成对距离。@ uosɐſ HSV实际上似乎比RGB返回更好的结果。即使使用所有三个HSV平面,我也可以根据距每种理想颜色的距离更好地选择各个颜色。
马特

Answers:


4

除非我没有记错,否则所有颜色都将在RGB立方体的表面上,原因是所有电荷都出现在电导体的表面上。这建议了以下确定颜色的方法:

  • 将RGB颜色空间解释为XYZ笛卡尔空间;
  • 将候选颜色解释为带电粒子,例如电子;
  • 通过模拟退火找到系统的低能态;

对于,高度精确的仿真应该是相当快; 您可以使用Runge Kutta技术,甚至只需很小的时间步长即可获得Euler的方法(更容易实现/理解)。我可能会建议针对感兴趣的数值积分/正交技术的“数字食谱”系列。ñ15

一旦粒子收敛,就可以通过将点解释为颜色来安排颜色。最初,粒子可以以很小的间距随机排列在立方体的表面上(有助于收敛和稳定性问题)。将小组放在多维数据集的面上应该可以。

为了避免陷入局部(而不是全局)最小值,可以在收敛后“脉冲化”一些小的随机电场,并查看系统是返回相同配置还是返回不同配置。在这种情况下,随机放置的粒子不太可能做到这一点,但有可能。

编辑:

正如评论中所指出的那样,在离散情况下,最优解决方案应仅位于表面上的假设可能并不适用于所有几何形状。

幸运的是,这与上述其他技术无关。粒子可以最初放置在任何地方。只是在成对的粒子之间留出一些空间以保持稳定性和覆盖性,然后使系统迭代以收敛,然后进行几次脉冲(强度可能会增加)以查看是否可以使系统收敛到某些不同的(可能更好)的配置。

还要注意,我相信这种方法将使“(成对的?)粒子对之间的平均距离”这样的值最大化。如果要最大化粒子对之间的最小距离或粒子对之间的一些其他平均值(几何?),则可能无法提供最佳解决方案。

无论如何,我觉得这种技术将为您提供一种简单的方法来提出一组近似最佳的颜色……在您的用例中,可能不需要实际的“最佳”解决方案。自然,如果需要精确且可证明是最优的解决方案,则数值模拟可能不是最佳方法。


3
ñ=9

@SaeedAmiri有趣的观察...与通常的电荷密度物理讨论相比,问题很可能与该问题的离散性质有关。但是,值得注意的是,没有理由没有通过物理退火进行数值模拟仍无法找到您描述的解决方案。编辑答案以反映您的评论和这种见解。
Patrick87

我将看看是否可以在matlab(使用simulannealbnd)中弄清楚该如何做。我想象中的困难在于将问题转换成matlab可以尝试最小化的数学函数。
Matt

ps我最初的想法是使用多面体(二十面体)的顶点,因为我还认为解决方案可能会将它们放在表面上,但是后来我不确定那是否是正确的。
马特

在matlab中,我编写了一个函数,该函数给定了一组(x,y,z)点,它计算出该组中每对点之间成对欧几里得距离的总和。然后我将其除以结果,然后使用matlab找出该函数的最小值。但是matlab并没有得到正确的结果,例如,对于4个3D点,它返回以下x1,x2,x3,x4; y1,y2 ....点(0-1范围):0.0001、0.0031、0.9993、0.9920 ; 0.9970 0.0004 0.9919 0.0030; 0.0030 0.0003 0.9973 0.5756。尽管如此,我认为这是一个matlab问题,因此我会接受。
马特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.