知道一个颜色的 RGB 如何归类到特定颜色(如赤橙黄绿青蓝紫黑白灰)? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ksc010

知道一个颜色的 RGB 如何归类到特定颜色(如赤橙黄绿青蓝紫黑白灰)?

  •  
  •   ksc010 2014 年 12 月 11 日 8027 次点击
    这是一个创建于 4153 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在google找到的资料是
    先转换为HSV(这样容易一下),然后根据颜色范围表做匹配

    http://zh.wikipedia.org/wiki/HSL%E5%92%8CHSV%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4 #HSL和HSV色彩空间
    http://bbs.csdn.net/topics/390181776 #如何根据给定图像的像素(颜色)值,判断此像素是何种颜色?
    http://blog.csdn.net/wanggsx918/article/details/23272669 #HSV颜色模型及颜色分量范围
    13 条回复    2014-12-11 20:09:33 +08:00
    BGLL
        1
    BGLL  
       2014 年 12 月 11 日   1
    楼主自己不是都给出答案了吗
    根据S(饱和度)判断是否是灰、白、黑
    根据H(色相)判断是什么颜色:赤橙黄绿青蓝紫
    再看L(亮度)判断一下非纯色,比如棕色
    staticor
        2
    staticor  
       2014 年 12 月 11 日   1
    找出每个颜色的 Rgb三元组质心 然后计算 未知RGB 到几个质心的距离 最近者归此类。

    难点:
    距离规制的选取
    质心的计算
    BGLL
        3
    BGLL  
       2014 年 12 月 11 日   1
    @staticor 何苦再RGB下自找麻烦呢...
    换成HSL不简单多了
    ksc010
        4
    ksc010  
    OP
       2014 年 12 月 11 日
    @BGLL
    现在就是不知道有没有公开的范围表之类的
    rock_cloud
        5
    rock_cloud  
       2014 年 12 月 11 日
    @BGLL
    饱和度不是用来衡量纯度的么?
    亮度用来判断灰白黑吧?
    BGLL
        6
    BGLL  
       2014 年 12 月 11 日   1
    @ksc010
    色相:
    221-239 红
    0-15 红
    26-30 橙色
    31-40 黄
    41-60 绿(嫩绿)
    61-100绿(正绿)
    101-110 青
    111-120 蓝(海蓝)
    121-170 蓝(正蓝)
    171-200 紫
    201-220 红(洋红)
    BGLL
        7
    BGLL  
       2014 年 12 月 11 日
    @rock_cloud
    呃,是我写的不准确,
    不过亮度只能判断白黑,不能判断灰色,亮度跟色彩无关
    准确应该是饱和度判断灰度,饱和度越低色彩越淡,为0就是没有色彩,加上亮度判断黑白
    BGLL
        8
    BGLL  
       2014 年 12 月 11 日
    ksc010
        9
    ksc010  
    OP
       2014 年 12 月 11 日
    @BGLL 嗯 多谢
    rock_cloud
        10
    rock_cloud  
       2014 年 12 月 11 日
    @BGLL 对对对,饱和度为0时看亮度,亮度在中间部分就是灰色了。
    staticor
        11
    staticor  
       2014 年 12 月 11 日
    @BGLL 其实我也不懂什么是RGB 不过应该就是三个维度

    我稍稍看了下HSL\HSV 的wiki, 大意是将原来的三维色彩空间 (0,255) ^3 进行压缩, 即-

    将一个空间分类问题尽可能的压缩到一个二维平面(甚至一维直线上) 进行分类。


    所以我再原来基础上做个improvement

    @ksc010

    找到一个坐标变换函数 例如 Function = rsg - > hsv

    进行数据降维, 然后得到新的input数据。

    找出每个类别在新坐标系下的质心 然后计算 未知预测RGB 到几个质心的距离 最近者归此类。

    难点:

    距离规制的选取
    质心的计算

    hsv, hsl 由于已经成型, 所以变换函数应该不难找到
    Daniel65536
        12
    Daniel65536  
       2014 年 12 月 11 日 via iPhone
    太学术了,我给个简单的答案吧:

    http://www.guokr.com/article/437666/?page=2

    以上是一次大范围调查后得到的结果,总计222,500位用户人次共计命名了超过500万种颜色。
    通过这些数据,原作者计算出了各种颜色之间的分界线,并提供了关于每一个rgb值属于红黄蓝绿等基本颜色中的哪一个的表格。
    BGLL
        13
    BGLL  
       2014 年 12 月 11 日
    @staticor 通过公式直接把RGB转换成HSV后,H的值就已经是色相,也就是颜色了。而且是连续的,划出各颜色的取值范围就行了。还降维干什么,不需要空间分类啊
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1516 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 116ms UTC 16:46 PVG 00:46 LAX 09:46 JFK 12:46
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86