检测图像是否通常为红色,绿色,蓝色或黑色

时间:2011-06-24 15:15:20

标签: image graphics image-processing colors

我正在处理小图像,这些图像将是红色,绿色,蓝色或黑色(想想卡片在4色套牌中排名)。什么是确定图像颜色的好的快速算法?

对于一组示例输入,请参阅here,但图像可以缩放等等,因此它们不会那么清晰。

3 个答案:

答案 0 :(得分:2)

这些是你正在使用的完全图像吗?如果是这样,所有图像上都会有一个像素被着色?我在想这套衣服的位置。看看西装应该是哪一个像素,它会告诉你卡片的“颜色”。

更一般的方法可能包括分析整个图像(缓慢但有效),缩小图像并分析每个像素(如果您最终得到一个小图像但缩放可能影响颜色则更可行),或随机采样 n 像素(或像素的行/列),如果提前知道阴影的颜色,可能会有遮罩的东西,但是你需要一般方法吗?

哦 - 另一个想法:你是否控制输入图像的来源?也许你可以使用数字覆盖一些图像元数据标签以指示“颜色”。这是一种作弊,因为没有真正的图像处理,它很容易被剥离/修改标签,但它可能是最快的方法。

答案 1 :(得分:1)

这适用于一个像素:

def get_ishness(r,g,b):
    h,s,v = rgb_to_hsv(r,g,b) #h from 0-360, s and v from 0-100
    if v < 50: return 'black'
    if s < 15: return None
    if h < 10: return 'red'
    if 80 < h < 100: return 'green'
    if 210 < h < 230: return 'blue'
    return None

对于整个图像,我总结了红色,绿色,蓝色和黑色的像素,并返回像素最多的颜色。

答案 2 :(得分:1)

这篇文章似乎已经解决,但如果你不介意我的2美分......

当我接受它时,你需要一个通用的方法,而你不知道图像是预先提供的。虽然已经发布的答案应该足够快,可以通过一些调整进行快速编码,如果你仍然遇到问题我建议你使用自组织地图:http://davis.wpi.edu/~matt/courses/soms/http://www.ai-junkie.com/ann/som/som1.html

可能需要一些(无监督的)训练时间来获得一个像样的地图/识别器(嘿,它毕竟是一个神经网络),但我遇到了一个像你一样的问题而且它们对我来说效果很好(很容易适应,灵活的不同照明等。)。