Tensorflow 图像数据预处理,标准化

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

1.需要导入的包

for n in range(4600):
#    input_data用来保存所有faces图片的路径
    data_path=r'C:\Users\Administrator\Desktop\dataset\faces-resize-gray\{}.jpg'.format(n+1)       
    input_data.append(data_path) 
``
`
2.创建一个数组保存所有图片的路径信息

def faces_batch(input_data):
random.shuffle(input_data)

train_data保存图像数据

train_data=np.empty((BATCH_SIZE,IMAGE_SIZE,IMAGE_SIZE))

随机返回batch个图像的路径

random_path=[]
random_path=random.sample(input_data,BATCH_SIZE)

3.首先random.shuffle就地打乱列表,再随机从列表中返回十个图片的地址,

for i in range(BATCH_SIZE):

读取随即返回的batch个路径对应的picture,并保存到一个第一维为batch大小的数组

    image=Image.open(random_path[i])

图像随机左右翻转

    if random.randint(1,11) >random.randint(1,10):
        image = image.transpose(Image.FLIP_LEFT_RIGHT)
        
    img_ndarray=np.asarray(image,dtype='float64')
4.前面设置为randint(1,11),后面为(1,10)保证了图片被水平翻转的概率为0.5

图像明度,对比度随机调整

    gamma=random.randint(-30,30)
    a=random.uniform(0.85,1.3)

    img_brightness=a*img_ndarray + gamma 
5.gamma值调整亮度
a值调整对比度

图像归一化处理

    mean=np.sum(img_brightness)/4096
    std=np.std(img_ndarray)
    standard_img=(img_brightness-mean)/std
    
    train_data[i]=standard_img

train_data = train_data.astype('float32')  
return train_data

6.np.sum()/(imgsize*imgsize)求出像素均值
np.std求出标准差


你可能感兴趣的:(tensorflow)