我使用BufferedImage
来保存10 x 10的图像样本。使用此图像,我想找到代表此图像的近似平均颜色(作为Color
对象)。目前,我有两个关于如何实现此功能的想法:
我非常喜欢第一种解决方案的想法,但我不确定它会有多准确。第二种解决方案就像它们来的那样准确,但它看起来非常单调乏味。我也相信getColor
命令是大规模的处理器密集型(我平均每秒执行640至1920次平均值),如果我错了,请纠正我。由于这种方法非常耗费CPU,我想使用一种相当有效的算法。
答案 0 :(得分:1)
这取决于你的平均值。如果你有一半像素红色和一半像素蓝色,平均值是紫色吗?在这种情况下,我认为您可以尝试添加所有值并将其除以您拥有的像素数。
然而,我怀疑你想要主导色而不是平均色吗?
在这种情况下,一种替代方案可以是将颜色分为“桶”(例如,间隔为100,或者在极端情况下为3,一为红色,一为绿色,一为蓝色),以及创建一个直方图(一个带有计数的简单数组)。然后你会拿到计数最多的桶。
注意事项1.请记住,缩放通常是通过抽样进行的。由于您的图像非常小,因此您已经丢失了大量信息。进一步缩小可能只是采样几个像素而不是真正平均所有像素。更好地检查缩放过程使用的算法。