文章目录

  • 一、人脸光照迁移原理
  • 二、python实现人脸光照迁移

近期的主要工作是做人脸光照的质量评估。本来想着使用传统的基于分块+方差的形式来做,这种方法有一定的局限性,不能适应所有情况。然后,github找到一些相关项目,使用深度学习的方法实现的。

FIIQA-PyTorch

FIIQA

高高兴兴,跑起来,发现完全不行啊。下载的数据只有3类,结合github上200类,这个有点差距。

所以想着自己制作,参考论文如下:

Face Illumination Transfer through Edge-preserving Filters

一、人脸光照迁移原理

论文中主要将人脸分为3部分:颜色层、大尺度层以及细节层。将人脸图像转化到Lab颜色空间,其中L通道表示亮度值;a、b表示颜色层。对L通道通过wsl(加权最小二滤波)滤波可以得到大尺度层,然后通过如下:
details=Llargescaledetails=\frac{L}{largescale} details=largescaleL​
其中:largscale表示大尺度层,details表示细节层。

通过上述方法,依次对模板和目标图像提取大尺度层,然后,这两个图像进行引导滤波/导向滤波(Guided Filter)。注意,这里将目标作为引导图,模板作为初始图像,使得模板与目标相似。

通过,导向滤波之后,需要还原亮度通道L,参考上述公式进行计算,然后将Lab空间转化为BGR空间,最终得到人脸光照不均匀的迁移图片。

二、python实现人脸光照迁移

import cv2
from cv2.ximgproc import *
import numpy as npdef lightness_layer_decomposition(img,conf,sigma):'''将图片分离为颜色层和亮度层:param img::return:'''# wsl滤波large_scale_img=fastGlobalSmootherFilter(img, img, conf, sigma)detail_img=img/large_scale_imgreturn large_scale_img,detail_imgdef face_illumination_transfer(target=None, reference=None):'''将标签光照迁移到目标人脸上:param target::param reference::return:'''h,w=reference.shape[:2]target=cv2.resize(target,(w,h))# lab颜色转换# 提取颜色(a,b)和亮度层llab_img = cv2.cvtColor(target, cv2.COLOR_BGR2Lab)l, a, b = cv2.split(lab_img)lab_rimg = cv2.cvtColor(reference, cv2.COLOR_BGR2Lab)lr, ar,br = cv2.split(lab_rimg)# 将亮度层进行分层:大尺度层和细节层large_scale_img, detail_img= lightness_layer_decomposition(l,600,20)large_scale_rimg, detail_rimg = lightness_layer_decomposition(lr,600,20)# 通过引导波滤波将模板亮度迁移到目标图上large_scale_rimg = large_scale_rimg.astype('float32')large_scale_img = large_scale_img.astype('float32')out=guidedFilter(large_scale_img,large_scale_rimg,18,1e-3)out=out*detail_imgout=out.astype(np.uint8)res=cv2.merge((out,a,b))res=cv2.cvtColor(res,cv2.COLOR_Lab2BGR)return resif __name__=="__main__":img_file=r"D:\data\face\good3\1630905386503.jpeg"reference=r"D:\data\face_illumination\illumination patterns\office-lamp-night-6.JPG"# 读取人脸图片img = cv2.imread(img_file)rimg=cv2.imread(reference)res=face_illumination_transfer(img,rimg)cv2.imshow("res",res)cv2.waitKey(0)

最终结果如下:

参考连接:

opencv使用 — fastGlobalSmootherFilter

引导图滤波(Guided Image Filtering)原理以及OpenCV实现

基于python人脸光照不均匀数据的制作相关推荐

  1. python处理表格数据-基于Python快速处理PDF表格数据

    我们有下面一张PDF格式存储的表格,现在需要使用Python将它提取出来. 使用Python提取表格数据需要使用pdfplumber模块,打开CMD,安装代码如下: pip install pdfpl ...

  2. 用python做生物信息数据分析_基于Python的自动获取生物信息数据的软件设计

    基于 Python 的自动获取生物信息数据的软件设计 * 周斯涵,刘月兰 ** [摘 要] [摘 要] 从国际生物信息学数据库中采集数据来进行相关领域的分析, 但随着数据库规模不断扩大 , 数据来源种 ...

  3. 基于Python猫眼票房TOP100电影数据抓取

    基于Python猫眼票房TOP100电影数据抓取 使用requests库抓取数据 BeatifulSoup解析URL,将数据存入csv文件 处理数据,生成图表 本次爬取数据使用Python语言在jup ...

  4. 利用python爬取2019-nCoV确诊数据并制作pyecharts可视化地图

    1.本章利用python爬取2019-nCoV确诊数据并制作pyecharts可视化地图: 2.主要内容为绘制出中国各省疫情数据,疫情数据从四个维度进行可视化展示:累积确诊人数.现存确诊人数.治愈人数 ...

  5. 基于Python语言的PUBG游戏数据可视化分析系统

    [success]写于2019年大作业[/success] 博客链接:https://www.iamzlt.com/?p=299 代码链接请到博客链接内查看. 摘要 随着网络技术的兴起和普及,网络游戏 ...

  6. 基于python的爬虫系统金融数据_基于Python的互联网金融数据采集

    基于Python的互联网金融数据采集 □文/王 蕾1安英博1刘佳杰2 [提要] 互联网金融数据中潜藏着未知的知识价值,但也存在着巨量的数据冗余.通过Python可以进行互联网金融数据的获取.解析.提取 ...

  7. 基于Python的空气质量网络数据爬虫,构建面向深度学习数据预测的空气质量数据集

    目录 1.目标 2. 思路 3.算法 3.1 算法流程 3.2 开发环境 4 核心代码 4.1 Header伪装 4.2 get_html_soup函数 4.3 get_city_link_list函 ...

  8. 文本处理算法_基于 Python 的 11 种经典数据降维算法

    网上关于各种降维算法的资料参差不齐,同时大部分不提供源代码.这里有个 GitHub 项目整理了使用 Python 实现了 11 种经典的数据抽取(数据降维)算法,包括:PCA.LDA.MDS.LLE. ...

  9. 基于Python的淘宝行为数据可视化分析

    项目背景&总结: 项目背景 完成如下商业分析任务,通过数据分析和可视化展示,充分挖掘数据的价值,让数据更好地为业务服务: 流量分析:PV/UV是多少,通过分析PV/UV能发现什么规律? 漏斗分 ...

  10. 基于 Python 的 11 种经典数据降维算法

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 网上关于各种降维算法的资料参差不齐,同时大部分不提供源代码.这里有 ...

最新文章

  1. win7上安装theano keras深度学习框架
  2. 疫情之后,出行市场的春天还有多远?
  3. 《iOS 全埋点技术白皮书》重磅推出
  4. Management of your data
  5. 最小表示法 最大表示法
  6. 扩展语法检查(SLIN检查)
  7. P5357 【模板】AC自动机(二次加强版) fail树
  8. 子网/子网掩码原理简介
  9. 领域驱动设计(DDD)的实践经验分享之持久化透明
  10. SQL 基础面试题(四)
  11. java在线聊天项目1.0版 异常处理——开启多个客户端,关闭一个客户端后,在其他客户端中再发出信息会出现异常的处理...
  12. 游泳,情人节纪念一下。
  13. python编写环境手机_给android手机上配置python运行环境
  14. Spring Cloud Bus消息总线(学习总结)
  15. dubbo k8s 服务发现_Dubbo-go 发布 1.5 版,朝云原生迈出关键一步
  16. JCreator使用技巧
  17. 毕业季-Java分布式开发面试题
  18. 【离散数学】集合的基数
  19. 实现公网访问树莓派4B(花生壳内网穿透)
  20. Unity 4.6.2 iOS 64位支持

热门文章

  1. 类似鹅厂的H5农场游戏,牧场游戏 博主亲自搭建
  2. 机器学习处理信号分离_机器学习和深度学习现如今能应用在雷达信号处理,或者信号处理的哪些方面?...
  3. CRNN论文阅读笔记
  4. 2023年南京师范大学资源与环境考研上岸前辈备考经验指导
  5. Docker教程精要版
  6. 马哥python培训班靠谱吗
  7. Linux基础知识总结一
  8. RecyclerView框架——BRVAH3.x使用指南
  9. 状压DP入门——玉米田
  10. 职业技能鉴定 八大工种 广州紧缺工种 培训考证