我正在开发一个程序,将随机选择的图像用作桌面背景。现在,并非所有图像都具有与计算机显示器相同的形状。我要解决这个问题的一个想法是设置一种在背景上与图像相似的背景色。我要如何找到这种颜色?

简单的RGB平均不考虑诸如监视器伽玛之类的非线性,并且不涉及人类视觉系统。

评论

这不是您的问题,但是您通常会在电视上看到通过在背景中使用模糊和拉伸的副本将4:3图像扩展到宽屏。可能对您有用。

#1 楼

您可以尝试某种形式的颜色量化算法,该算法通常会提取最主要的N种颜色。我见过最多的是修改后的中位数切割量化[.pdf],它是基于中位数切割量化[.doc]的。这种算法的好处在于,它不仅可以简单地对图像中的每种颜色取平均,还可以提取并丢弃其他高度突出的颜色,而不是让它们污染平均值。

概念是色彩空间(RGB空间)被划分为3D轴对齐的矩形区域(本文称为vbox),并通过拆分vbox进行迭代细分,尝试在拆分的每一侧保留一半像素。结果是颜色簇应该与图像中的颜色簇相对应。最大的颜色很可能与图像“在视觉上相似”。

该算法的JavaScript实现和演示称为Color Thief。