数据增强-亮度-对比度-色彩饱和度-色调-锐度 不改变图像大小

# coding=utf-8
import os
import os
import cv2
import math
import numpy as np
from PIL import Image
from PIL import ImageEnhance

"""
1、对比度:白色画面(最亮时)下的亮度除以黑色画面(最暗时)下的亮度;
2、色彩饱和度::彩度除以明度,指色彩的鲜艳程度,也称色彩的纯度;
3、色调:向负方向调节会显现红色,正方向调节则增加黄色。适合对肤色对象进行微调;
4、锐度:是反映图像平面清晰度和图像边缘锐利程度的一个指标。
"""

def compute(img):
    per_image_Rmean = []
    per_image_Gmean = []
    per_image_Bmean = []
    per_image_Bmean.append(np.mean(img[:, :, 0]))
    per_image_Gmean.append(np.mean(img[:, :, 1]))
    per_image_Rmean.append(np.mean(img[:, :, 2]))
    R_mean = np.mean(per_image_Rmean)
    G_mean = np.mean(per_image_Gmean)
    B_mean = np.mean(per_image_Bmean)
    return math.sqrt(0.241 * (R_mean ** 2) + 0.691 * (G_mean ** 2) + 0.068 * (B_mean ** 2))

def fun_color(image, coefficient, path_save):
    # 色度,增强因子为1.0是原始图像
    # 色度增强 1.5
    # 色度减弱 0.8
    enh_col = ImageEnhance.Color(image)
    image_colored1 = enh_col.enhance(coefficient)
    image_colored1.save(path_save)

def fun_Contrast(image, coefficient, path_save):
    # 对比度,增强因子为1.0是原始图片
    # 对比度增强 1.5
    # 对比度减弱 0.8
    enh_con = ImageEnhance.Contrast(image)
    image_contrasted1 = enh_con.enhance(coefficient)
    image_contrasted1.save(path_save)

def fun_Sharpness(image, coefficient, path_save):
    # 锐度,增强因子为1.0是原始图片
    # 锐度增强 3
    # 锐度减弱 0.8
    enh_sha = ImageEnhance.Sharpness(image)
    image_sharped1 = enh_sha.enhance(coefficient)
    image_sharped1.save(path_save)

def fun_bright(image, coefficient, path_save):
    # 变亮 1.5
    # 变暗 0.8
    # 亮度增强,增强因子为0.0将产生黑色图像; 为1.0将保持原始图像。
    enh_bri = ImageEnhance.Brightness(image)
    image_brightened1 = enh_bri.enhance(coefficient)
    image_brightened1.save(path_save)

def show_all():
    file_root = "/media/data_1/data/images/"
    save_root = "/media/py/save/"
    list_file = os.listdir(file_root)
    cnt = 0
    for img_name in list_file:
        cnt += 1
        print("cnt=%d,img_name=%s" % (cnt, img_name))
        path = file_root + img_name
        name = img_name.replace(".jpg", "")
        image = Image.open(path)
        list_coe = [0.5,1,3]
        for val in list_coe:
            path_save_bright = save_root + name + "_bri_" + str(val) + ".jpg"
            fun_bright(image, val, path_save_bright)

            path_save_color = save_root + name + "_color_" + str(val) + ".jpg"
            fun_color(image, val, path_save_color)

            path_save_contra = save_root + name + "_contra_" + str(val) + ".jpg"
            fun_Contrast(image, val, path_save_contra)

            path_save_sharp = save_root + name + "_sharp_" + str(val) + ".jpg"
            fun_Sharpness(image, val, path_save_sharp)

def my_aug():
    file_root = "/media/data_1/data/images/"
    save_root = "/media/data_2/ret/img_aug/"
    list_file = os.listdir(file_root)
    cnt = 0
    for img_name in list_file:
        cnt += 1
        print("cnt=%d,img_name=%s" % (cnt, img_name))
        path = file_root + img_name
        name = img_name.replace(".jpg", "")
        image = Image.open(path)
        img = cv2.imread(path)
        mean_1 = compute(img)
        cof = 0.0
        if mean_1 < 40:
            cof = 3.5
        elif mean_1 < 60:
            cof = 3
        elif mean_1 < 80:
            cof = 2
        elif mean_1 < 90:
            cof = 1.5
        elif mean_1 < 110:
            cof = 1.1
        elif mean_1 > 130:
             cof = 0.5
        else:
             cof = 0.75

        cof_contrast = 0.0
        if cof>1:
            cof_contrast = 1.5
        else:
            cof_contrast = 0.8

        path_save_bright = save_root + name + "_bri_" + str(cof) + '.jpg'
        fun_bright(image, cof, path_save_bright)
        path_save_sharp = save_root + name + "_sharp_" + str(2) + '.jpg'
        fun_Sharpness(image, 2, path_save_sharp)
        path_save_contra = save_root + name + "_contra_" + str(cof_contrast) + ".jpg"
        fun_Contrast(image, cof_contrast, path_save_contra)
        path_save_color = save_root + name + "_color_" + str(1.5) + ".jpg"
        fun_color(image, 1.5, path_save_color)

if __name__ == "__main__":

    #show_all()
    my_aug()

原文地址:https://www.cnblogs.com/yanghailin/p/11106480.html

时间: 2024-11-07 22:16:05

数据增强-亮度-对比度-色彩饱和度-色调-锐度 不改变图像大小的相关文章

深度学习之图像的数据增强

在图像的深度学习中,为了丰富图像训练集,更好的提取图像特征,泛化模型(防止模型过拟合),一般都会对数据图像进行数据增强, 数据增强,常用的方式,就是旋转图像,剪切图像,改变图像色差,扭曲图像特征,改变图像尺寸大小,增强图像噪音(一般使用高斯噪音,盐椒噪音)等. 但是需要注意,不要加入其他图像轮廓的噪音. 对于常用的图像的数据增强的实现,如下: 1 # -*- coding:utf-8 -*- 2 """数据增强 3 1. 翻转变换 flip 4 2. 随机修剪 random

数据增强利器--Augmentor

最近遇到数据样本数目不足的问题,自己写的增强工具生成数目还是不够,终于在网上找到一个数据增强工具包,足够高级,足够傻瓜.想要多少就有多少!再也不怕数据不够了! 简介 Augmentor是一个Python包,旨在帮助机器学习任务的图像数据人工生成和数据增强.它主要是一种数据增强工具,但也将包含基本的图像预处理功能. 特色 Augmentor是用于图像增强的软件包,重点在于提供通常用于生成机器学习问题的图像数据的操作. Augmentor包含许多用于标准图像处理功能的类,例如Rotate 旋转类.C

深度学习中的数据增强技术(二)

上篇文章介绍了深度学习中数据增强技术的应用,及部分TensorFlow实现代码.废话不说了,这篇接着介绍: TensorFlow实现图片数据增强 注:类似的方法放在了代码中注释的部分,实际调试时可以分别打开运行 ③图像色彩调整 import matplotlib.pyplot as plt import tensorflow as tf # 读取图片 image_data = tf.gfile.FastGFile("data/dog3.jpg", 'br').read() # 4中调整

StartDT AI Lab | 数据增强技术如何实现场景落地与业务增值?

有人说,「深度学习“等于”深度卷积神经网络算法模型+大规模数据+云端分布式算力」.也有人说,「能够在业内叱咤风云的AI都曾“身经百战”,经历过无数次的训练与试错」.以上都需要海量数据做依托,对于那些数据量匮乏的领域,就衍生出了数据增强技术.即,根据一个原始数据,稍作改动,变成一个对于AI来说的全新的数据. 01 为什么做数据增强? 数据规模的重要性到底怎样呢?可以说,深度学习的火热和蓬勃发展,直接源于普林斯顿大学教授李飞飞及她所带领的团队创作的一个包含百万级图片的数据集ImageNet.工业级人

Pytorch:数据增强与标准化

本文对transforms.py中的各个预处理方法进行介绍和总结.主要从官方文档中总结而来,官方文档只是将方法陈列,没有归纳总结,顺序很乱,这里总结一共有四大类,方便大家索引: 裁剪——Crop 中心裁剪:transforms.CenterCrop 随机裁剪:transforms.RandomCrop 随机长宽比裁剪:transforms.RandomResizedCrop 上下左右中心裁剪:transforms.FiveCrop 上下左右中心裁剪后翻转,transforms.TenCrop 翻

CoreImage 可以用滤镜来处理图片,比如修改饱和度,亮度,对比度等

// //  ViewController.m //  UI-CoreImage // //  Created by Bruce on 15/5/22. //  Copyright (c) 2015年 Bruce. All rights reserved. // /*  CoreImage 可以用滤镜来处理图片,比如修改饱和度,亮度,对比度等  它利用GPU(或者CPU,取决于客户)来非常快速.甚至实时地处理图像数据和视频的帧.多个Core Image滤镜可以叠加在一起,从而可以一次性地产生多重

数据增强(尚未完成)

1. 为什么需要数据增强? (1)数据增强是扩充数据样本规模的一种有效的方法,深度学习是一种基于大数据的方法,数据的规模越大.质量越高就越好,模型也能够拥有更好的泛化能力.然而在实际采集数据的时候,往往很难覆盖全部的场景,比如光照条件,那么在训练模型的时候,就需要加入光照方面的数据增强: (2)即使拥有大量数据,也应该进行数据增强,这会有助于增加数据集中相关数据的数量.通过增强数据集,可以防止神经网络学习到不想关的模式,避免了过拟合,根本上提升了整体性能. 假设数据集有两个类别,如下图,左边是品

通过灰度线性映射增强图片对比度

Halcon中如何通过灰度线性映射增强图片对比度呢?不急,我先讲点其他的. 如果你用过Photoshop,那么想必对增强图像的对比度很熟悉.在Photoshop中,我们对下面这张图执行“色阶”调整: 执行“色阶”调整:可以观察到图片的对比度明显增强.(白的更白,黑的更黑了) 它的原理是这样的:将原图中灰度值小于55的点全部强制置为0,将灰度值高于140的点强制置为255,并且将55~140之间的色阶强行拓宽均匀映射到0~255之间,其效果是图像对比度增强了.如下图所示: 如果还不好理解,那么再看

对于机器学习中,数据增强

众所周知,数据对机器学习来说是那么的重要,但是我们通常因为各种原因得不到 理想的数据量,这时候我们就想到进行数据增强.比如添加噪声,左右镜像,随机crop 一部分等,但是有一点要注意的,就是要记住我们要机器学习的是什么特征,比如说人脸, 眼睛,嘴巴等,这时候添加噪声就不能改变这些特征.一句话:喂给机器什么数据,机器 就学什么数据.(但注意,并不是你觉得是这样,机器就真的这样,因为,机器可能通过 其他方式进行学习,所以数据量越大,机器可选择的路越少,就越有可能按照你的想法学 习对应的特征.数据量越