首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >确定照片显著颜色的算法

确定照片显著颜色的算法
EN

Stack Overflow用户
提问于 2011-08-28 22:07:09
回答 4查看 819关注 0票数 4

当我们看一组树的照片时,我们能够识别出照片主要是绿色和棕色的,或者对于海洋的照片,我们能够识别出它主要是蓝色的。

有没有人知道一种算法可以用来检测照片中的突出颜色?

我可以设想在RGB空间或类似的空间中的3D聚类算法。我想知道是否有人知道现有的技术。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-28 22:49:32

将图像从RGB转换为具有亮度和饱和度分离(HSL/HSV) http://en.wikipedia.org/wiki/HSL_and_HSV的颜色空间

然后找到每个像素的色调分量的主导值。为每个像素的色调值制作一个直方图,并分析峰值落在哪个角度区域。例如,象限中180度到270度之间的大峰值意味着图像中有很大一部分蓝色。

确定一种主色可能有几个困难。病理示例:左半部分为蓝色,右半部分为红色的图像。而且,色调显然不能很好地处理灰度。因此,具有50%白色和50%黑色的棋盘图像将受到两个问题的影响:对于黑/白图像,色调是任意的,并且有两种颜色恰好是图像的50%。

票数 4
EN

Stack Overflow用户

发布于 2011-08-28 22:20:10

听起来您想要从计算图像的image histogramcolor histogram开始。主色将与直方图中的峰值相关。

票数 3
EN

Stack Overflow用户

发布于 2011-08-28 22:28:17

您可能想要将图像从RGB更改为索引,然后您可以使用常规直方图并检测图片(正如您可能已经知道的那样,Matlab使用rgb2ind()执行此操作),然后问题将简化为常规的“在数组中查找峰值”。

然后n= hist(Y,nbins)将向量Y中的元素放入10个等间距的容器中,并返回每个容器中元素的数量作为行向量。

N中的这些值将给出每个bin中有多少个元素。然后,问题就是调整bin的数量以使其足够宽,以及每个bin中有多少元素会使您将bin视为主要颜色,然后将包含这些元素的bin,计算与其中间相对应的索引,并再次将其转换为RGB。

无论您在处理过程中使用什么,都可能具有与这些功能类似的功能

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7221452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档