【发布时间】:2011-03-18 03:50:43
【问题描述】:
我在设计颜色检测系统方面有点卡住 - 我不太想办法轻松做到这一点。
-
基本上,我有一个图像库,我想按颜色排序。因此,如果用户指定“按蓝色排序”,那么蓝色最多的图像将出现在结果的顶部,而蓝色最少的图像将出现在底部。
问题是图像不都是一种颜色,所以它同时做两件事:
1 - 找到图像中最蓝的部分
2 - 对该蓝色进行排名(基于色调和该颜色的数量)。
我尝试了大约 3 或 4 种不同的方法,但结果各不相同 - 但没有一种效果很好,其中 2 种是相当数学的算法(它们在纸上的效果都比在实践中好得多哈哈)。
-
我可以通过哪些不同的方式来处理整个过程?我可能错过了一些非常明显的方法 - 任何帮助或想法将不胜感激:)
-
编辑:感谢所有回复 - 这是我迄今为止尝试过的:
获取整个图像的平均 rgb 值并将其与蓝色进行比较。使用归一化 rgb 3 空间向量进行比较并找出它们之间的距离。这效果最差,没有蓝色的图像很容易出现在具有部分非常强烈的蓝色的图像之上。
找到主要颜色并将其与蓝色进行比较(再次使用 3 个空间矢量距离)。这不起作用,因为图像中可能有一个大的蓝色部分不是主要颜色部分中最多(或顶部一对)的部分。
找到接近蓝色的像素,对所有这些像素进行平均并将结果与实际蓝色进行比较。
查找所有接近蓝色的像素,增加计数并根据计数/总像素查找百分比。
【问题讨论】:
标签: c++ algorithm colors detection