前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >image——Data Augmentation的代码

image——Data Augmentation的代码

作者头像
MachineLP
发布2018-01-09 15:11:51
1.2K0
发布2018-01-09 15:11:51
举报
文章被收录于专栏:小鹏的专栏小鹏的专栏

切片(crop):

代码语言:javascript
复制
def crop(image, random_crop, image_size):
    if image.shape[1]>image_size:
        sz1 = int(image.shape[1]//2)
        sz2 = int(image_size//2)
        if random_crop:
            diff = sz1-sz2
            (h, v) = (np.random.randint(-diff, diff+1), np.random.randint(-diff, diff+1))
        else:
            (h, v) = (0,0)
        image = image[(sz1-sz2+v):(sz1+sz2+v),(sz1-sz2+h):(sz1+sz2+h),:]
    return image
代码语言:javascript
复制
############################################################################
# 函数:crop
# 描述:随机裁剪图像
#
# 输入:图像image, crop_size
# 返回:图像image
############################################################################
def crop(image, crop_size, random_crop=True):
    if random_crop:  # 若随机裁剪
        if image.shape[1] > crop_size:
            sz1 = image.shape[1] // 2
            sz2 = crop_size // 2
            diff = sz1 - sz2
            (h, v) = (np.random.randint(0, diff + 1), np.random.randint(0, diff + 1))
            image = image[v:(v + crop_size), h:(h + crop_size), :]

    return image

# 左右上下翻转

代码语言:javascript
复制
def flip(image, random_flip=True):
    if random_flip and np.random.choice([True, False]):
        image = np.fliplr(image)
    if random_flip and np.random.choice([True, False]):
        image = np.flipud(image)
    return image

#图像旋转

代码语言:javascript
复制
def random_rotate_image(image):
    angle = np.random.uniform(low=-10.0, high=10.0)
    return misc.imrotate(image, angle, 'bicubic')
代码语言:javascript
复制
############################################################################
# 函数:rotation
# 描述:随机旋转图片,增强数据,用图像边缘进行填充。
#
# 输入:图像image
# 返回:图像image
############################################################################
def rotation(image, random_flip=True):
    if random_flip and np.random.choice([True, False]):
        w,h = image.shape[1], image.shape[0]
        # 0-180随机产生旋转角度。
        angle = np.random.randint(0,180)
        RotateMatrix = cv2.getRotationMatrix2D(center=(image.shape[1]/2, image.shape[0]/2), angle=angle, scale=0.7)
        # image = cv2.warpAffine(image, RotateMatrix, (w,h), borderValue=(129,137,130))
        #image = cv2.warpAffine(image, RotateMatrix, (w,h),borderValue=(129,137,130))
        image = cv2.warpAffine(image, RotateMatrix, (w,h),borderMode=cv2.BORDER_REPLICATE)
    return image

图像归一化处理:

代码语言:javascript
复制
def prewhiten(x):
    mean = np.mean(x)
    std = np.std(x)
    std_adj = np.maximum(std, 1.0/np.sqrt(x.size))
    y = np.multiply(np.subtract(x, mean), 1/std_adj)
    return y

图像平移:

代码语言:javascript
复制
############################################################################
# 函数:translation
# 描述:随机平移图片,增强数据,用图像边缘进行填充。
#
# 输入:图像image
# 返回:图像image
############################################################################
def translation(image, random_flip=True):
    if random_flip and np.random.choice([True, False]):
        w,h = 1920, 1080
        H1 = np.float32([[1,0],[0,1]])
        H2 = np.random.uniform(50,500, [2,1])
        H = np.hstack([H1, H2])
        # H = np.float32([[1,0,408],[0,1,431]])
        print (H)
        image = cv2.warpAffine(image, H, (w,h), borderMode=cv2.BORDER_REPLICATE)
    return image

调整光照

代码语言:javascript
复制
from skimage import exposure
import numpy as np
def gen_exposure(image, random_xp=True):
    if random_xp and np.random.choice([True, False]):
        image = exposure.adjust_gamma(image, 1.2) # 调暗
    if random_xp and np.random.choice([True, False]):
        image = exposure.adjust_gamma(image, 1.5) # 调暗
    if random_xp and np.random.choice([True, False]):
        image = exposure.adjust_gamma(image, 0.9) # 调亮
    if random_xp and np.random.choice([True, False]):
        image = exposure.adjust_gamma(image, 0.8) # 调亮
    if random_xp and np.random.choice([True, False]):
        image = exposure.adjust_gamma(image, 0.7) # 调暗
    return image
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年09月25日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档