zoukankan      html  css  js  c++  java
  • 人脸光照调整之DCT变换

    人脸光照调整一直是人脸识别问题中的难点,作者就不同处理方法,并结合其在实际应用中的表现,在此分章节谈一些个人看法,有不当之处,还望各园友指正。

    光照调整主要分在频率域和空间域的处理,频率域中有DCT变换、小波变换等。而在空间域有直方图均衡化、Gamma校正等。作者在此只介绍一些主流并有较广适应范围的方法。首先,我们来谈谈DCT变换吧:

    DCT(离散余弦变换)对高相关性的数据(信号),具有非常好的能量聚焦性,经过变换,信号能量的绝大部分被集中到变换域的少数系数上。因此,对于受光照影响的图像,我们只需要修改很少的频域系数,就可以对图像的光照做出较好调整,避免了需要调节多个参数以适合不同图像的问题,操作简便易行。

    1.       一维DCT变换的实现步骤:

    1)        计算DCT变换的点数,并对时域空间进行延拓;

    2)        调用一维傅里叶变换;

    3)        调整系数并存储;

    2.       二维DCT变换的实现步骤:

    1)        计算进行二维图像DCT变换的高度和宽度,如果不是2的整数次幂则要进行调整,并计算在水平和垂直方向上变换时迭代的次数;

    2)        用一维DCT变换进行水平方向上的变换

    3)        用一维DCT变换进行垂直方向上的变换;

    4)        得到二维离散余弦变换系数并存储。

    3.       试验结果:

    图1是对高曝光图像的二维DCT变换结果,其中(b)是DCT变换后的频谱图像,可以看出图像的低频能量都集中在左上角区域,而向右下角方向,频率越来越高。图(c)和原始图像相比,脸上(左脸)的高光照部分得到了一定的抑制。

                        

      (a)原图        (b)DCT变换的频谱图   (c)将频谱图中的低频减去并反DCT变换的结果

                        图1 高曝光图像进行DCT变换的结果

    图2是光照不足的二维DCT变换结果,原始图像中左边人脸基本看不到什么信息,经过处理后可以看到左眼信息。

                                                 

            (a)原图        (b)DCT变换的频谱图   (c)将频谱图中的低频减去并反DCT变换的结果

    图2 “阴阳脸”图像进行DCT变换的结果

    4.       DCT方法小结:

    DCT变换的方法,只需要对频域图像做极少的调整(如将最左上角的频率置0),就可以达到对整体光照的调整,不需要像在空间域中那样,不断的调整参数,修改阈值等步骤,这是它的优点。但是,DCT变换的时间稍长,而且对于光照复杂度比较大的图像,其调整的能力也比较有限。当然,也有不少人对其进行了改进,比如在Log域的DCT变换等。网上也有不少关于其改进的文献,在此就不一一赘述。作者在此介绍的方法,代表了频率域调整光照的一般思路,希望对大家有作用。

     

  • 相关阅读:
    c#,简单的冒泡排序
    uwp,c#,listView与gridView列表控件进阶
    使用gensim之KeyedVectors操作词向量模型
    python时间戳
    通过Python查找目录下含有指定字符串的所有文件
    聚类之DBSCAN
    使用pyhanlp进行分词
    将Python对象和变量保存在本地
    通过selenium进行博客备份
    matplotlib颜色代码
  • 原文地址:https://www.cnblogs.com/ImageVision/p/2425998.html
Copyright © 2011-2022 走看看