赞
踩
数据集中往往会出现这些对比度和亮度不统一的场景,例如:有些场景采光好,效果明显;有些整体场景昏暗,整体亮度低,对比度低;还有一些场景例如黑暗中的灯光,周围环境暗灯光亮,整体亮度低局部亮度高,对比度高。
采用的对比度与亮度图像增强算法来自于gamma变换,
有点:图像调整变得非常自然,不易失真。
代码如下:
import cv2 import numpy as np def gamma_trans(img, gamma): ''' 首先归一化到0-1范围,然后gamma作为指数值求出新的像素值再还原 ''' gamma_table = [np.power(x / 255.0, gamma) * 255.0 for x in range(256)] gamma_table = np.round(np.array(gamma_table)).astype(np.uint8) return cv2.LUT(img, gamma_table) # 作为一个查表的映射 img = cv2.imread(path_org) img3 = gamma_trans(img,0.75)
增强后的效果(第一张原图):
在github上下载yolov5源码包;
然后再utils目录下的datasets.py
文件
在def load_image(self, i):
的函数中添加数据增强的函数:
如:
def gamma_trans(img, gamma): ''' 首先归一化到0-1范围,然后gamma作为指数值求出新的像素值再还原 ''' gamma_table = [np.power(x / 255.0, gamma) * 255.0 for x in range(256)] gamma_table = np.round(np.array(gamma_table)).astype(np.uint8) return cv2.LUT(img, gamma_table) # 作为一个查表的映射 def load_image(self, i): # print("!!!!!!%%%%") # loads 1 image from dataset index 'i', returns im, original hw, resized hw im = self.imgs[i] if im is None: # not cached in ram npy = self.img_npy[i] if npy and npy.exists(): # load npy im = np.load(npy) else: # read image path = self.img_files[i] im = cv2.imread(path) # BGR assert im is not None, 'Image Not Found ' + path # gamma变换数据增强 im = gamma_trans(im, random.uniform(0.5, 2.0))
修改后完整datasets.py
代码;
# YOLOv5 声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/832127
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。