图像大小调整(缩放)

server/2024/11/14 1:48:08/
尺寸调整前尺寸调整前

1、背景介绍

      在深度学习中,将图像调整到固定尺寸(如28x28像素)的操作是非常常见的,尤其是在处理诸如图像分类、物体检测和图像分割等任务时。这种操作有几个重要原因:

  1. 标准化输入:许多深度学习模型都是为特定输入尺寸设计的。将所有图像调整到相同的尺寸可以确保每个输入都被以相同的方式处理,这有助于模型的训练和预测。

  2. 批量处理:在深度学习中,通常会使用批处理技术来同时处理多个输入。固定尺寸的图像可以更容易地与批量大小对齐,从而提高计算效率。

  3. 网络架构的假设:一些网络架构(如LeNet、AlexNet等)假设输入图像具有特定的尺寸。如果输入图像的大小不一致,网络可能无法正确地处理它们。

  4. 计算效率:固定尺寸的图像可以简化模型的设计,使得网络层(如卷积层和池化层)的参数数量减少,从而提高计算效率。

  5. 数据增强:在训练过程中,可以对调整后的图像应用数据增强技术,如随机裁剪、旋转、缩放等,以增加训练数据的多样性,从而提高模型的泛化能力。

  6. 输入层的大小:大多数深度学习框架(如TensorFlow和PyTorch)的输入层(如tf.placeholdertorch.autograd.Variable)需要知道输入数据的尺寸。固定尺寸的图像可以确保输入层正确地设置其形状。

       如下图所示,人工制作的一张图片,像素为71*70,与常用模型固定尺寸存在差异,如28*28,需要处理,要达到如下效果。

71*7028*28


2、图像尺寸调整

      本次介绍2种场景下图像尺寸调整,分别为单张图片调整、批量图像尺寸调整

2.1 单张图像尺寸调整

      单张图像调整,即只对一张图像尺寸调整,代码如下。如下所示,将0.jpg的图片,调整为大小为28*28的图像,使用函数resize()函数。

python">from PIL import Image#单独图片进行裁切处理
# 读取图片
image_path = '0.jpg'  # 替换为你的图片路径
image = Image.open(image_path)# 调整图片大小为28x28像素
resized_image = image.resize((28, 28), Image.BICUBIC)# 保存或显示调整大小的图片
resized_image.save('0_resize.jpg')
resized_image.show()

      效果如下图所示,左边为原始图像,经过调整后,图像尺寸变为28*28,变小了。因此,右边图像明显小于左边。

2.2 批量图像尺寸调整

       实际中,图像在处理前需要统一尺寸大小,方便后续图像处理。因此,存在一个批量处理过程。其对多张图像进行统一处理。如下代码,为对10张图片,统一调整为尺寸大小为28*28的图像,其中处理前图像命名按照1.jpg、2.jpg、3.jpg、......进行命名。如下图所示,其实可以发现,0-9这10张图片,尺寸大小是不一样的。

      如下代码中,文件路径infile采用了for循环语句进行给定,其中{}可以看成数字i。在最后保存时,以同样方式进行保存调整尺寸后的图片。

python">#批量进行裁切
from PIL import Image
for i in range(10):infile = 'D:/test/' + '{}.jpg'.format(i)image = Image.open(infile)# 调整图片大小为28x28像素resized_image = image.resize((28, 28), Image.BICUBIC)#颜色进行反转savefile='D:/test/' +'{}'.format(i)+'_resize.jpg'resized_image.save(savefile)

      如下图所示,排在前面的为调整尺寸后图像,可以发现其尺寸大小基本一致,表明程序运行成功。其实,从图像详细信息中,可以查看像素值,如下图所示。

调整前像素97*103调整后像素28*28

3、总结

      本次介绍了基于python中Image库,实现对图像大小调整,其中包含单张图像与批量图像大小调整。


http://www.ppmy.cn/server/53104.html

相关文章

汽车IVI中控开发入门及进阶(三十一):视频知识扫盲

有效的视频资源管理需要集成许多不同的底层技术,共同为用户提供给定应用程序的最佳体验。其中许多技术是从早期电视广播中使用的技术演变而来的。其他方法,如用于通过网络流式传输视频的压缩方法,相对较新且不断发展。 以下详细概述了与图形和视频处理和传输相关的一些基本…

Apollo学习笔记

安装依赖: npm install apollo/client graphql react 初始化Apollo Client # 导入依赖库 const { ApolloClient, InMemoryCache, gql } require(apollo/client);# 创建ApolloClient实例 const client new ApolloClient({uri: http://localhost:4000/,cache: ne…

Redis-哨兵模式-主机宕机-推选新主机的过程

文章目录 1、为哨兵模式准备配置文件2、启动哨兵3、主机6379宕机3.4、查看sentinel控制台日志3.5、查看6380主从信息 4、复活63794.1、再次查看sentinel控制台日志 1、为哨兵模式准备配置文件 [rootlocalhost redis]# ll 总用量 244 drwxr-xr-x. 2 root root 150 12月 6 2…

搭建淘宝扭蛋机小程序需要满足哪些条件

随着移动互联网的快速发展,小程序作为一种轻量级应用,以其便捷、高效的特点,逐渐成为了用户日常生活中不可或缺的一部分。特别是在电商平台中,小程序为商家和用户之间提供了更为直接的沟通桥梁。在这样一个背景下,搭建…

Java面试题:讨论单例模式的实现方式,包括懒汉式和饿汉式,并讨论线程安全问题

单例模式(Singleton Pattern)是一种设计模式,确保一个类只有一个实例,并提供一个全局访问点。单例模式在某些场景下很有用,例如配置管理、日志记录等。以下是单例模式的两种主要实现方式:懒汉式&#xff08…

未来已来,如何打造智慧养殖场?

近年来,国家出台了一系列扶持政策,以促进养殖行业高质量发展,推动行业转型升级。在国家政策和市场需求的双重驱动下,养殖行业正迎来前所未有的发展机遇。智慧养殖以其高效、智能和可持续的特点,正逐步取代传统养殖方式…

C++学习笔记---POCO库

在Windows系统中安装POCO 1)安装OpenSSL POCO编译安装依赖OpenSSL,如果未安装OpenSSL则应该先安装OpenSSL。 假设将OpenSSL安装在C:\OpenSSL-Win64,将C:\OpenSSL-Win64、C:\OpenSSL-Win64\lib添加到PATH环境变量中2)安装POCO 将p…

AV Foundation学习笔记一(AVFoundation系统概述)

下图是AV Foundation在ios和mac os系统中所处的位置。 Core audio框架包含了所有音频相关的处理逻辑。该框架提供了高级接口(比如Audio Queue Services框架用于播放和录制音频)和底层接口(比如audio units用于控制音频信号)Core…