美图祛斑算法实战——雀斑消除
本文主要根据这篇博文的思路,由于原博文没有放出完整代码,我这里尝试根据作者的思路实现人脸祛斑算法的代码完整版,本代码针对特定图像使用了一些trick,不是通用算法,仅做参考。
算法流程主要为:
- 灰度化
- 对比度增强
- 阈值处理
- 梯度极大值查找
- 连通域分析
- 皮肤排除
- 图像修复 inpaint
本代码用到的图片如下,从这篇博文直接下载得到,我们的目标是去除任务颈肩部位的祛斑。
导入用到的库
import cv2
import matplotlib.pyplot as plt
import numpy as np
import skimage
from skimage import morphology
from skimage.io import imread
读取图像,转为灰度图,然后进行对比度增强
img = cv2.imread('./face.png')
src = img.copy()
src = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY) # 转为灰度图
con = skimage.exposure.adjust_sigmoid(src,0.4) # 0.4这个阈值就比较trick了。。。
使用sobel算子进行边缘检测
x_gray = cv2.Sobel