分析图像中颜色(Java)的最佳方法是什么?

时间:2010-07-13 16:01:09

标签: java image colors analysis color-palette

我没有太多经验进行图像分析,所以我想我会问更开明的人:)

基本上我想做的是分析图像并找出最常见的颜色(显然是平均值)。

有人知道这样做的有效方法吗?如果可能的话,我想避免使用任何第三方库,但至少应该考虑所有内容。

就像我说的那样,我对图像分析没有多少经验,所以如果我不能正确理解你的答案,请耐心等待我!

我已经尝试了谷歌,但似乎没有任何类似我追求的东西。也许今天我的Google-Fu还不够好。

我真的很感激你们能给出的任何指示!

谢谢, 汤姆

3 个答案:

答案 0 :(得分:2)

大致了解如何做到这一点:
您可以使用java.awt.image.PixelGrabber从图像中逐个像素地抓取RGB int数组。

当您填充此数组时,您可以按需要进行排序(听起来像是内存密集型),并执行简单的功能来排序,计算它们等。

然后,您可以查看java.awt.Color,并使用Color(int, int, int)构造函数创建包含这些颜色的框(作为可视占位符),其下方出现的出现次数。

要获取颜色的十六进制值,可以使用如下字符串:

    String rgb = Integer.toHexString(color.getRGB());
    rgb = rgb.substring(2, rgb.length());

(子串是必要的,否则你会得到8个字符)

希望这能让你走上正轨!

资源:Color ClassImage Class

答案 1 :(得分:1)

考虑使用RGB而不是XYZ的“彩色立方体”。将立方体拆分为子立方体,但使它们全部重叠。确保它们的大小相同。易于记忆/计算的立方体图案将是从0-127,64-191,128-255在所有方向上的图案,总共27个立方体。对于每个立方体,找到图像中的颜色。

当您使立方体越来越小时,结果会越来越少,并开始收敛于最流行的颜色范围。获得该收敛后,取该范围的平均值即可获得“实际颜色”。

这和我在老板手臂周围盘旋的老板一样多的细节: - )

答案 2 :(得分:1)

我知道你试图避免使用第三方库,但请看看OpenCV。他们有一些好的东西w.r.t图像处理和分析。也许这对你有用。