用Python进行机器学习(13)-图像特征提取

boyanx1个月前技术教程12

相对于前面的机器学习都是处理一些简单的数字,今天我们来用机器学习处理一点稍微高级的内容,我们进行图像的特征提取。图像的特征提取有很多的用途,比如图像分类、目标检测、图像检索、聚类分析、异常检测、图像生成、特征融合等,但是饭总是要一口一口吃,知识也是一点一点学,我们先看一下如何提取图像特征。

我们提取到的图像特征是patch,可以理解为是一个图像块,它是指从图像中提取的小区域,它可以包含物体的某个部分或者某个特定的纹理。这里还是使用sklearn加skimage,直接看实际代码吧,如下:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.feature_extraction import image
from skimage import data

# 使用skimage自带的硬币图像
original_image = data.coins()  

# 显示原始图像
plt.subplot(1, 2, 1)
plt.imshow(original_image, cmap='gray')
plt.title('Original Image')
plt.axis('off')

# 从图像中提取随机 patches
patches = image.extract_patches_2d(original_image, (32, 32), max_patches=25, random_state=42)

# 显示提取的patches
plt.subplot(1, 2, 2)
for i, patch in enumerate(patches):  
    plt.imshow(patch, cmap='gray', 
               extent=(i%5 * 32, (i%5 + 1) * 32, 
                      (i//5) * 32, (i//5 + 1) * 32))
plt.xlim(0, 5*32)
plt.ylim(5*32, 0)
plt.title('Extracted Patches')
plt.axis('off')

plt.tight_layout()
plt.show()

上面的代码还是比较好理解的,重点介绍两个地方吧:

第一个就是使用data.coins()来调用类库中已经有的硬币图像,当然也可以使用其他方法比如moon方法来查看月球表面的图像,或者加载自己的图片也可以。

第二个就是extract_patches_2d这个方法,它用来提取二维的图像特征,这里我们最多只抽取25个,每个都是32*32像素大小的。

然后我们来看一下展示的效果吧,如下所示:

需要说明的是,原始图像就是左边的图像,右边则是提取出来的25个特征,每行展示5个特征,每列展示5个特征,为了防止部分朋友看不清,我们再来对这个特征部分来个单独的截图看一下:

可以看到,这里提取到的特征大部分是硬币的边缘部分,不过方向和面积各不相同,有的只截取到了一点,有的则截取到了比较多的部分,下面对这两处做了具体的说明:

对于图片的特征提取,我们先介绍到这里吧,通过特征提取,我们可以更加关注到图片的纹理细节,为图片类型的更多应用打下基础。

相关文章

C语言 vs C++:谁才是编程界的“全能王者”?

C++和C语言作为两种广泛使用的编程语言,在设计理念、功能特性和适用场景上有显著差异。以下是它们的主要区别:1. 编程范式o C语言:过程式编程,强调函数和步骤化执行。o C++:多范式语言,支持过程...

Java同步代码块与同步方法的那些事儿

Java同步代码块与同步方法的那些事儿同步代码块:锁住指定区域想象一下,你正在参加一场紧张的拍卖会,拍卖师手里拿着珍贵的拍品。如果多个竞拍者都想抢着喊价,场面就会变得混乱不堪。这时拍卖师会设置一些规则...

python字符串拼接的方式和性能对比

在编程过程中,常会用到字符串拼接。python里字符串拼接主要有四种方式,分别是,使用加号,join方法,百分号或format字符串格式化,f-string。其中,加号运算符无疑是最常用和最简单的字符...

宽温设计-40℃到70℃破解复杂场景,龙鼎源UHC-5000

宽温设计破解复杂场景的“万能适配器”3.1 宽温设计环境适应性:-40℃到70℃的生存考验宽温设计验证:在内蒙古某风电场(冬季-35℃)和沙特光伏电站(夏季机柜内部65℃)的极端环境中,UHC-500...

在 VS Code 中解决代码冲突的两种方法

常在河边走,哪有不湿鞋。天天写代码,必定遭遇 Git 合并冲突。遇到冲突不用慌,VS Code 来帮忙。VS Code 默认会在一个视图中使用不同颜色标识冲突区域。绿色表示当前分支(Current C...

腾讯云国际站:腾讯云怎样检测隐藏的后门程序?

本文由【云老大】 TG@yunlaoda360 撰写文件完整性验证文件 hash 校验 :可使用 md5sum 命令对文件进行哈希值计算,并与原始代码的 hash 值进行对比,从而快速发现文件是否被篡...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。