人工智能——图像处理和Python深度学习教程(快收藏)

介绍

在这篇文章中,我们将学习如何执行图像处理。在整篇文章中,我们使用到的库是Scikit Image。

基础知识
1、什么是图像?

图像数据可能是文本之后最常见的数据。那么,电脑如何理解你在埃菲尔铁塔前的自拍呢?

它使用一个称为像素的小正方形网格。像素覆盖一个小区域,并具有表示颜色的值。图像中的像素越多,其质量越高,存储所需的内存越多。

就是这样。图像处理主要是处理这些单独的像素(有时是像素组),以便计算机视觉算法可以从中提取更多信息。

文末有惊喜哦!!学习资料文末点击拿走~


2、NumPy和Skimage的图像基础

在Matplotlib和Skimage中,图像都作为NumPy ndarray加载。

from skimage.io import imread  # pip install scikit-image
 
image = imread("images/colorful_scenery.jpg")
 
>>> type(image)
numpy.ndarray
NumPy数组带来灵活性、速度和力量。图像处理也不例外。

Ndarrays可以轻松检索图像的一般详细信息,例如图像的尺寸:

>>> image.shape
(853, 1280, 3)
>>> image.ndim

# The number of pixels
>>> image.size  # 853 * 1280 * 3
3275520
我们的图像高度为853像素,宽度为1280像素。第三维表示RGB(红、绿、蓝)颜色通道的值。最常见的图像格式是3D。

你可以通过常规NumPy索引检索单个像素值。下面,我们尝试索引图像以检索三个颜色通道中的每一个通道:

red = image[:, :, 0]
compare(image, red, "Red Channel of the Image", cmap_type="Reds_r")

人工智能——图像处理和Python深度学习教程(快收藏)_第1张图片
green = image[:, :, 1]
compare(image, green, "Green Channel of the Image", "Greens_r")

人工智能——图像处理和Python深度学习教程(快收藏)_第2张图片

blue = image[:, :, 2]
compare(image, blue, "Blue Channel of the Image", "Blues_r")
0表示红色,1表示绿色,2表示蓝色通道-非常简单。

创建了两个函数,show和compare,它们显示一个图像或并排显示其中两个进行比较。在整个教程中,我们将广泛使用这两个函数。

按照约定,ndarray的第三维用于颜色通道,但并不总是遵循此约定。Skimage通常提供参数来指定这种行为。

图像与通常的Matplotlib绘图不同。它们的原点不位于左下角,而是位于左上角的位置(0,0)。

>>> show(image, axis=True)
当我们在Matplotlib中绘制图像时,轴表示像素的顺序,但我们通常会隐藏它们。

3、对比度增强

某些类型的图像(如医学分析结果)对比度较低,很难发现细节,如下所示:

xray = imread("images/xray.jpg")
xray_gray = rgb2gray(xray)

compare(xray, xray_gray)

人工智能——图像处理和Python深度学习教程(快收藏)_第3张图片
在这种情况下,我们可以使用对比度增强使细节更加清晰。有两种对比度增强算法:

对比度拉伸

直方图均衡化

我们将在这篇文章中讨论直方图均衡化,它又有三种类型:

标准直方图均衡化

自适应直方图均衡化

对比度受限自适应直方图均衡化(CLAHE)

直方图均衡化将图像对比度最高的区域扩展到亮度较低的区域,使其均衡。

你可以通过从最高的像素值中减去最低的像素值来计算图像的对比度。

>>> xray.max() - xray.min()

255
现在,让我们尝试exposure模块中的标准直方图均衡化:

from skimage.exposure import equalize_hist

enhanced = equalize_hist(xray_gray)

>>> compare(xray, enhanced)

人工智能——图像处理和Python深度学习教程(快收藏)_第4张图片
我们已经可以更清楚地看到细节了。

from skimage.exposure import equalize_hist

enhanced = equalize_hist(xray_gray)

>>> compare(xray, enhanced)
接下来,我们将使用CLAHE,它为图像中的不同像素邻域计算许多直方图,即使在最暗的区域也会得到更详细的信息:

from skimage.exposure import equalize_adapthist

# Adjust clip_limit
enhanced_adaptive = equalize_adapthist(xray_gray, clip_limit=0.4)

compare(xray, enhanced_adaptive, "Image with contrast enhancement")

人工智能——图像处理和Python深度学习教程(快收藏)_第5张图片
这个看起来好多了,因为它可以在背景中显示细节,在左下角显示更多缺失的肋骨。你可以调整clip_limit以获得更多或更少的细节。

结论

在真正的计算机视觉问题中,你不会同时使用所有这些。正如你可能已经注意到的,我们今天学到的东西并不复杂,最多需要几行代码。棘手的部分是将它们应用于实际问题,并实际提高模型的性能。

点击拿走 “人工智能图像处理深度学习资料”腾讯文档-在线文档https://docs.qq.com/doc/DT2FxZkd4QW1UaENr

你可能感兴趣的:(python,深度学习,人工智能,图像处理,计算机视觉)