基本思路:

图像处理中,最常用的颜色空间是RGB模型,常用于颜色显示和图像处理,三维坐标的模型形式,非常容易被理解。而HSV模型,是针对用户观感的一种颜色模型,侧重于色彩表示,什么颜色、深浅如何、明暗如何。将RGB转换为HSV模型,H是色彩、S是深浅, S = 0时,只有灰度、V是明暗,表示色彩的明亮程度。为解决过曝光问题,我们拟在V分量上做统计处理。

将得到的人脸图像从RGB空间转换到HSV空间,同时在HSV空间的V分量上利用局部均值直方图指标进行判定,具体实现为:先去除噪声,在V(0-255)分量人脸图像采用8*8小窗口遍历整个图像,求得该窗口里像素的均值,若此均值在区间[55,240](可适当调整)外, 则认为该局部区域为过曝光区域,以此遍历整个V分量并统计过曝光区域个数,最终除以总的遍历次数得到最终评判指标,若该指标大于预先设定的阈值则认为该人脸图像为过曝光,反之,则为正常图像。

//HSV颜色空间上图像过曝光检测,如果图像过曝光,返回过曝光值
double overExposeDetect(Mat imgMat){Mat hsvSpaceImage;Mat hsvImageVChannels; vector<Mat> channels;double thre = 0.175; //阈值if (imgMat.channels() != 1){cvtColor(imgMat, hsvSpaceImage, CV_BGR2HSV); // hsv转换}else{hsvSpaceImage = imgMat.clone();}split(hsvSpaceImage, channels); // 分离颜色通道hsvImageVChannels = channels.at(2); // 得到V通道图像unsigned int step = 8; // 以8*8小窗口遍历V通道图像, V通道包含亮度信息uchar *pt;int imageOverExposeBlockNum = 0;int imageOverExposeBlocks = 0;unsigned int rowTraNum = hsvImageVChannels.rows/step * step;unsigned int colTraNum = hsvImageVChannels.cols/step * step;//遍历for (unsigned int i = 0; i < rowTraNum; i += step){pt = hsvImageVChannels.ptr<uchar>(i);for (unsigned int j = 0; j < colTraNum; j += step){Mat imageBlock = Mat(hsvImageVChannels, Rect(j, i, step, step));double mea = mean(imageBlock)[0]; // 求小矩形的均值if (mea > 233.0 || mea < 53.0){//imageOverExposeBlockVec.push_back(Rect(j, i, step, step));//cout << "Mean: " << mea << endl;imageOverExposeBlockNum ++;}imageOverExposeBlocks ++;}}return imageOverExposeBlockNum/(double)imageOverExposeBlocks * 100;  //返回一个归一化到0-100之间的值}

此方法缺陷:有些图片 不是过曝,但是非常灰暗(即计算出阈值在17.5以下的数),此方法无法筛选出,于是在方法最后加一条判断。

bool overExposeDetect2(Mat imgMat)
{Mat hsvSpaceImage;Mat hsvImageVChannels;vector<Mat> channels;double thre = 0.175; //阈值if (imgMat.channels() != 1){cvtColor(imgMat, hsvSpaceImage,CV_BGR2HSV); // hsv转换}else{hsvSpaceImage = imgMat.clone();}split(hsvSpaceImage, channels); // 分离颜色通道hsvImageVChannels = channels.at(2); // 得到V通道图像unsigned int step = 8; // 以8*8小窗口遍历V通道图像uchar *pt;  int imageOverExposeBlockNum = 0;int imageOverExposeBlocks = 0;unsigned int rowTraNum = hsvImageVChannels.rows/step * step;unsigned int colTraNum = hsvImageVChannels.cols/step * step;//遍历for (unsigned int i = 0; i < rowTraNum; i += step){pt = hsvImageVChannels.ptr<uchar>(i);for (unsigned int j = 0; j < colTraNum; j += step){Mat imageBlock = Mat(hsvImageVChannels, Rect(j, i, step, step));            double mea = mean(imageBlock)[0]; // 求小矩形的均值if (mea > 233.0 || mea < 53.0){imageOverExposeBlockNum ++;}imageOverExposeBlocks ++;}}if (imageOverExposeBlockNum/(double)imageOverExposeBlocks < thre)return 0;else{   return 1;}
}

以下为一张普通人脸与一张过曝光人脸图片过曝光指数对比:

opencv实现人脸识别中过曝光人脸图片处理相关推荐

  1. 人脸识别中的人脸监测、定位校准和对比等技术

    https://www.toutiao.com/a6644044828881453581/ 2019-01-08 16:48:06 随着大数据时代的到来,"人脸"也将成为数据的一部 ...

  2. jQuery 人脸识别插件,支持图片和视频

    jQuery Face Detection 是一款人脸检测插件,能够检测到图片,视频和画布中的人脸坐标.它跟踪人脸并输出人脸模型的坐标位置为一个数组.我们相信,面部识别技术能够给我们的 Web 应用带 ...

  3. 人脸识别中Softmax-based Loss的演化史

    点击我爱计算机视觉标星,更快获取CVML新技术 近期,人脸识别研究领域的主要进展之一集中在了 Softmax Loss 的改进之上:在本文中,旷视研究院(上海)(MEGVII Research Sha ...

  4. 主成分分析与其在人脸识别中的应用

    最近在自学图灵教材<Python机器学习基础教程>,在csdn以博客的形式做些笔记. 我们在利用无监督学习进行数据变换可能有很多种目的.最常见的目的就是可视化.压缩数据,以及寻找信息量更大 ...

  5. 深度学习在人脸识别中的应用 —— 优图祖母模型的「进化」

    原作者: 腾讯优图 | 来自: 机器之心 序言--「弱弱」的人工智能 说到人工智能(Artificial Intelligence, AI)人们总是很容易和全知.全能这样的词联系起来.大量关于人工智能 ...

  6. 深度学习在人脸识别中的应用 ——优图祖母模型的“进化”

    序言--"弱弱"的人工智能 说到人工智能(Artificial Intelligence, AI)人们总是很容易和全知.全能这样的词联系起来.大量关于AI的科幻电影更给人工智能蒙上 ...

  7. 人脸识别中的开集和闭集测试

    人脸识别中的开集和闭集测试 这个领域里可以简单分成两大类: • 人脸验证 • 人脸检索 做人脸识别的时候,需要根据业务需要来选择合适的测试指标,测试指标也远远不止文中提到的几个,这里就列举几个比较常用 ...

  8. 浅析人脸识别中的活体检测算法的几种类型

    人脸识别技术在各种有安全性需求的身份识别鉴定场景有着广泛应用,例如手机电脑解锁, 企业住宅安全管理,公安司法刑侦等领域.目前已经有了越来越多的基于人脸识别的应用,例如我们现在应用极广的"刷脸 ...

  9. 人脸识别中的八大难题(zz)

    http://blog.sciencenet.cn/blog-730995-578502.html 最近在看人脸识别相关文献,根据文献总结归纳以下八大难点,我从难到易进行罗列. 其实,人脸识别算法研究 ...

  10. 深度学习在人脸识别中的应用——优图祖母模型的“进化”

    雷锋网按:本文转自腾讯优图,着重介绍了深度学习在人脸识别中的应用,首先回顾了人脸识别的历史,接着介绍优图在人脸识别中的优势,及其"进化过程". 说到人工智能(Artificial  ...

最新文章

  1. ajax从mysql提取数据在html中_Python骚操作,提取pdf文件中的表格数据!
  2. java.函数参数太多,Java方法参数太多怎么办—Part 2—引入参数对象,javapart
  3. C++中关于配置文件的问题
  4. Mdebug:基于React开发的移动web调试工具
  5. Stop being a perfectionist
  6. postgresql(2)
  7. 使用Android Studio打包app
  8. 通过JAVA操作SAE上的MY SQL数据库
  9. 多目标跟踪评价标准(MOT)
  10. linux启用dcb步骤,Linux DCB体系——简短概述
  11. 腾讯CDC:用户流失原因调研四步经
  12. ADO.NET(二)
  13. 201521123059 《Java程序设计》第三周学习总结
  14. html游戏音乐,背景音乐的html标签
  15. 几种常用的键盘钩子技术
  16. elasticjob disable JOB
  17. Matlab在工业机器人中的运用,基于MATLAB的工业机器人建模与仿真.docx
  18. java 日历转化-阴历转阳历
  19. 【图像检测-缺陷检测】基于灰度共生矩阵实现痕迹检测matlab代码
  20. python爬虫爬取大学排名并存入数据库进行数据可视化

热门文章

  1. Delphi中使用ReportMachine 6.5中汇总行不进行汇总的设置问题
  2. 计算机二级数据模拟表,2020年计算机二级《Access数据库程序设计》模拟题(5)...
  3. 模式识别与机器学习的简介
  4. 网络操作系统发展历程
  5. 联合循环—— 35燃气轮机发电机结构及变频启动系统
  6. 国家统计局:政府统计应用大数据的主要障碍
  7. 向上累积频数怎么算_excel数据分析向上累计和向下累计怎么做呢
  8. C语言测量平差课程设计,测量平差课程设计-20210419024415.docx-原创力文档
  9. Atitit 推广之道 attilax著艾龙著 1. 概念呢 2 1.1. 目的 2 2. 与网络推广相近的概念有网络营销(搜索引擎营销、邮件营销、论坛营销、网站推广、网络广告、SNS营销、微信营销
  10. android10新特性 视频解码,Android万能视频播放器10-OpenGL ESMediaCodec解码数据t