# Image normalization and transformation

I’m trying to normalize the intensity of the images in the dataset that I have and crop the images to 32 by 32 pixels. The image dataset shape is (36, 2152, 2552, 3) and I want it to be something like (x,32,32)

You could use `torchvision.transforms` to crop and normalize the input data.
Could you describe a bit more where exactly you are stuck or which errors you are facing?

my data is not normalized between 0 and 1
here is my code

``````from PIL import Image
import os, sys
import cv2
import numpy as np

path = "C03/"
dirs = os.listdir( path )
dirs.sort()
x_test=[]

for item in dirs:
if os.path.isfile(path+item):
im = Image.open(path+item).convert('RGB')
im = np.array(im)
x_test.append(im)

imgset=np.array(x_test)
np.save("imgds.npy",imgset)

import torchvision.transforms as T
preprocess = T.Compose([
T.ToPILImage(),
T.CenterCrop(32),
T.ToTensor(),
T.Normalize(
mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225]
),
T.Grayscale(num_output_channels=1)

])
x=[]

for i in imgset:
i=np.array(preprocess(i))
x.append(i)
x=np.array(x)
``````

And I would love to, later on, apply this code to the data:

``````imgset_test = x.astype(np.float64)
imgset_test = imgset_test/ (2**14)

imgset_test = imgset_test.reshape(imgset_test.shape[0],1,32,32)
I don’t know which range your data values are in, but `T.Normalize` using the current stats would expect an input with values in `[0, 1]`, so you might need to normalize the raw data before applying the transformation.