# Transform ## ToTensor and 0~1 ``` from torchvision import transforms to_tensor = transforms.ToTensor() img_tensor = to_tensor(img) plt.imshow(img_tensor.squeeze(0), cmap='gray') plt.title("ToTensor (0~1)") plt.axis('off') plt.show() ``` ``` img_tensor ``` ## Resize ``` resize = transforms.Compose([ transforms.Resize((224, 224)), transforms.ToTensor() ]) resized_tensor = resize(img) plt.imshow(resized_tensor.squeeze(0), cmap='gray') plt.title("Resize to 224x224") plt.axis('off') plt.show() ``` ## Normalize ``` normalize = transforms.Compose([ transforms.ToTensor(), transforms.Normalize(mean=[0.5], std=[0.5]) ]) norm_tensor = normalize(img) plt.imshow(norm_tensor.squeeze(0), cmap='gray') plt.title("Normalize [-1, 1]") plt.axis('off') plt.show() ``` ## Random rotaion ``` rotate = transforms.Compose([ transforms.RandomRotation(degrees=20), transforms.ToTensor() ]) rotated_tensor = rotate(img) plt.imshow(rotated_tensor.squeeze(0), cmap='gray') plt.title("Random Rotation ±20°") plt.axis('off') plt.show() ``` ## Random horizontal flip ``` flip = transforms.Compose([ transforms.RandomHorizontalFlip(p=1.0), transforms.ToTensor() ]) flipped_tensor = flip(img) plt.imshow(flipped_tensor.squeeze(0), cmap='gray') plt.title("Horizontal Flip") plt.axis('off') plt.show() ``` ## Random vertical flip ``` vertical_flip = transforms.Compose([ transforms.RandomVerticalFlip(p=1.0), # 強制垂直翻轉 transforms.ToTensor() ]) vflipped_tensor = vertical_flip(img) plt.imshow(vflipped_tensor.squeeze(0), cmap='gray') plt.title("Vertical Flip") plt.axis('off') plt.show() ``` ## ColorJitter ``` color_jitter = transforms.Compose([ transforms.ColorJitter(brightness=0.5, contrast=0.5), transforms.ToTensor() ]) jittered_tensor = color_jitter(img) plt.imshow(jittered_tensor.squeeze(0), cmap='gray') plt.title("ColorJitter: Brightness & Contrast") plt.axis('off') plt.show() ``` ## Gaussian blur ``` gaussian_blur = transforms.Compose([ transforms.GaussianBlur(kernel_size=5, sigma=(0.1, 2.0)), transforms.ToTensor() ]) blurred_tensor = gaussian_blur(img) plt.imshow(blurred_tensor.squeeze(0), cmap='gray') plt.title("Gaussian Blur") plt.axis('off') plt.show() ``` ## Random crop ``` random_crop = transforms.Compose([ transforms.RandomCrop((100, 100)), transforms.ToTensor() ]) cropped_tensor = random_crop(img) plt.imshow(cropped_tensor.squeeze(0), cmap='gray') plt.title("Random Crop 100x100") plt.axis('off') plt.show() ``` ## Elastic transform ``` from torchvision import transforms import matplotlib.pyplot as plt from PIL import Image img = Image.open("train/XR_FINGER/patient00169/study1_negative/image1.png").convert("L") img_rgb = img.convert("RGB") elastic = transforms.Compose([ transforms.ElasticTransform(alpha=250.0), transforms.ToTensor() ]) elastic_tensor = elastic(img_rgb) plt.imshow(elastic_tensor.permute(1, 2, 0)) plt.title("Elastic Transform") plt.axis('off') plt.show() ``` ## Random perspective ``` perspective = transforms.Compose([ transforms.RandomPerspective(distortion_scale=0.5, p=1.0), transforms.ToTensor() ]) perspective_tensor = perspective(img) plt.imshow(perspective_tensor.squeeze(0), cmap='gray') plt.title("Random Perspective") plt.axis('off') plt.show() ``` ## Random erasing ``` erasin = transforms.Compose([ RandomErasing(p=1.0, scale=(0.05, 0.2), ratio=(0.3, 3.3)) transforms.ToTensor() ]) erasin_tensor = perspective(img) plt.imshow(erased_tensor.squeeze(0), cmap='gray') plt.title("Random Erasing") plt.axis('off') plt.show() ``` ## Add gaussian Noise ``` import torch class AddGaussianNoise: def __init__(self, mean=0., std=0.05): self.mean = mean self.std = std def __call__(self, tensor): return tensor + torch.randn_like(tensor) * self.std + self.mean noise_pipeline = transforms.Compose([ transforms.ToTensor(), AddGaussianNoise(std=0.1) ]) noisy_tensor = noise_pipeline(img) plt.imshow(noisy_tensor.squeeze(0).clamp(0, 1), cmap='gray') plt.title("Gaussian Noise") plt.axis('off') plt.show() ``` ## Assembled Transform ``` from torchvision import transforms import torch import matplotlib.pyplot as plt from PIL import Image import random img = Image.open("train/XR_FINGER/patient00169/study1_negative/image1.png").convert("L") transform = transforms.Compose([ transforms.Resize((256, 256)), transforms.RandomHorizontalFlip(p=0.5), transforms.RandomRotation(degrees=10), transforms.ColorJitter(brightness=0.2, contrast=0.2), transforms.ToTensor(), ]) augmented_tensor = transform(img) plt.imshow(augmented_tensor.squeeze(0).clamp(0, 1), cmap='gray') plt.title("") plt.axis('off') plt.show() ```