数据增强---对比度处理

对比度处理:

更改对比度是数据增强的一种极好方式,在训练前的图片预处理也是经常使用到的。在OpenCv中,可以通过addWeighted来修改图片的对比度。

在这个方法中,我们可以首先创建一张全黑的图,即所有像素都为0,当然也可以创建另一张彩色图,作为两张图的叠加。然后两张图中每张图都可以按照一定的比例来加权叠加,正如函数名所说(addWeighted)。

而我们在此创建的是一张黑色图,所以最后受影响的只有我们的第一张彩色图,当乘上c之后,2变4,4变8,不同像素之间的差异也就变大了,及对比度提高。而之后的一个常量b,就表示在每个像素中,在每个通道上都加上b这个数值也就可以起到亮度提高的作用。

def Change_contrast_brightness(img,c,b):
       
    h, w, d = img.shape 
    blank = np.zeros([h, w, d], dtype = np.uint8) 
    dst = cv2.addWeighted(img, c, blank, 1-c, b)   
    cv2.imshow("cb_dst",dst)

除此之外,增强对比度的方法还有:伽马变换、直方图均衡化。

直方图均衡化:

直方图均衡化就是将图片上的灰度范围进行拉伸。如果一开始图像的灰度范围只在100-150区间,那么通过直方图均衡化就可以在0-255区间均匀分布。

imgYUV = cv2.cvtColor(img, cv2.COLOR_BGR2YUV)

channelsYUV = cv2.split(imgYUV)
channelsYUV[0] = cv2.equalizeHist(channelsYUV[0])  #只修改Y通道

channels = cv2.merge(channelsYUV)
result = cv2.cvtColor(channels, cv2.COLOR_YUV2BGR)
cv2.imshow("dst", result)
cv2.waitKey(5000)  #到时自动关闭窗口

伽马变换

伽马变换就是首先进行灰度值的归一化,对于8位图来说,除以255即可。

然后令 ,当 =1时,图像不变,小于1时,增强对比度,大于1时,降低对比度。


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) #作为一个查表的映射

以上内容如有错误,欢迎指出。谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值