欢迎访问宙启技术站
智能推送

使用torchvision.transformsRandomAffine()函数实现Python中的随机仿射变换

发布时间:2024-01-15 20:29:28

torchvision.transforms.RandomAffine()函数可以用于对图像进行随机仿射变换。该函数的原型如下:

class torchvision.transforms.RandomAffine(degrees, translate=None, scale=None, shear=None, resample=False, fillcolor=0):

参数说明:

- degrees:旋转角度(-degrees, degrees)之间进行随机旋转。

- translate:平移量(float, sequence或二元组)。平移范围为图像的宽高的一个分数(例如(0.1,0.2))或具体的像素值(例如(10,20))。

- scale:缩放量(float或sequence)。如果是一个数字,则图像在两个方向上进行随机缩放的范围是(1-scale, 1+scale);如果是一个序列,它应包含两个准确的缩放因子。

- shear:剪切角度。剪切范围为0,代表没有剪切,剪切范围为(-shear, shear)之间进行随机剪切。

- resample:重采样方法。可以使用的选项有:PIL.Image.NEAREST、PIL.Image.BILINEAR、PIL.Image.BICUBIC或PIL.Image.LANCZOS。如果设置为False,则使用最近的邻居。

- fillcolor:填充值。默认为黑色。

下面是使用示例:

import torchvision.transforms as transforms
from PIL import Image

# 读取图像
img = Image.open('test.jpg')

# 随机仿射变换
affine_transform = transforms.RandomAffine(30, translate=(0.1, 0.1), scale=(0.8, 1.2), shear=10)
transformed_img = affine_transform(img)

# 显示变换后的图像
transformed_img.show()

在上面的示例中,我们先将图像读取为PIL.Image对象,然后使用RandomAffine()函数进行随机仿射变换。将变换后的图像保存在transformed_img对象中,并使用show()函数显示出来。该示例中的参数设置如下:

- 旋转角度:-30度到+30度之间的随机旋转。

- 平移量:图像宽高的10%到20%之间的随机平移。

- 缩放量:图像在两个方向上进行0.8倍到1.2倍之间的随机缩放。

- 剪切角度:-10度到+10度之间的随机剪切。

运行上述代码后,将会随机产生一种变换后的图像,并显示出来。可以多次运行代码查看多种随机变换效果。