图像数据增强-亮度lighting-blend-饱和度saturation-对比度contrast-光照brightness

图像数据增强-亮度lighting-blend-饱和度saturation-对比度contrast-光照brightness

前言:

因为真实数据图片太少,图片对光照影响太敏感,所以想着对数据做个增强。
我竟然没整理一套自己的数据增强函数,在师弟的帮助下,借助这个代码库的基础上,拆分了图像增强部分。

没有考虑坐标的问题,因为不涉及图像旋转,反转和裁剪。

直接上代码吧~

代码:

  from PIL import Image  
  import random  
  import numpy as np  
  import cv2

  def lighting_(data_rng, image, alphastd, eigval, eigvec):
        alpha = data_rng.normal(scale=alphastd, size=(3, ))      
        image += np.dot(eigvec, eigval * alpha)
        
  def blend_(alpha, image1, image2):
        image1 *= alpha      
        image2 *= (1 - alpha)      
        image1 += image2
        
  def saturation_(data_rng, image, gs, gs_mean, var):
        alpha = 1. + data_rng.uniform(low=-var, high=var)  
        blend_(alpha, image, gs[:, :, None])
        
  def brightness_(data_rng, image, gs, gs_mean, var):
        alpha = 1. + data_rng.uniform(low=-var, high=var)      
        image *= alpha
        
  def contrast_(data_rng, image, gs, gs_mean, var):
        alpha = 1. + data_rng.uniform(low=-var, high=var)
        blend_(alpha, image, gs_mean)
        
  def grayscale(image):
        return cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
        
  def color_aug(image,
  		data_rng=np.random.RandomState(),
  		eig_val=np.random.random(),
  		eig_vec=np.random.random()):
        """      image color augmentation      parameters:          data_rng: np.random.RandomState()          image: image.astype('float32')/255.0          eig_val: 0 - 1 (float)          eig_vec: 0 - 1 (float)                  return:          a image array 0-1.0(floatt)      """      
        if np.any(image > 1.0):
       		image = image.astype("float32")/255.0          

	functions = [brightness_, contrast_, saturation_]
	random.shuffle(functions)      
        gs = grayscale(image)      
        gs_mean = gs.mean()      
        for f in functions:          
        f(data_rng, image, gs, gs_mean, 0.4)      lighting_(data_rng, image, 0.1, eig_val, eig_vec)      
        return image

def main():
        image = np.random.random((224, 224, 3)) * 255      
        print(image.shape)      
        print(image)      
        image = color_aug(image)      
        cv2.imshow('image', image)      
        cv2.waitKey(0)

  if __name__ == "__main__":      main()
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hehedadaq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值