图像数据增强
图像数据增强是图片识别,物体检查等任务的常用方法。 常用的python工具有opencv以及pillow。
下面主要介绍pillow在图像数据增强方面的应用。
图像数据增强的常用方法有
- 图片缩放
- 图片旋转
- 图片翻转
- 亮度增强
- 对比度增强
- 色彩饱和度增强
- 锐度增强
- 图片提取-图片合成-目标遮挡
- 引入噪声
- PIL导入模块,读取图片
# 引入包
from PIL import Image,ImageEnhance,ImageFilter
# 读取图片
img = Image.open(img_path)
- 图片缩放
# 图片缩放
img_resized = img.resize((1024, 768))
- 图片旋转
# 指定逆时针旋转的角度(°)
img_rotate = img.rotate(45)
- 图片翻转
#左右翻转
new_img1 = new_img1.transpose(Image.FLIP_LEFT_RIGHT)
#上下翻转
new_img2 = new_img2.transpose(Image.FLIP_TOP_BOTTOM)
- 亮度增强
#亮度增强
brightness_factor = float(np.random.randint(8, 16)) / 10.0
brightness_image = ImageEnhance.Brightness(img).enhance(brightness_factor)
- 对比度增强
#增强对比度
contrast_factor = float(np.random.randint(8, 16)) / 10.0
contrast_image = ImageEnhance.Contrast(img).enhance(contrast_factor)
- 色彩饱和度增强
#增强色彩饱和度
color_factor = float(np.random.randint(5, 15)) / 10.0
color_image = ImageEnhance.Color(img).enhance(color_factor)
- 锐度增强
#增强锐度
sharp_factor = float(np.random.randint(8, 12)) / 10.0
sharp_image = ImageEnhance.Sharpness(img).enhance(sharp_factor)
- 图片提取-图片合成-目标遮挡
图片提取
#图片提取
import cv2
img = cv2.imread(path)
_img = img[y0:y1,x0:x1]
cv2.imwrite(output_file,_img)
图片合成
_img = Image.open(_img_path)
img = Image.open(img_path)
box = [left,top,right,bottom]
region = _img.resize((box[2]-box[0],box[3]-box[1]))
img.paste(region,box)
img.save(output_path)
目标遮挡
利用纯色图片、随机生成的box及图片合成,遮盖主图片
- 引入噪声
new_img = img.filter(ImageFilter.GaussianBlur())