获得最常见的图像颜色

Ser*_*gio 9 java colors cbir

我想从图像中获得最常见的颜色.我使用Java,我希望拥有最主要的颜色.有没有任何cbir java库来做这个?

谢谢

dog*_*ane 9

你想要的准确度如何?您可以使用Bozhos的方法并在整个图像上循环,但对于大图像来说这可能会很慢.有16777216个可能的RGB值,并且在Map中为它们保留计数器效率不高.

另一种方法是使用图像重新取样以getScaledInstance将其缩小到较小的版本,例如1x1图像,然后用于getRGB获得该像素的颜色.您可以尝试使用不同的重采样算法,例如SCALE_REPLICATESCALE_AREA_AVERAGING,以查看最适合您的方法.


Boz*_*zho 2

您可以循环BufferedImage(两个循环 - 一个从 0 到宽度,一个从 0 到高度),并获得调用getRgb(x, y)。然后计算每个不同的值。您可以使用 a Map(键 = 颜色,值 = 出现次数)。

  • 是的。可能只是我的电脑,但我的地图中大约有 400 万种颜色后出现了 OOM。 (2认同)