欢迎光临散文网 会员登陆 & 注册

第十五篇—图像变换(transforms专题)

2023-02-15 16:21 作者:YouOnly_LiveOnce  | 我要投稿

方法一:ToTensor( )

功能:把图片转换为张量(shape:H*W*C转C*H*W),并将像素值归一化(0~255转0~1);

代码实现:

结果:

ToTensor()



方法二:Normalize(mean,std,inplace=False)

功能:按照Channel对图像进行标准化;

mean:各通道的标准差,[ R_mean,G_mean,B_mean ];

std:各通道的标准差,[ R_std,G_std,B_std ];

inplace:是否原地操作,参考第十一篇—自动求导(autograd)

标准化

代码实现:

结果:

Normalize()



方法三:Resize([ H, W ])

功能:调整图像的分辨率,缩放到(H,W);

代码实现:

结果:

Resize()



方法四:Pad(padding,fill=0,padding_mode="constant")

功能:对图像边缘进行填充;

padding:设置填充大小,a表示左右上下边均填充a个像素,(a,b)表示左右边均填充a个像素、上下边均填充b个像素,(a,b,c,d)表示左边填充a个像素,上边填充b个像素,右边填充c个像素,下边填充d个像素;

fill:填充的像素值,默认为0(黑);

padding_mode:填充模式,默认为"constant",参考第十三篇—裁剪(Crop)

代码实现:

结果:

Pad()



方法五:ColorJitter(brightness=0,contrast=0,saturation=0,hue=0)

功能:调整图像亮度、对比度、饱和度和色调;

brightness:亮度因子;

contrast:对比度因子;

saturation:饱和度因子;

hue:色调因子;

其中,亮度、对比度和饱和度为a时,表示从[max(0,1-a),1+a]中取值,为(a,b)时,表示从[a,b]中取值;色调为a(0<=a<=0.5)时,表示从[-a,a]中取值,为(a,b)(0<=a<=b<=0.5)时,表示从[a,b]中取值;

代码实现:

结果:

ColorJitter()



方法六:Grayscale(num_output_channels=1)

功能:将图片转换为灰度图;

num_output_channels:输出的通道数,只能取1或3;

代码实现:

结果:

Grayscale()



方法七:RandomGrayscale(p=0.1)

功能:按照概率p将图片转换为灰度图;

p:转换的概率;

代码实现:

结果:

RandomGrayscale()



方法八:

RandomAffine(degrees,translate=None,scale=None,shear=None,fillcolor=0)

功能:对图片进行仿射变换(2维的线性变换),由5种基本操作组成:旋转、平移、缩放、翻转和错切;

degrees:旋转角度(以中心点旋转);

translate:平移区间,(a,b)表示 -W*a<=dx<=W*a,-H*b<=dy<=H*b,dx和dy为平移距离,H和W为图像高和宽;

scale:缩放比例;

shear:错切角度(包括水平错切和垂直错切),a表示仅在X轴错切、在(-a,a)之间随机选择错切角度,(a,b)表示X轴在(-a,a)之间随机选择错切角度、Y轴在(-b,b)之间随机选择错切角度,(a,b,c,d)表示X轴在(a,b)之间随机选择错切角度、Y轴在(c,d)之间随机选择错切角度;

fillcolor:填充颜色;

代码实现:

结果:

RandomAffine()



方法九:LinearTransformation(transformation_matrix,mean_vector)

功能:用一个转换矩阵和一个离线计算出的均值向量将图片进行转换;

transformation_matrix:转换矩阵,类型为Tensor,格式为二维D*D,D=C*H*W;

mean_vector:均值向量,类型为Tensor,格式为一维D,D=C*H*W;

计算过程:

LinearTransformation()

代码实现:

结果:

result



方法十:RandomErasing(p=0.5,scale=(0.02,0.33),ratio=(0.3,3.3),value=0)

功能:对图像进行随机擦除,对象为Tensor;

p:擦除概率;

scale:擦除面积比例,在(a,b)中随机取值;

ratio:擦除区域长宽比,在(a,b)中随机取值;

value:擦除区域的像素值,默认为0(黑),因为操作对象为Tensor,像素值已被归一化,所以value需要除以255;

代码实现:

结果:

RandomErasing()



方法十一:ToPILImage()

功能:将Tensor类型转为PIL类型;

实现过程:

Tensor-PIL

代码实现:

结果:

PIL-Tensor-PIL



方法十二:Lambda()

功能:匿名函数;

通过匿名函数实现图片打包:

结果:


第十五篇—图像变换(transforms专题)的评论 (共 条)

分享到微博请遵守国家法律