从图像中获取主色并丢弃背景

时间:2009-09-14 14:20:13

标签: algorithm image colors

从图像中获取主色的最佳(结果,而不是性能)算法是什么。该算法应该丢弃图像的背景。

我知道我可以构建一个颜色数组以及它们在图像中出现的数量,但我需要一种方法来确定背景是什么,前景是什么,并且在阅读时只考虑第二个(前景)主导色彩。

这个问题非常困难,特别是对于渐变背景或带图案的背景(不是普通的)

4 个答案:

答案 0 :(得分:8)

将前景与背景隔离超出了这个特定答案的范围,但是......

我发现将像素化滤镜应用于图像会得出一组非常好的“平均”颜色。

之前

http://img12.imageshack.us/img12/825/pixelate1a.jpg

http://img12.imageshack.us/img12/8127/pixelate2.jpg

我有时会使用这种方法来获得具有特定情绪的颜色托盘。我首先找到一张照片,其中包含我正在使用的一般色调,像素化,然后从生成的图像中进行采样。

(感谢this page了解通过Google图片搜索找到的图片)

答案 1 :(得分:6)

The colour summarizer是关于这个主题的信息的一个非常好的地方,更不用说他们看似免费的XML Web API,它将为您选择的图像生成描述性颜色统计数据,并使用HTML中的样本报告以下格式或者作为XML ......

  • 我的图片中的平均色调,饱和度和值是多少?
  • 什么是最能代表图像的RGB颜色?
  • RGB和HSV直方图是什么样的?
  • 图像的人类可读颜色描述是什么(例如深蓝色)?
  

此实用程序的目的是生成总结一个的元数据   图像的颜色特征包含在图像数据库中,   比如Flickr。特别是该工具用于生成   Flickr的色域组的元数据。

enter image description here

根据我的经验,这个工具仍然错过了“人类可读”/明显的“主要”颜色,很多时候。傻机!

答案 2 :(得分:5)

我会说这个问题比“非常难”更接近“不可能”。我能想到的唯一方法是假设图像的背景可能由相似颜色的实体块组成,而前景可能由较小的不同颜色块组成。

如果这个假设通常是正确的,那么你可以根据它们与相邻像素的相似或不相似来扫描整个图像并加权像素。换句话说,如果像素的邻居(可能在某个任意半径内)都是相似的颜色,则不会将该像素合并到整体估计中。如果邻居的颜色往往非常不同,那么你可能会对像素进行大量加权,这可能与差异程度成正比。

这可能不会很完美,但肯定至少会排除大片相似颜色。

答案 3 :(得分:1)

就我对图像处理算法的了解而言,没有一定的方法来获得“前景”;它只能在对象之间获得边框。您可能需要使用平均值或建议的数组计数方法。在这种情况下,你需要为饱和度更高的颜色提供更高的“得分”,因为它们更加突出。