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

FIIQA-PyTorch

FIIQA

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

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

Face Illumination Transfer through Edge-preserving Filters

一、人脸光照迁移原理

论文中主要将人脸分为3部分:颜色层、大尺度层以及细节层。将人脸图像转化到Lab颜色空间,其中L通道表示亮度值;a、b表示颜色层。对L通道通过wsl( 加权最小二滤波 )滤波可以得到大尺度层,然后通过如下:
d e t a i l s = l a r g e s c a l e L
其中:largscale表示大尺度层,details表示细节层。

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

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

二、python实现人脸光照迁移

import cv2
from cv2.ximgproc import *
import numpy as np
def lightness_layer_decomposition(img,conf,sigma):
	将图片分离为颜色层和亮度层
	:param img:
	:return:
	# wsl滤波
	large_scale_img=fastGlobalSmootherFilter(img, img, conf, sigma)
	detail_img=img/large_scale_img
	return large_scale_img,detail_img
def 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)和亮度层l
	lab_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_img
	out=out.astype(np.uint8)
	res=cv2.merge((out,a,b))
	res=cv2.cvtColor(res,cv2.COLOR_Lab2BGR)
	return res
if __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实现人脸光照迁移近期的主要工作是做人脸光照的质量评估。本来想着使用传统的基于分块+方差的形式来做,这种方法有一定的局限性,不能适应所有情况。然后,github找到一些相关项目,使用深度学习的方法实现的。FIIQA-PyTorchFIIQA高高兴兴,跑起来,发现完全不行啊。下载的数据只有3类,结合github上200类,这个有点差距。所以想着自己制作,参考论文如下:Face Illumination Transfer through Edge-pres
文章目录图片内容关于亮度和对比度 目前来看,对于布匹的计算能力较好。细节越突出,计算结果越好。有些图片内容,相机的聚焦能力以及分辨率不够的话,就会计算的不够好。一般做3D的人都是比较追求高分辨率 关于亮度和对比度 第5,6与tmp的差距最小
使用python版本的opencv去除图像中的光照均匀 在图像处理中,如果图像中存在光照均匀,则会影响图像处理的效果,比如在图像文本识别和图像分割中。本博客对于图像均衡化的处理主要参考文章:一种基于亮度均衡的图像阈值分割技术,以有关于C++的实现代码:opencv 一种不均匀光照的补偿方法 使用该方法主要的原因是最近在弄Tesseract的文字识别,需要识别拍摄照片中的字母,但是照片为室外拍摄...
'''====================================================================================''' #人脸识别: def getface(image): # 创建 classifier clf = cv2.
摘要:得益于计算机硬件技术的进步以及软件算法的不断改进,近些年来人工智能技术得到了前所未有的发展,基于深.度学习的人脸识别技术也已经得到了广泛的应用,特别是在安保、金融等需要安全系数较高的领域。提出了一种基于机器学习并利用Python编程语言和第三方OpenCv库实现的脸识别跟踪方法。 关键词:人脸识别, Python, OpenCV 1人脸识别介绍 通过生物特征进行对人脸进行识别的过程被称为人脸识别",它是属于计算机视觉领域的一个研究问题。上个世纪60年代,Bledsoe和Chen设计的人脸..
本文主要针对光照不均图像进行矫正处理,其中算法思想是拉高欠曝光区域亮度,降低高曝光区域亮度。从而促使整张图看起来和谐。 意外的是,本文算法对低光照图像处理也有特别好的效果。 本仓库首次上传代码时间为:6-5号,在答辩结束之后才会将论文上传上来。原理在论文内解释。 ├─.idea └─inspectionProfiles ├─cds_arithmetic └─data ├─done ├─179 ├─778 ├─girl └─matlab └─src ├─high └─low └─retinex ├─data └─__pycache__ python3.x opencv3.x opencv4.x 配置好环境可以直接运行。 remote origin git@github.com:sexjun/-1602--.git origin master 图像黑边的产生原因分析: a.由于文档图像在采集的时候(扫描/拍照等情况),可能存在光照均匀,导致边缘部分偏黑。二值化之后容易产生比较大的污染 b.扫描的文档尺寸小于扫描仪的尺寸,产生黑边 黑边...
Python)3D人脸处理工具Face3d_mesh你可以使用它来处理网格数据,从可变形模型生成3D人脸,用一幅图片和几个关键点作为输入来重建3D人脸,给人脸打上不同的光照(详情请见例程)。 一开始,我是为了学习3D人脸重建以及一些个人研究才开始写这…https://www.sohu.com/a/293953789_717210
基于Python人脸图像特征提取的分析设计 人脸识别是一个被广泛研究的热门问题,该技术在法律、商业、安全系统领域有着广泛的应用,人脸图像的易取性和人脸变化的多样性使该技术的研 究更富有挑战性。当前,基于模板匹配的人脸识别技术已经相当成熟,人脸特征提取是人脸识别过程中必要的一个步骤,本文就当前一些人脸特征提取的方法进行了 比较,并对小波分析在人脸特征提取方面的应用进行了研究。并通过Python人脸图像特征提取的实力进行验证。 关键词:人脸特征特征提取神经网络 一、人脸特征提取的各种方法 1.基于面部器官的
IDEA导入MySQL的jdbc驱动出现“java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver” xing-666: 很有用,简单却重要的一步 IDEA导入MySQL的jdbc驱动出现“java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver” Lo-Y-eH: 太感谢了,终于连上了表情包 【深度学习系列(六)】:RNN系列(3):基于Tensorflow的RNN的实战之英文名字生成 Xyq_001: 打不开了。。。求一个源码 基于onnxruntime的YOLOv5单张图片检测实现 GraceKafuu: yolov5-v6.2 能跑起来,但是结果不对