1. 背景
在CV领域,算法工(tiao)程(can)师(xia)经常会遇到训练数据不足或训练数据多样性太少的问题。此时,我们需要通过算法来进行数据扩充或数据增强。数据增强的方法有很多(如翻转、镜像、旋转、亮度增强等),本篇我们来讲一个最常用的数据增强策略:亮度增强。
2.亮度增强
本篇基于opencv对图片进行亮度增强,闲话少说,直接上代码:
import cv2
import random
import numpy as np
def data_augment(image, brightness):
factor = 1.0 + random.uniform(-1.0*brightness, brightness)
table = np.array([(i / 255.0) * factor * 255 for i in np.arange(0, 256)]).clip(0,255).astype(np.uint8)
image = cv2.LUT(image, table)
return image, factor
imgpath = "./huluwa.jpg"
input_image = cv2.imread(imgpath)
for i in range(100):
output_image, factor = data_augment(input_image, 0.5)
# print(factor)
cv2.imwrite(imgpath+str(factor)[:6]+".jpg", output_image)
上述代码主要是利用了opencv的cv2.LUT函数的功能,该函数全名为LookUpTable,函数使用方法如名字那样直接。下面看看该函数的效果如何。
3.可视化效果