1.算法原理: 对高光部位应该先检测,后用图像增强的办法去除高光,想办法用周围的色素值代替,本文采用图像修复的方法。
2. 算法步骤:
1.图像阈分割生成mask掩膜
2.opencv自带的图像修复函数,如下:
cv2.inpaint(src, inpaintMask, 3, cv2.INPAINT_TELEA)
src:目标修复图像;
inpaintMask:蒙版图(定位修复区域);
3:选取邻域半径;
cv2.INPAINT_TELEA:修复算法(INPAINT_TELEA:基于快速行进算法 算法效果较好
INPAINT_NS:基于流体动力学并使用了偏微分方程)
测试图片:
生成的mask图片:
最终的结果:
实现的代码:
import cv2
import os,shutil
#找亮光位置
def create_mask(imgpath):
image = cv2.imread(imgpath, cv2.IMREAD_GRAYSCALE)
_, mask = cv2.threshold(image, 200, 255, cv2.THRESH_BINARY)
return mask
#修复图片