迟早有一天,所有的一切都是数字,包括图像。
看过《终结者》的人肯定会认为这是那个时代最伟大的科幻电影。在这部电影中,James Cameron 引入了一个有趣的视觉效果概念,它可以使观众有可能躲在被称为终结者的电子人的眼睛后面。这种效应被称为「终结者视觉」,在某种程度上,它将人与背景分割开来。在当时,这听起来完全是天方夜谭,但在如今,图像分割已经成为了许多图像处理技术的重要组成部分。
图像分割
我们都很清楚,Photoshop 或类似的图形编辑器提供了无限的可能性,可以将一个人从一张图片中带到另一张图片中。然而,要这样做,首先需要确定那个人在源图像中的位置,这就需要用到图像分割技术了。有许多库是为图像分析而编写的。在本文中,我们将详细讨论基于 python 的图像处理库 scikit-image。
在这里给大家推荐一个python系统学习q群:250933691有免费开发工具以及初学资料,(数据分析,爬虫,AI, 机器学习,神经网络)每天有老师给大家免费授课,欢迎一起交流学习
scikit-image
SciKit Image 是一个专门用于图像处理的 python 包。
安装
可以按如下方式安装 scikit-image:
pip install -U scikit-image(Linux and OSX)
pip install scikit-image(Windows)
# For Conda-based distributions
conda install scikit-image
python 中的图像处理概述
在使用图像分割技术之前,有必要先了解 scikit image 以及它是如何处理图像的。
从 skimage 库导入灰度图像
skimage 数据模块包含一些内置示例数据集,这些数据集通常以 jpeg 或 png 格式存储。
from skimage import data
import numpy as np
import matplotlib.pyplot as plt
image = data.binary_blobs()
plt.imshow(image, cmap='gray')
从 skimage 库导入彩色图像
from skimage import data
import numpy as np
import matplotlib.pyplot as plt
image = data.astronaut()
plt.imshow(image)
从外部源导入图像
# The I/O module is used for importing the image
from skimage import data
import numpy as np
import matplotlib.pyplot as plt
from skimage import io
image = io.imread('skimage_logo.png')
plt.imshow(image);
加载多个图像
images = io.ImageCollection('../images/*.png:../images/*.jpg')
print('Type:', type(images))
images.files
Out[]: Type:
保存图像