当前位置:网站首页>Image data enhancement (translation, rotation, brightness transformation, flipping, adding Gaussian noise, scaling, cropping)

Image data enhancement (translation, rotation, brightness transformation, flipping, adding Gaussian noise, scaling, cropping)

2022-06-11 07:46:00 Keep_ Trying_ Go

1. translation :

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)

Experimental results :
 Insert picture description here

Reference link :https://blog.csdn.net/imxlw00/article/details/112767623
2. rotate :

import cv2 
import matplotlib.pyplot as plt

Mode one :

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)

Experimental results :

 Insert picture description here

Mode two :

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]
# The first parameter is the center of rotation , The second parameter is rotation angle , The third parameter : Zoom ratio  
    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)

Experimental results :
 Insert picture description here

Mode three :

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)
    
    # The first parameter is zero image, The second parameter is the number of degrees of rotation 
    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)

Experimental results :
 Insert picture description here

Mode 4 :

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)
    
    # The first parameter is zero image, The second parameter is the number of degrees of rotation , The third parameter is whether to change the size 
    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)

Experimental results :
 Insert picture description here
References and citations :
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. Brightness conversion :

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)

Experimental results :
 Insert picture description here

References and citations :
https://blog.csdn.net/qq_28891989/article/details/95592462
4. Flip :

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)

Experimental results :
 Insert picture description here
5. Add Gaussian noise :

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 - prob
    for i in range(image.shape[0]):
        for j in range(image.shape[1]):
            rdn = random.random()
            if rdn < prob:
                output[i][j] = 0
            elif rdn > thres:
                output[i][j] = 255
            else:
                output[i][j] = image[i][j]

    return output

Mode one :

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)

Experimental results :
 Insert picture description here
Mode two :

def Gasuss_Noise(image, mean=0, var=0.001):
    '''
     Add Gaussian noise 
    mean :  mean value 
    var :  variance 
    '''
    image = np.array(image/255, dtype=float)
    noise = np.random.normal(mean, var ** 0.5, image.shape)
    out = image + noise
    if 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)

Experimental results :
 Insert picture description here
6. The zoom :

import cv2 
import imutils 
from PIL import Image
import matplotlib.pyplot as plt

Mode one :

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)

Experimental results :
 Insert picture description here
Mode two :

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)

Experimental results :
 Insert picture description here
Mode three :

import tensorflow as tf
(x_train,y_train),(x_test,y_test)=tf.keras.datasets.mnist.load_data()

Be careful :# This requires great attention ,transform.rescale Medium image It's a grayscale image , That is, the color channel is 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])

Experimental results :
 Insert picture description here
References and citations :
https://blog.csdn.net/duanyajun987/article/details/82663224
7. Tailoring :

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)

Experimental results :
 Insert picture description here
For the above , I've given you links to articles in the references and citations section . The other parts are implemented by ourselves .

原网站

版权声明
本文为[Keep_ Trying_ Go]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/03/202203020518291958.html