2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 图像数据增强(平移 旋转 亮度变换 翻转 添加高斯噪声 缩放 裁剪)

图像数据增强(平移 旋转 亮度变换 翻转 添加高斯噪声 缩放 裁剪)

时间:2023-03-26 03:37:14

相关推荐

图像数据增强(平移 旋转 亮度变换 翻转 添加高斯噪声 缩放 裁剪)

1.平移:

import cv2 import tensorflow as tf import numpy as npfrom PIL import Image from skimage import transform,dataimport 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)

实验效果:

参考链接:/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)

实验效果:

参考和引用:

/weixin_39862871/article/details/116164648

/qq_37674858/article/details/80708393

/denny/article/details/50532971

3.亮度变换:

import numpy as np import tensorflow as tf import matplotlib.pyplot as plt import cv2 from skimage import transform,data,exposurefrom 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)

实验效果:

参考和引用:

/qq_28891989/article/details/95592462

4.翻转:

import cv2import 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 Imageimport 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])

实验效果:

参考和引用:

/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)

实验效果:

对于以上内容,我已经将参考和引用部分的文章链接给出。其他部分属于自己实现。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。