近期的主要工作是做人脸光照的质量评估。本来想着使用传统的基于分块+方差的形式来做,这种方法有一定的局限性,不能适应所有情况。然后,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空间,最终得到人脸光照不均匀的迁移图片。
import cv2
from cv2.ximgproc import *
import numpy as np
def lightness_layer_decomposition(img,conf,sigma):
将图片分离为颜色层和亮度层
:param img:
:return:
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_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.扫描的文档尺寸小于扫描仪的尺寸,产生黑边
黑边...