使用cv2,numpy,PIL模块实现图像数据的数据增强。

计算机视觉中的图像增强,是人为的为视觉不变性(语义不变)引入了先验知识。数据增强也基本上成了提高模型性能的最简单、直接的方法了。

一、原图片:

二、数据增强代码:

导包:

import random
import cv2
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt

读数据:

img = Image.open("5-8图库/5-8.png")
img = np.array(img)# 展示图片
plt.imshow(img)
plt.show()

图像水平翻转:

def horizon_flip(img):'''图像水平翻转:param img::return:水平翻转后的图像'''return img[:, ::-1]# 展示图片
plt.imshow(horizon_flip(img))
plt.show()

图像垂直翻转:

def vertical_flip(img):'''图像垂直翻转:param img::return:'''return img[::-1]

在一定角度范围内,图像随机旋转:

def rotate(img, limit_up=90, limit_down=-90):'''在一定角度范围内,图像随机旋转:param img::param limit_up:旋转角度上限:param limit_down: 旋转角度下限:return: 旋转后的图像'''# 旋转矩阵rows, cols = img.shape[:2]center_coordinate = (int(cols / 2), int(rows / 2))angle = random.uniform(limit_down, limit_up)M = cv2.getRotationMatrix2D(center_coordinate, angle, 1)# 仿射变换out_size = (cols, rows)rotate_img = cv2.warpAffine(img, M, out_size, borderMode=cv2.BORDER_REPLICATE)return rotate_img

上下左右随机平移:

def shift(img, distance_down=-500, distance_up=500):'''利用仿射变换实现图像平移,平移距离∈[down, up]:param img: 原图:param distance_down:移动距离下限:param distance_up: 移动距离上限:return: 平移后的图像'''rows, cols = img.shape[:2]y_shift = random.uniform(distance_down, distance_up)x_shift = random.uniform(distance_down, distance_up)# 生成平移矩阵M = np.float32([[1, 0, x_shift], [0, 1, y_shift]])# 平移img_shift = cv2.warpAffine(img, M, (cols, rows), borderMode=cv2.BORDER_REPLICATE)return img_shift

固定尺寸随机进行裁剪:

def crop(img, crop_x=600, crop_y=600):'''读取部分图像,进行裁剪:param img::param crop_x:裁剪x尺寸:param crop_y:裁剪y尺寸:return:'''rows, cols = img.shape[:2]# 偏移像素点x_offset = random.randint(0, cols - crop_x)y_offset = random.randint(0, rows - crop_y)# 读取部分图像img_part = img[y_offset:(y_offset+crop_y), x_offset:(x_offset+crop_x)]return img_part

随机调整图像亮度、对比度调整:

def lighting_adjust(img, k_down=0, k_up=5, b_down=0, b_up=3):'''图像亮度、对比度调整:param img::param k_down:对比度系数下限:param k_up:对比度系数上限:param b_down:亮度增值上限:param b_up:亮度增值下限:return:调整后的图像'''# 对比度调整系数slope = random.uniform(k_down, k_up)# 亮度调整系数bias = random.uniform(b_down, b_up)# 图像亮度和对比度调整img = img * slope + bias# 灰度值截断,防止超出255img = np.clip(img, 0, 255)return img.astype(np.uint8)

图像加高斯噪声:

def Gaussian_noise(img, mean=0, std=0.05):'''图像加高斯噪声:param img: 原图:param mean: 均值:param std: 标准差:return:'''image = np.array(img/255, dtype=float)noise = np.random.normal(mean, std ** 0.5, image.shape)out = image + noiseif out.min() < 0:low_clip = -1.else:low_clip = 0.out = np.clip(out, low_clip, 1.0)out = np.uint8(out*255)return out

图像归一化:

def normalization(img, mean = [0.485, 0.456, 0.406], std= [0.229, 0.224, 0.225]):'''图像归一化,图像像素点从(0,255)->(0,1):param img::param mean:所有样本图像均值 默认数值来自imagenet统计:param std: 所有样本图像标准差:return:'''img = img.astype('f')img -= meanimg /= stdimg = np.uint8(img)return img

案例来源与网络,图像时自己生成的,收藏下来以后用。

图片数据增强的方法——收藏相关推荐

  1. Python PIL库处理图片常用操作,图像识别数据增强的方法

    在博客AlexNet原理及tensorflow实现训练神经网络的时候,做了数据增强,对图片的处理采用的是PIL(Python Image Library), PIL是Python常用的图像处理库. 下 ...

  2. python 图片数据增强_数据增强之批量修改图像尺寸大小(附Python实现)

    2019 is a new start! 很久没有更啦~希望不要懒惰.(虽然不努力真滴很舒服诶) 今天就来说一下之前在处理图片时候用到的一些知识. 数据增强 在接触Alexnet网络结构模型的时候,第 ...

  3. LabelImg,LabelMe工具标注后的图片数据增强

    向AI转型的程序员都关注了这个号???????????? 人工智能大数据与深度学习  公众号:datayx 这是一个目标检测和目标分割增强的小工具,需要您事先标记一些图片,然后变化增强图片(支持Lab ...

  4. 目标检测:python实现多种图像数据增强的方法(光照,对比度,遮挡,模糊)

    图像数据增强的内容(可根据需要自定义选择): 1.直方图均衡化 2.clahe自适应对比度直方图均衡化 3.白平衡 4.亮度增强 5.亮度,饱和度,对比度增强 6.去除图像上的高光部分 7.自适应亮度 ...

  5. Python深度学习-Data Augmentation:使用Augly库进行图片数据增强

    Augly AugLy 是一个数据增强库,可以帮助评估和提高模型的稳健性.该库支持四种模式(音频.视频.图像和文本),并且包含 100 多种执行数据增强的方法.如果正在从事使用音频.视频.图像或文本数 ...

  6. 深度学习之批量图片数据增强

    在之前的文章中,分别对数据增强的库函数进行了介绍,本文将结合实际应用进行批量图片的数据增强. 背景:项目采集的是灰度图,原数据只有不到20张图片,因此,选择数据增强的方法,通过不同变换方法的组合,实现 ...

  7. DL之AlexNet:利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型)

    DL之AlexNet:利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型) 目录 利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型) 设计思路 处 ...

  8. Dataset之图片数据增强:设计自动生成汽车车牌图片算法(cv2+PIL)根据随机指定七个字符生成逼真车牌图片数据集(自然场景下+各种噪声效果)可视化

    Dataset之图片数据增强:设计自动生成汽车车牌图片算法(cv2+PIL)根据随机指定七个字符生成逼真车牌图片数据集(自然场景下+各种噪声效果)可视化 导读 设计自动生成汽车车牌图片算法,基于cv2 ...

  9. Dataset之图片数据增强:基于TF实现图片数据增强(原始的训练图片reshaped_image→数据增强→distorted_image(训练时直接使用))

    Dataset之图片数据增强:基于TF实现图片数据增强(原始的训练图片reshaped_image→数据增强→distorted_image(训练时直接使用)) 目录 数据增强步骤 数据增强实现代码 ...

最新文章

  1. JavaScript基础(三)流程控制
  2. rsync同步操作 、 发布rsync共享 、 inotify实时同步 、 Split分离解析
  3. 良心发现?百度网盘不用开会员,下载速度也能达到7M/S了
  4. 每日一笑 | 马冬梅当上了百度投资董事???
  5. 机器学习笔记(九):应用机器学习的建议
  6. java学习笔记之数组
  7. java https安全传输
  8. 面试官问你有什么要问的时候,大胆的提出类似问题
  9. C#中的类型转换(转载)
  10. SharePoint自动化系列——Set MMS field value using PowerShell.
  11. Windows查询端口的进程
  12. 教科书级——黑盒测试设计用例的方法的介绍
  13. 异名童鞋的微信小游戏性能优化
  14. 浏览器安全检查5秒解决方案
  15. PIBOT移植ROS2记录(2)-添加Node与cmd_vel
  16. 【LeetCode】1160. 拼写单词(C++)
  17. zabbix监控软件安装
  18. 200行Perl 语言实现 VCD 转ATE测试pattern ---pattern的解析
  19. MySQL 8.0.20 Window10免安装版配置及Navicat管理
  20. 【Windows取证】隐藏用户

热门文章

  1. 维特比算法在隐马尔可夫模型中的应用
  2. 《 猜数字》小游戏的Java实现
  3. linux下安装EDK2开发环境,EDK2开发环境搭建 - osc_y9wmeuxa的个人空间 - OSCHINA - 中文开源技术交流社区...
  4. 蚂蚁java一二三面面经
  5. windows环境中安装php的redis扩展及ThinkPhp5使用redis缓存
  6. 抖音推广——抖音吸粉技巧分享
  7. layui 动态表格 合并单元格
  8. Linux下批量把GDK编码的文章转化为UTF-8编码的文章以及“iconv: 未知 xxx 处的非法输入序列”错误处理
  9. 通过注册表方式启动和关闭手写输入法(方法适合各种应用)
  10. 基于工业树莓派的AGV机器小车控制系统