介绍
我们非常熟悉结构化(表格)数据的预处理步骤。你可以找到缺失的值然后添补它,然后检测并处理异常值,等等这些步骤。这有助于我们建立更好、更健壮的机器学习模型。但是当我们处理图像数据时,应该如何进行预处理?
事实证明,在计算机视觉领域(图像、视频等等),预处理是一个至关重要的步骤。skimage是scikit-learn家族的一部分,它是一个非常有用的库,可以帮助我们开始学习。
在本文中,我们会介绍Python中使用skimage对图像进行一些简单但功能强大的预处理技术。
目录
- 什么是skimage?为什么要使用它?
- 使用skimage在Python中读取图像
- 调整图像大小
- 上下翻转图像
- 旋转不同角度
- 水平和垂直翻转
- 图像裁剪
- 改变图像亮度
- 使用滤镜
什么是skimage?为什么要使用它?
Python中有多个库和框架可让我们处理图像数据。那么,为什么要使用skimage?在深入研究本文之前,让我在这里回答。
Scikit-image或skimage是一个用于图像预处理的开源Python包。
如果你以前使用过sklearn,那么开始使用skimage将是小菜一碟。即使你完全不熟悉Python,skimage还是非常易于学习和使用的。
我真正喜欢skimage的地方在于它有一个结构良好的文档,列出了skimage中提供的所有模块,子模块和函数。以下链接是skimage包中所有子模块和函数的列表
1.使用skimage读取图像
让我们从基础开始。第一步是学习如何使用skimage在Python中导入图像。
图像由称为像素的多个小方块组成。我下面显示的图像就是一个很好的例子。你在此处看到的小方块就是像素:
我们可以看到该图像沿垂直线有22个像素,沿水平线有16个像素。因此,此图像的大小将为22 x 16。
当我们使用scikit-image(或其他任何包)读取或加载图像时,我们看到该图像是以数字形式存储。这些数字称为像素值,它们代表图像中每个像素的强度。
使用skimage加载图像
在scikit-image包中,数据模块中提供了几个示例图像。假设我们想加载一个图像来执行一些实验。我们不需要使用外部图像,只需加载包中提供的图像之一即可。
这是执行此操作的Python代码:
from skimage.io import imread, imshowfrom skimage import dataimage = data.astronaut()imshow(image)
注意,我在这里使用了imshow函数来查看图像。
如果你不想使用包提供的图像而是想对你的系统里的图像进行加载的话,我们可以使用skimage中的imread函数。
我们可以读取两种格式的图像,彩色图像和灰度图像。我们将看到这两种方法的实际应用,并理解它们是如何不同的。
使用skimage从系统读取图像
imread函数有一个参数"as_gray