zoukankan      html  css  js  c++  java
  • 读《人脸自动机器识别》

    以下是《人脸自动机器识别》(2009年1月出版,段锦著)第40、41页的内容

    4.1.1 RGB颜色模型

      RGB模型是人们最常用的颜色模型。国际照明委员会(CIE)选择红色(波长700.0nm)、绿色(波长546.1nm)、蓝色(波长435.8nm)三种单色光作为表色系统的三基色,这就是RGB色系坐标系。一般摄像系统都采用RGB坐标系,图像的颜色一般也用此色系坐标表示。通过以RGB坐标系为基础描述其他色系坐标系,将其他色系坐标系的基色描述为RGB三色的线性或者非线性函数。在RGB模型中,人表现出来的颜色受光照的影响,但对同一点,在不同亮度下的相应值是成比例的。也就是说,同一点在不同光照条件下具有相同的色彩,只是亮度不同而已。RGB颜色空间可以直接通过线性变化,转化为灰度图像

      Gray = 0.299 × R + 0.587 × G + 0.114 * B

    4.1.2 YIQ模型

      YIQ是NTSC制的颜色空间,其中亮度信息包含在Y中,而色度信息(包括色彩和纯度)则结合在I和Q中。IQ平面垂直于Y轴,I包含橙—表色彩信息,提供鲜艳色调的明暗度,Q给出绿—品红色彩信息。

      Wang和Brandstein对YIQ空间中人脸肤色的分布作为分析,得到如下结论:

      如果选择一个比较合理的IQ平面,则人脸颜色的投影可以被限制在一个较小的范围内。下图是人脸颜色在IQ平面的颜色分布,其中,浅色区域表示人脸,深色区域表示背景。

      图片
      YIQ颜色模型和RGB模型之间模型之间可以进行线性转换,其转换公式为

    图片

    摘自《人脸自动机器识别》 科学出版社 段锦

    经过MFC代码测试,上图“人脸的IQ颜色分布”有误,测试代码如下:
     CClientDC dc(this);
     int count = 0;
     for(int r = 0; r < 256; r++)
     {
      for(int g = 0; g < 256; g++)
      {
       for(int b = 0; b < 256; b++)
       {
        int I = 0.596 * r + -0.275 * g + -0.321 * b;
        int Q = 0.212 * r + -0.528 * g + 0.311 * b;
        if(I > 60 && I < 85 && Q > 15 && Q < 38)//这个范围大于上图中的人脸颜色范围
                        //这种情况下尚且不对,何况图中的范围
        {
         dc.SetPixel(count % 550, count / 550, RGB(r, g, b));
         count++;
        }
       }
      }
     }
    测试结果显示,以红色比较多,没有其他颜色,显然上图中的结论是错误的,不知道是Wang和Brandstein研究错了,还是《人脸自动机器识别》作者弄错了,又或者是我的代码有问题。

    测试结果如下

    图片

  • 相关阅读:
    谷歌浏览器本地调试时调用服务跨域
    SVN提交时忽略不必提交的文件夹和文件,如node_modules
    热点链接实现不规则菜单
    easyui分页控件的应用
    Filter过滤器的应用
    SVG绘图学习总结
    VS2010无法调试页面问题
    java学习
    webservice配置
    jQuery
  • 原文地址:https://www.cnblogs.com/yjh4866/p/6253906.html
Copyright © 2011-2022 走看看