基于python人脸光照不均匀数据的制作
文章目录
- 一、人脸光照迁移原理
- 二、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人脸光照不均匀数据的制作相关推荐
- python处理表格数据-基于Python快速处理PDF表格数据
我们有下面一张PDF格式存储的表格,现在需要使用Python将它提取出来. 使用Python提取表格数据需要使用pdfplumber模块,打开CMD,安装代码如下: pip install pdfpl ...
- 用python做生物信息数据分析_基于Python的自动获取生物信息数据的软件设计
基于 Python 的自动获取生物信息数据的软件设计 * 周斯涵,刘月兰 ** [摘 要] [摘 要] 从国际生物信息学数据库中采集数据来进行相关领域的分析, 但随着数据库规模不断扩大 , 数据来源种 ...
- 基于Python猫眼票房TOP100电影数据抓取
基于Python猫眼票房TOP100电影数据抓取 使用requests库抓取数据 BeatifulSoup解析URL,将数据存入csv文件 处理数据,生成图表 本次爬取数据使用Python语言在jup ...
- 利用python爬取2019-nCoV确诊数据并制作pyecharts可视化地图
1.本章利用python爬取2019-nCoV确诊数据并制作pyecharts可视化地图: 2.主要内容为绘制出中国各省疫情数据,疫情数据从四个维度进行可视化展示:累积确诊人数.现存确诊人数.治愈人数 ...
- 基于Python语言的PUBG游戏数据可视化分析系统
[success]写于2019年大作业[/success] 博客链接:https://www.iamzlt.com/?p=299 代码链接请到博客链接内查看. 摘要 随着网络技术的兴起和普及,网络游戏 ...
- 基于python的爬虫系统金融数据_基于Python的互联网金融数据采集
基于Python的互联网金融数据采集 □文/王 蕾1安英博1刘佳杰2 [提要] 互联网金融数据中潜藏着未知的知识价值,但也存在着巨量的数据冗余.通过Python可以进行互联网金融数据的获取.解析.提取 ...
- 基于Python的空气质量网络数据爬虫,构建面向深度学习数据预测的空气质量数据集
目录 1.目标 2. 思路 3.算法 3.1 算法流程 3.2 开发环境 4 核心代码 4.1 Header伪装 4.2 get_html_soup函数 4.3 get_city_link_list函 ...
- 文本处理算法_基于 Python 的 11 种经典数据降维算法
网上关于各种降维算法的资料参差不齐,同时大部分不提供源代码.这里有个 GitHub 项目整理了使用 Python 实现了 11 种经典的数据抽取(数据降维)算法,包括:PCA.LDA.MDS.LLE. ...
- 基于Python的淘宝行为数据可视化分析
项目背景&总结: 项目背景 完成如下商业分析任务,通过数据分析和可视化展示,充分挖掘数据的价值,让数据更好地为业务服务: 流量分析:PV/UV是多少,通过分析PV/UV能发现什么规律? 漏斗分 ...
- 基于 Python 的 11 种经典数据降维算法
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 网上关于各种降维算法的资料参差不齐,同时大部分不提供源代码.这里有 ...
最新文章
- win7上安装theano keras深度学习框架
- 疫情之后,出行市场的春天还有多远?
- 《iOS 全埋点技术白皮书》重磅推出
- Management of your data
- 最小表示法 最大表示法
- 扩展语法检查(SLIN检查)
- P5357 【模板】AC自动机(二次加强版) fail树
- 子网/子网掩码原理简介
- 领域驱动设计(DDD)的实践经验分享之持久化透明
- SQL 基础面试题(四)
- java在线聊天项目1.0版 异常处理——开启多个客户端,关闭一个客户端后,在其他客户端中再发出信息会出现异常的处理...
- 游泳,情人节纪念一下。
- python编写环境手机_给android手机上配置python运行环境
- Spring Cloud Bus消息总线(学习总结)
- dubbo k8s 服务发现_Dubbo-go 发布 1.5 版,朝云原生迈出关键一步
- JCreator使用技巧
- 毕业季-Java分布式开发面试题
- 【离散数学】集合的基数
- 实现公网访问树莓派4B(花生壳内网穿透)
- Unity 4.6.2 iOS 64位支持