Algorithm 从丢弃背景的图像中获取主色调

Algorithm 从丢弃背景的图像中获取主色调,algorithm,image,colors,Algorithm,Image,Colors,从图像中提取主色调的最佳(结果,而不是性能)算法是什么。该算法应丢弃图像的背景 我知道我可以建立一个颜色数组以及它们在图像中出现的数量,但我需要一种方法来确定什么是背景,什么是前景,并且在阅读主色调时只记住第二个(前景) 这个问题非常困难,特别是对于渐变背景或带有图案的背景(不是普通的)就我对图像处理算法的知识而言,没有确定的方法来获得“前景”;只能获取对象之间的边界。您可能需要使用平均值或您建议的数组计数方法。在这种情况下,你会希望给饱和度更高的颜色一个更高的“分数”,因为它们更突出。将前景与

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

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


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

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

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

我发现,对图像应用像素化过滤器将绘制出一组非常好的“平均”颜色

以前

之后

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


(感谢通过谷歌图像搜索找到的图像)

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

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

这可能并不完美,但它肯定至少会排除大量类似的颜色。

对于这方面的信息来说是一个非常好的选择,更不用说它们看似免费的XML Web API,它将为您选择的图像生成描述性的颜色统计信息,用HTML或XML格式的样例报告以下内容

  • 我的图像中的平均色调、饱和度和值是多少
  • 最能代表图像的RGB颜色是什么
  • RGB和HSV直方图是什么样的
  • 图像的可读颜色描述是什么(例如深蓝色)
此实用程序的目的是生成汇总 包含在图像数据库中的图像颜色特征, 比如Flickr。特别是,该工具用于生成 Flickr颜色字段组的元数据


但以我的经验。。很多时候,这个工具仍然忽略了“人类可读的”/“明显的主”颜色。愚蠢的机器

如果前景很清晰,而背景稍微失焦,那么原始图像中就有足够的信息从背景中确定前景。话虽如此,我也不知道具体怎么做:)这是可以做到的,但它需要两个或两个以上的立体图像或深度图。我知道这项技术,但这不是我问题的答案。上述方法最简单的方法是:@product=product.find(params[:id])@image=Magick::ImageList.new(@product.photo.path)@image=@image.quantization(quantization_level)@draw:pixelation这样的像素基本上只是将像素平均成块,所以它并没有真正回答这个问题。@MusiGenesis——我确实指出它不会从背景中找到前景(我回答的第一句话),但是它是一种从图像(问题的第一句话)中找到主色调的简单而有用的方法