数据色彩增强

2018-07-30  本文已影响0人  翻开日记
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 18-7-30 下午3:21
# @File    : DataAgument.py
# @Software: PyCharm
# @Author  : wxw
# @Contact : xwwei@lighten.ai
# @Desc    : 数据增强

import numpy as np
from PIL import Image, ImageEnhance
import cv2

def randomColor(image):
    """
    颜色抖动
    """
    random_factor = np.random.randint(0, 31) / 10.  # 随机因子
    color_image = ImageEnhance.Color(image).enhance(random_factor)  # 调整图像的饱和度
    random_factor = np.random.randint(10, 21) / 10.  # 随机因子
    brightness_image = ImageEnhance.Brightness(color_image).enhance(random_factor)  # 调整图像的亮度
    random_factor = np.random.randint(10, 21) / 10.  # 随机因1子
    contrast_image = ImageEnhance.Contrast(brightness_image).enhance(random_factor)  # 调整图像对比度
    random_factor = np.random.randint(0, 31) / 10.  # 随机因子
    return ImageEnhance.Sharpness(contrast_image).enhance(random_factor)  # 调整图像锐度

def PCAJitter(img):
    """
    PCA抖动
    """
    image = img
    img = image / 255.0
    img_size = img.size // 3
    img1 = img.reshape(img_size, 3)
    img1 = np.transpose(img1)
    img_cov = np.cov([img1[0], img1[1], img1[2]])
    lamda, p = np.linalg.eig(img_cov)

    p = np.transpose(p)

    alpha0 = np.random.uniform(0, 0.3)
    alpha1 = np.random.uniform(0, 0.3)
    alpha2 = np.random.uniform(0, 0.3)

    v = np.transpose((alpha0*img1[0], alpha1*img1[1], alpha2*img1[2]))

    add_num = np.dot(v, p).reshape(np.shape(img))
    return np.array(image + add_num)

for _ in range(30):


    image = cv2.imread('ss.jpg')
    img = PCAJitter(image)
    img = img.astype(np.uint8)

    # cv2 转 PIL
    img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    img = randomColor(img)
    # PIL 转 cv2
    img = cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)
    cv2.imshow('cc', img)
    cv2.waitKey(0)
上一篇下一篇

猜你喜欢

热点阅读