图像数据增强(平移,旋转,亮度变换,翻转,添加高斯噪声,缩放,裁剪)
1.平移:
import cv2
import tensorflow as tf
import numpy as np
from PIL import Image
from skimage import transform,data
import matplotlib.pyplot as plt
def Move(image):fig,ax=plt.subplots(nrows=1,ncols=3,figsize=(12,6))ax[0].imshow(image)ax[0].set_title('Original Image',fontsize=14)width,height=image.shape[0],image.shape[1]M=np.float32([[1,0,100],[0,1,50]])image1=cv2.warpAffine(image,M,(height,width))ax[1].imshow(image1)ax[1].set_title('Move Image',fontsize=14)M=np.float32([[1,0,50],[0,1,100]])image2=cv2.warpAffine(image,M,(height,width))ax[2].imshow(image2)ax[2].set_title('Move Image',fontsize=14)plt.show()
image='D:\\1.jpg'
img=cv2.imread(image)
Move(img)
实验效果:
参考链接:https://blog.csdn.net/imxlw00/article/details/112767623
2.旋转:
import cv2
import matplotlib.pyplot as plt
方式一:
def Rotate(image):fig,ax=plt.subplots(nrows=1,ncols=3,figsize=(12,6))ax[0].imshow(image)ax[0].set_title('Original Image',fontsize=14)# width,height=image.shape[0],image.shape[1]image=cv2.rotate(image,cv2.cv2.ROTATE_90_CLOCKWISE)ax[1].imshow(image)ax[1].set_title('Rotate 90 Image',fontsize=14)image=cv2.rotate(image,cv2.ROTATE_180)ax[2].imshow(image)ax[2].set_title('Rotate 180 Image',fontsize=14)plt.show()
image='D:\\1.jpg'
img=cv2.imread(image)
Rotate(img)
实验效果:
方式二:
def Rotate(image):fig,ax=plt.subplots(nrows=1,ncols=3,figsize=(12,6))ax[0].imshow(image)ax[0].set_title('Original Image',fontsize=14)width,height=image.shape[0],image.shape[1]
#第一个参数旋转中心,第二个参数旋转角度,第三个参数:缩放比例 M=cv2.getRotationMatrix2D((width/2,height/2),45,1)image=cv2.warpAffine(image,M,(width,height))ax[1].imshow(image)ax[1].set_title('Rotate 45 Image',fontsize=14)M=cv2.getRotationMatrix2D((width/2,height/2),90,1)image=cv2.warpAffine(image,M,(width,height))ax[2].imshow(image)ax[2].set_title('Rotate 180 Image',fontsize=14)plt.show()
image='D:\\1.jpg'
img=cv2.imread(image)
Rotate(img)
实验效果:
方式三:
import imutils
def Rotate(image):fig,ax=plt.subplots(nrows=1,ncols=3,figsize=(12,6))ax[0].imshow(image)ax[0].set_title('Original Image',fontsize=14)#第一个参数为image,第二个参数为旋转度数image=imutils.rotate(image,90)ax[1].imshow(image)ax[1].set_title('Rotate 90 Image',fontsize=14)image=imutils.rotate(image,180)ax[2].imshow(image)ax[2].set_title('Rotate 180 Image',fontsize=14)plt.show()
image='D:\\1.jpg'
img=cv2.imread(image)
Rotate(img)
实验效果:
方式四:
from skimage import transform,data
def Rotate(image):fig,ax=plt.subplots(nrows=1,ncols=3,figsize=(12,6))ax[0].imshow(image)ax[0].set_title('Original Image',fontsize=14)#第一个参数为image,第二个参数为旋转度数,第三个参数为是否改变大小image=transform.rotate(image,90,resize=False)ax[1].imshow(image)ax[1].set_title('Rotate 90 Image',fontsize=14)image=transform.rotate(image,180,resize=True)ax[2].imshow(image)ax[2].set_title('Rotate 180 Image',fontsize=14)plt.show()
image='D:\\1.jpg'
img=cv2.imread(image)
Rotate(img)
实验效果:
参考和引用:
https://blog.csdn.net/weixin_39862871/article/details/116164648
https://blog.csdn.net/qq_37674858/article/details/80708393
https://blog.csdn.net/denny2015/article/details/50532971
3.亮度变换:
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
import cv2
from skimage import transform,data,exposure
from PIL import Image
def Chnage_Light(image):fig,ax=plt.subplots(nrows=1,ncols=3,figsize=(12,6))ax[0].imshow(image)ax[0].set_title('Original Image',fontsize=14)image1=exposure.adjust_gamma(image,1.5)ax[1].imshow(image1)ax[1].set_title('Change light Image',fontsize=14)image2=exposure.adjust_gamma(image,0.8)ax[2].imshow(image2)ax[2].set_title('Change light Image',fontsize=14)plt.show()
image='D:\\3.jpg'
img=cv2.imread(image)
Chnage_Light(img)
实验效果:
参考和引用:
https://blog.csdn.net/qq_28891989/article/details/95592462
4.翻转:
import cv2
import matplotlib.pyplot as plt
def invert(image):fig,ax=plt.subplots(nrows=1,ncols=3,figsize=(12,6))ax[0].imshow(image)ax[0].set_title('Original Image',fontsize=14)image=cv2.flip(image,0)ax[1].imshow(image)ax[1].set_title('Vertical Image',fontsize=14)image=cv2.flip(image,1)ax[2].imshow(image)ax[2].set_title('Horizontal Image',fontsize=14)plt.show()
image='D:\\1.jpg'
img=cv2.imread(image)
invert(img)
实验效果:
5.添加高斯噪声:
import numpy as np
import cv2
import tensorflow as tf
import matplotlib.pyplot as plt
from PIL import Image
from skimage import transform,data
def AddNoise(image,prob):output = np.zeros(image.shape,np.uint8)thres = 1 - probfor i in range(image.shape[0]):for j in range(image.shape[1]):rdn = random.random()if rdn < prob:output[i][j] = 0elif rdn > thres:output[i][j] = 255else:output[i][j] = image[i][j]return output
方式一:
def Add_Noise(image):fig,ax=plt.subplots(nrows=1,ncols=3,figsize=(12,6))ax[0].imshow(image)ax[0].set_title('Original Image',fontsize=14)image1=AddNoise(image,0.1)ax[1].imshow(image1)ax[1].set_title('AddNoise Image',fontsize=14)image2=AddNoise(image,0.3)ax[2].imshow(image2)ax[2].set_title('AddNoise light Image',fontsize=14)plt.show()
image='D:\\3.jpg'
img=cv2.imread(image)
Add_Noise(img)
实验效果:
方式二:
def Gasuss_Noise(image, mean=0, var=0.001):'''添加高斯噪声mean : 均值var : 方差'''image = np.array(image/255, dtype=float)noise = np.random.normal(mean, var ** 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 Add_GasussNoise(image):fig,ax=plt.subplots(nrows=1,ncols=3,figsize=(12,6))ax[0].imshow(image)ax[0].set_title('Original Image',fontsize=14)image1=Gasuss_Noise(image)ax[1].imshow(image1)ax[1].set_title('Add GasussNoise Image',fontsize=14)image2=Gasuss_Noise(image,1,2)ax[2].imshow(image2)ax[2].set_title('Add GasussNoise Image',fontsize=14)plt.show()
image='D:\\3.jpg'
img=cv2.imread(image)
Add_GasussNoise(img)
实验效果:
6.缩放:
import cv2
import imutils
from PIL import Image
import matplotlib.pyplot as plt
方式一:
def Rescale(image):fig,ax=plt.subplots(nrows=1,ncols=3,figsize=(12,6))ax[0].imshow(image)ax[0].set_title('Original Image',fontsize=14)image=cv2.resize(image,(64,64))ax[1].imshow(image)ax[1].set_title('Resize 64 Image',fontsize=14)image=cv2.resize(image,(224,224))ax[2].imshow(image)ax[2].set_title('Resize 224 Image',fontsize=14)plt.show()
image='D:\\1.jpg'
img=cv2.imread(image)
Rescale(img)
实验效果:
方式二:
from skimage import transform,data
def Rescale(image):fig,ax=plt.subplots(nrows=1,ncols=3,figsize=(12,6))ax[0].imshow(image)ax[0].set_title('Original Image',fontsize=14)image=transform.resize(image,(64,64))ax[1].imshow(image)ax[1].set_title('Resize 64 Image',fontsize=14)image=transform.resize(image,(224,224))ax[2].imshow(image)ax[2].set_title('Resize 224 Image',fontsize=14)plt.show()
image='D:\\1.jpg'
img=cv2.imread(image)
Rescale(img)
实验效果:
方式三:
import tensorflow as tf
(x_train,y_train),(x_test,y_test)=tf.keras.datasets.mnist.load_data()
注意:#这里需要非常的注意,transform.rescale中的image是一张灰度图才对,也就是颜色通道为1
def Rescale(image):fig,ax=plt.subplots(nrows=1,ncols=3,figsize=(12,6))ax[0].imshow(image)ax[0].set_title('Original Image',fontsize=14)image=transform.rescale(image,[0.3,0.5])ax[1].imshow(image)ax[1].set_title('Rescale row is 0.3 and col 0.5 Image',fontsize=14)image=transform.rescale(image,[2,2])ax[2].imshow(image)ax[2].set_title('Rescale row is 0.1 and col 0.2 Image',fontsize=14)plt.show()
Rescale(x_train[0])
实验效果:
参考和引用:
https://blog.csdn.net/duanyajun987/article/details/82663224
7.剪裁:
import cv2
import numpy as np
from PIL import Image
import tensorflow as tf
import matplotlib.pyplot as plt
def Crop(image):fig,ax=plt.subplots(nrows=1,ncols=3,figsize=(12,6))ax[0].imshow(image)ax[0].set_title('Original Image',fontsize=14)Crop_Box=[12,12,78,78]image1=image.crop(Crop_Box)ax[1].imshow(image1)ax[1].set_title('Rotate 90 Image',fontsize=14)Crop_Box=[0,0,100,100]image2=image.crop(Crop_Box)ax[2].imshow(image2)ax[2].set_title('Rotate 180 Image',fontsize=14)plt.show()
image='D:\\1.jpg'
img=Image.open(image)
Crop(img)
实验效果:
对于以上内容,我已经将参考和引用部分的文章链接给出。其他部分属于自己实现。
图像数据增强(平移,旋转,亮度变换,翻转,添加高斯噪声,缩放,裁剪)相关推荐
- 基于OpenCV做图像数据增强(平移、镜像、缩放、旋转、仿射)
前言: 基于OpenCV的基本使用,对图像的数据量进行数据增强,使得框架对神经网络进行训练,提高模型的鲁棒性以及准确性. 原图: 1.平移 平移通过自定义平移矩阵以及函数warpAffine实现: 代 ...
- 对一幅图像添加高斯噪声
参考别人的程序写的,因为网上对图像添加高斯噪声的程序很难找到,我就自己整理出来一份. #include "cv.h" #include "highgui.h" ...
- 深度学习之实现图像数据增强
深度学习之实现图像数据增强 前言 数据增强的意思就是让数据量增多.对于深度学习来说,大的数据量可以训练出更好的深度学习模型. 在图像增强方面,我们常用的手段如下: 旋转 翻转 缩放 平移 尺度变换 对 ...
- 目标检测:python实现多种图像数据增强的方法(光照,对比度,遮挡,模糊)
图像数据增强的内容(可根据需要自定义选择): 1.直方图均衡化 2.clahe自适应对比度直方图均衡化 3.白平衡 4.亮度增强 5.亮度,饱和度,对比度增强 6.去除图像上的高光部分 7.自适应亮度 ...
- Python:图像数据增强和保存
Python:图像数据增强和保存 code 参考博客链接:https://blog.csdn.net/qq_36756866/article/details/108255715 在进行模型分析处理的时 ...
- python批量实现图像数据增强(扩增)
什么是数据扩增? 数据扩增是对数据进行扩充的方法的总称.数据扩增可以增加训练集的样本,可以有效缓解模型过拟合的情况,也可以给模型带来的更强的泛化能力. 通常在进行数据扩增操作的时候应该保持图像原本的标 ...
- 图像数据增强方法一览(附python代码)
在图像分类任务中,图像数据增强一般是大多数人会采用的方法之一,这是由于深度学习对数据集的大小有一定的要求,若原始的数据集比较小,无法很好地满足网络模型的训练,从而影响模型的性能,而图像增强是对原始图像 ...
- 干货 | 图像数据增强实战
我目前正在做图像数据增强的深度和有效性的研究.这项研究的目的是学习怎样增加只有有限或少量数据的数据集大小,增强训练的卷积网络模型的鲁棒性. 需要列出所有可以想到的图像增强的方法,并将这些方法进行组合, ...
- 【Tool】Augmentor和imgaug——python图像数据增强库
Augmentor和imgaug--python图像数据增强库 Tags: ComputerVision Python 介绍两个图像增强库:Augmentor和imgaug,Augmentor使用比较 ...
最新文章
- python 把元组转为列表
- 从词袋到Transfomer,NLP十年突破史
- Python 初学者的最佳学习资源
- python操作mycat只操作主库【解决办法】
- 区分基于Ant目标的Gradle任务
- Chrome 过滤广告插件暂替办法
- JavaScript匿名函数与托付
- python组件化软件github_GitHub - 872409/wepy: 小程序组件化开发框架
- 【java】java 1.8 之 supplier 理解
- 人民币发行量比美元还大吗?
- vscode + SFTP 传输文件到服务器,从服务器下载文件
- iocomp控件 Crack V512-sp6
- java 生成拼音首字母_java 根据汉字生成拼音全拼或拼音首字母的示例
- 使用arcpy遇到的那些坑(二)
- 深度学习:透过神经网络的内在灵魂与柏拉图的哲学理念
- 以大数据架构电商2.0的新时代
- 大批量IP查询和IP区域快速查询
- android游戏开发教程之基本概念
- 逻辑推理:张老师的生日
- HDU - 4544 湫湫系列故事——消灭兔子 贪心+优先队列