【发布时间】:2012-06-19 14:57:06
【问题描述】:
我想从 BufferedImage (Java) 中提取颜色直方图。我不想为红色、绿色和蓝色提取单独的直方图,但我想要一个包含所有可用颜色(包括分箱)的直方图。如果相邻的垃圾箱看起来彼此相似,那就太好了。
我不知道如何定义垃圾箱,因为颜色不是一维的。另一个问题是颜色分配到它的 bin。
有人有想法或图书馆来实现它吗?
最好, 迈克尔
【问题讨论】:
我想从 BufferedImage (Java) 中提取颜色直方图。我不想为红色、绿色和蓝色提取单独的直方图,但我想要一个包含所有可用颜色(包括分箱)的直方图。如果相邻的垃圾箱看起来彼此相似,那就太好了。
我不知道如何定义垃圾箱,因为颜色不是一维的。另一个问题是颜色分配到它的 bin。
有人有想法或图书馆来实现它吗?
最好, 迈克尔
【问题讨论】:
您可以分别计算红色、绿色和蓝色的直方图,然后找到它们的平均值并绘制结果图。看看this article。
或者您可以创建一个立方体 3d 直方图(每条边对应一种颜色)。这是它的result (java)。
【讨论】:
只是一个想法: 打开一些图像编辑器(例如 Paint)并查看他们的颜色选择器以了解如何排列颜色。
我想我会按 HUE (enter link description here) 来排列它们,因为它是一种一维排列,很容易与“颜色箱”的概念相匹配,并且它还会以彩虹的方式将相似的颜色彼此靠近。 但是,仅使用色调(放弃亮度和饱和度)意味着您可能会将图片中看起来非常不同的颜色放在同一个 bin 中。
另一种方法是通过在完整 RGB 信息上使用某种静态cluster analysis(例如,使用所有 3 个 RGB 组件)自动将图片中的所有颜色“聚集”到固定数量的 bin(例如 16 个)中然后在相应的直方图栏下方显示每个聚类的 16 个“平均颜色”的图形。
【讨论】: