transforms中的常用函数:
Resize(Scale 已废弃,由 Resize 替代):实现图像的缩放(尺寸变换),通过按照比例缩放(放大、缩小)来得到想要的尺寸。
CenterCrop:以图片的中心往外裁剪一定 size 的图片;
RandomCrop:从随机位置开始裁剪图片;
RandomResizedCrop:将给定的 PIL 图像裁剪为随机大小和纵横比。(RandomSizedCrop 已废弃,由 RandomResizedCrop 取代);
ToPILImage:将 PIL Image 或 numpy.ndarray 转换成 tensor 再转成 PIL Image;
ToTensor:将原始的 PILImage 格式或者 numpy.array 格式的数据格式化为可被 pytorch 快速处理的张量类型。
Normalize:提供一个所有通道的均值(mean) 和方差(std),会将原始数据进行归一化,操作的数据格式是 Tensor;
图像缩放 resize() 函数
在 python 中,经常需要对图像进行缩放等预处理操作,OpenCV 库提供了 resize() 函数来实现图像的缩放(尺寸变换)。
个人感觉,resize() 是对图像进行缩放不是裁剪,通过按照比例缩放(放大、缩小)来得到想要的尺寸,然后再送入 CNN 中进行后续的操作。
在 Python 中,图形通常是以向量的形式保存并进行处理的。每个图像都是由许多个像素点构成的,每个像素点都是一个 0~255 的数值,用于表示像素点的颜色信息。黑白图像(灰度图)是通过二维向量(高度
×
\times
×宽度)来表示,彩色图像是通过三维向量(高度
×
\times
×宽度
×
\times
×通道数,通道数为3保存着各个像素红色 Red 、绿色 Green 和蓝色 Blue 的量化数值)来表示。
向量将图像分解成一个个像素,每个向量元素记录着各个像素点的颜色信息,所以这个向量表达的是图片色彩的分布,反过来也可以根据向量包含的信息渲染出对应的图片。
原始的图像是由像素点构成的,需要将图像转为向量(矩阵)的形式才能输入到后续的 CNN 网络中,为了便于后续网络的计算需要将转成的向量固定成指定的尺寸,所以要进行大小调整,也就是通过 resize() 操作来对原始的图像进行缩放处理装换成指定的尺寸。
经过测试发现:不管原始图像的分辨率和 dpi 的值是否相同,通过 Scale 或者 Resize 缩放到相同尺寸的操作后都会将图像的分辨率改成相应的大小,且 dpi 值也变成同一大小。
Reference:
【一文详解】图片与向量的关系
深度学习(5)数据处理-resize
利用OpenCV的函数resize()实现图像的缩放(尺寸变换)
Python中图像的缩放 resize()函数的应用
用python Pillow库resize()方法进一步探究图像处理
图像数据处理