2015-04-01 60 views
0

假设我们有格式为(r,g,b)的[1..n]个像素的图像。如何找到最合适的X颜色来表示图像?

我们现在可以选择格式为(r,g,b)的X颜色来生成第二个相同大小的图像。 这些X颜色中的每一个都将代表n/x自由选择我们新图像的像素。

现在我们计算两幅图像上[1..n]中的每个像素对并将它们的色差求和sqrt(sqr(R1-R2),计算从原始图像到新生成图像的平方偏差)+ SQR(G1-G2)+ SQR(B1-B2))。

现在让我们假设我们分配了所有的X颜色,这样这个平方偏差的总和最小。

这里我的问题是:如何找到完美的X颜色,所以在完美的分布后,我们的平方偏差与其他颜色集相比是最小的?

如果某些信息丢失或不清楚(由于我的英语不好),请告诉我。

谢谢!

PS: 为了更好的理解,我添加了一个X = 4的例子。颜色的分布几乎是最优的,但我确定我没有选择完美的4种颜色来表示原始图像。

enter image description here

不幸的是我没有张贴图像的声誉,所以我增加了链接到它,而不是 Before-After example for X=4

+2

只是一个侧面说明:适当的*色差*比(一些)RGB色彩空间中的欧几里德距离复杂得多。 – dhke 2015-04-01 20:17:16

+0

您确定需要每种颜色来表示相同数量的像素(n/x)吗? – 2015-04-01 20:36:32

+1

这里有一个很好的文章和讨论... http://www.imagemagick.org/Usage/quantize/#quantize – 2015-04-01 20:53:03

回答

2

的问题称为color quantization,即给定的输入n颜色和给定大多数m < n输出颜色,找到颜色值的最佳分配,使总颜色误差总和最小。

最佳量化是NP hard,大致意味着没有已知的算法在一般情况下起作用并且不必尝试所有可能的组合。

有--however--各种近似算法,其中大部分是基于聚类算法,由于问题基本上等于在n点字段来定位m点以使得的总和(很少)m点之间的距离和所有(很多)n点之间的距离是最小的。

还要注意,在RGB空间中使用欧几里得距离决不是一个很好的度量来确定colorimetric color difference