使用Python进行图像处理

本文介绍了如何使用Python的scikit-image库进行图像处理,包括获取图像尺寸、转换为灰度图像和应用Sobel滤镜。示例展示了如何处理图像,强调了图像在沟通中的重要性,特别是对于医学图像分析。
摘要由CSDN通过智能技术生成

在1911年一份报纸上讨论新闻和宣传并引用报纸编辑Tess Flanders的文章中,出现了以下表达:

使用图片。 值一千个字。

类似的短语也出现在1913年的Piqua汽车供应公司的报纸广告中:

一看值得一千个字。

我不会深入探讨历史问题。 简介只是为了使其有趣一点,并说明这些短语如何使我们了解图片的重要性,以及它们如何真正在其中嵌入很多信息。 我敢肯定,我们大多数人都会意识到这一点,尤其是当我们注意到图片不仅可以留在纯文本上,而且还能留在我们的脑海中时。

因此,毫无疑问,图片在我们的沟通中扮演着重要的角色,不仅是普通图片,而且还包括医学图像(例如MRI,超声等)之类的专业照片。

我们可以通过不同的采集设备获取照片。 例如,使用皮肤镜检索黑色素瘤(皮肤癌)图像。 我们使用数码相机或智能手机为自己或朋友拍照。 但是,有时我们会在图片中发现一些问题,例如模糊,这可能是由于所使用的采集设备引起的。

但是,在这种情况下该怎么办? 您已经收到了一些医学图像进行分析,而您别无选择,无法重新获取这些图像。 即使重新拍摄图像,您看到的分辨率也不会改变,也不会遇到任何其他问题。 在这种情况下, 图像处理将发挥作用。

我喜欢在牛津词典中如何定义图像处理一词:

分析和处理数字化图像,特别是为了提高其质量。

这里的“数字化图像”是指图像被认为是数字的 ,即它是由计算机处理的。

在此游戏中使用计算机意味着要使用编程语言。 在本教程中,我将向您展示如何使用Python编程语言对图像执行图像处理任务。

scikit图像

我们将用于执行图像处理任务的库是scikit-image 。 根据论文scikit-image:Python中的图像处理

scikit-image是一个图像处理库,可实现用于研究,教育和行业应用的算法和实用程序。 它是根据开放的Modified BSD开源许可证发行的,以Python编程语言提供了完善的API,并且是由活跃的国际协作者团队开发的。

我们需要做的第一件事是安装scikit-image 。 安装库的说明可以在下载页面上找到,在本教程中,我将向您展示如何在Mac OS X机器上安装该库,因为这是我在编写本教程时正在使用的内容。

由于scikit-image是一个外部库,因此我们要做的第一件事就是安装该库。 为此,我将使用pip ,它(基于维基百科):

软件包管理系统,用于安装和管理以Python编写的软件包。 在Python软件包索引(PyPI)中可以找到许多软件包。

您可以按照《 Python打包用户指南》中提到的步骤安装pip ,但是如果您具有Python 2.7.9和更高版本,或者Python 3.4和更高版本,则已经具有pip

现在可以通过键入以下命令(在Mac OS X的Terminal中)简单地安装scikit-image

pip install -U scikit-image

现在,我们已经安装了该库,并准备好进行一些图像处理了!

我们将在本教程中使用的测试图像是baboon.png 。 继续下载它,或者只是使用您选择的图像。 该图像如下所示:

狒狒

图片尺寸

有时我们需要知道图像的尺寸(有关过滤的更多信息)。 为了检查图像的尺寸,我们可以使用guess_spatial_dimensions()方法,如下所示:

from skimage import io, color
img = io.imread('baboon.png')
dimensions = color.guess_spatial_dimensions(img)
print dimensions

上面脚本的输出为3 ,这意味着我们有一个包含三个空间维度的图像。

颜色到灰度

从上面的部分中,我们已经注意到我们的图像是3D阵列图像(形状为(.., .., 4) RGBA格式)。 我怎么知道它是RGBA格式? 您可以简单地执行以下操作:

import skimage.io as io
from skimage.color import rgb2gray 
img = io.imread('baboon.png')
print img.shape

在这种情况下,您将获得以下输出: (512, 512, 4)

在本节中,我们想将原始的彩色baboon.png图像转换为灰度 2D图像(黑白)。 只需使用以下脚本即可完成此操作:

import skimage.io as io
from skimage.color import rgb2gray 
img = io.imread('baboon.png')
img_grayscale = rgb2gray(img)

让我们继续并将新图像(灰度)保存到文件中。 可以使用imsave()函数完成此操作,如下所示(注意,新图像位于文件baboon-gs.png ):

io.imsave('baboon-gs.png',img_grayscale)

要检查图像的尺寸,我们可以使用上一节中的脚本,在这种情况下,您将获得2 。 或者,您可以使用img_grayscale.shape ,结果为512x512 。 因此,我们现在有了一个2D图像。

为了显示新的灰度图像,请在脚本末尾添加以下内容:

show_grayscale = io.imshow(img_grayscale)
io.show()

结果看起来像这样:

狒狒图像灰度

将滤镜应用于图像

在图像处理中,执行过滤以对图像进行一些增强。 通常,滤波包含以下操作:边缘增强,锐化和平滑。

在本节中,我将向您展示如何在图像上应用Sobel滤镜 ,并查看执行此操作后的输出结果。 我将使用scikit-image网站首页上显示的示例,但将其应用于我们的图像。

在图像上应用Sobel滤镜的脚本如下所示:

from skimage import data, io, filters
img = io.imread('baboon.png')
edges = filters.sobel(img)
io.imshow(edges)
io.show()

如果您运行脚本,是否注意到任何问题? 是的,由于图像必须是2D图像,因此我们无法应用该操作。 因此, baboon.png使用baboon.png ,我们还需要使用2D图像baboon-gs.png 。 该操作的输出如下所示:

应用了Sobel滤镜的狒狒图像

结论

图像处理操作很多,并且scikit-image Python库为我们提供了许多我们可以对图像执行的有趣操作。 您可以在scikit-image网站上使用此库查看更多图像处理操作。

无论您是刚刚起步还是想学习新技能的经验丰富的程序员,都可以通过我们完整的python教程指南学习Python。

翻译自: https://code.tutsplus.com/tutorials/image-processing-using-python--cms-25772

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值