数据挖掘与机器学习-第八章 图像数据分析


数据挖掘与机器学习-第八章 图像数据分析

图像数据概论

1
2
3
4
根据图像的成像原理、成像技术以及存储方式可以将图像分为不同类型。
根据记录方式不同图像可以分为模拟图像和数字图像。
模拟图像是通过某种具有连续变化值的物理量(光、电强弱等)来记录图像亮度信息。
数字图像是模拟图像数字化后得到的,又称为数码图像、数位图像。
1
根据像素的取值不同,图像可以分为二值图像、8位图像、16位图像。
1
RGB彩色图像由三个数据通道构成,分别代表红、绿、蓝通道。而灰色图像只有一个通道。多光谱图像一般有几个到几十个通道。高光谱图像具有几十个到上百个通道,即为多通道。
1
图像不仅仅局限于人眼可以看到的可见光图像,而是覆盖了全球电磁波谱,包括超声波、电子显微镜和计算机产生的图像等。

image-20220505104522079

image-20220505104650112

image-20220505104752864

image-20220505104833885

image-20220505105009951

image-20220505110842520

image-20220505110934169

图像与机器学习

image-20220505111242492

image-20220505111534955

图像分类的简单实现

opencv参考

opencv参考

image-20220505135856516 image-20220505135917115 image-20220505140212293 image-20220505141939205

image-20220505152116658

图像缩放

image-20220505152320729

图像混合

image-20220505152505470

图像分类的困难和挑战

image-20220505142638471 image-20220505142729063 image-20220505142757551

image-20220505143352333

image-20220505143408143

image-20220505145947911

image-20220505150004124

图像分类的特征提取

SIFT算法

image-20220505150154247

FAST算法

image-20220505150345881

image-20220505153426399
1
2
3
4
5
6
7
8
9
10
11
12
13
import cv2
import numpy as np
img=cv2.imread(r'D:\2022-05-05 140442.png')
img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
star=cv2.AgastFeatureDetector_create()
keypoints=star.detect(img_gray,None)

img_sift=np.copy(img)
cv2.drawKeypoints(img,keypoints,img_sift)
flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS
cv2.imshow('Input image', img)
cv2.imshow('Star features', img_sift)
cv2.waitKey()
image-20220505155117006

图像数据分析方法

1
广义的图像处理又称为图像工程,是与图像有关技术的总称,包括图像的采集、编码、传输、存储、生成、显示、输出、变换、增强、恢复和重建、分割、目标检测、表达和描述、特征提取、分类和识别、图像匹配、场景理解等。

图像工程的三个层级

image-20220505143942051
1
2
3
4
5
狭义的图像处理:包括图像采集和图像到图像的变换,主要作用是改善图像视觉效果和为图像分析级理解作初步的处理,包括对比度调节、图像编码、去噪以及各种滤波技术的研究、图像恢复和重建等。

图像分析:是指从图像中提取感兴趣的数据,以及描述图像中的目标的特点,该层级输入是图像,输出是从图像中提取的边缘、轮廓等特征属性。

图像理解:是在图像分析的基础上,利用模式识别和人工智能方法研究各目标的性质和相互关系,对图像中的目标进行分析、描述、分类和解释,一般输入为图像,输出为该图像的语义描述。

图像分析的常用方法

1
2
3
4
5
6
7
8
9
10
11
图像变换:图像矩阵一般具有很高的维度,我们直接在空间域中进行处理计算量会很大。

图像编码和压缩:可以减少描述图像的数据量,以便节省图像传输,处理时间,减少所占用的存储器容量。

图像增强和复原:客观世界是三维空间,但一般图像是定义在二维区域上的,图像在反映三维世界的过程中必然丢失部分信息。即使是记录下来的信息也有可能失真,影响人的主观感受和物体识别等后续应用。

图像分割:是提取图像中有意义的特征,包括图像中的边缘、区域等。

图像描述和特征提取:图像描述是图像识别和理解的必要前提。

图像分类:

图像识别案例-人脸识别

image-20220505155458164 image-20220505155522936 image-20220505155623129 image-20220505155815080 image-20220505155937516

EigenFace算法

image-20220505160117642 image-20220505160933131 image-20220505160959822 image-20220505161036893 image-20220505161114349

人脸识别与PCA

image-20220505161755400

image-20220505161832469

image-20220505162139384

image-20220505162208174

人脸识别算法实现

image-20220505162942747

image-20220505162953625

image-20220505163255359

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import face_recognition

# 加载一张已知图片用于训练模型
known_image = face_recognition.load_image_file("C:/Users/gao20/Desktop/obama1.jpg")

# 获取已知图片中的128维人脸编码(特征向量)
obama_encoding = face_recognition.face_encodings(known_image)[0]

# 加载一张未知图片用于训练模型
unknown_image = face_recognition.load_image_file("C:/Users/gao20/Desktop/obama2.jpg")

# 获取未知图片中的128维人脸编码(特征向量)
unknown_encoding = face_recognition.face_encodings(unknown_image)[0]

# 识别这两张照片的人能否匹配
results = face_recognition.compare_faces([obama_encoding], unknown_encoding)

# 判断对比结果,True表示匹配上,False表示不匹配
if results[0] == True:
print ("It's a picture of Obama!")
else:
print ("It's not a picture of Obama!")

实验九 图像分析

1
2
3
题目一:简单的图像线性划分

假设我们获取了2张图片(获取方式在文末),请使用opencv模块,读取图片并将图片转换为像素矩阵,比对两图片像素值。
image-20220505165806201 image-20220505170217073

image-20220505170139006

1
2
题目二:使用Star特征检测器
假设我们获取了1张图片(获取方式在文末),请使用opencv模块的Star特征检测器检测出图片的Star特征。
1
前面有个例子一样
1
2
3
4
5
题目三:人脸识别

假设我们获取了几张人脸图片(获取方式在文末),请使用face_recognition模块实现简单的人脸识别功能。

代码如下,请注意修改为自己的图片位置
1
与例子类似
image-20220505170727072

image-20220505170754064

Python图像处理类库(PIL)

1
它为Python解释器提供了大量的图像和图形处理功能,它能够对图像数据进行缩放、裁剪、旋转、滤波、颜色空间转换、对比度增强等,该类库支持多种图像格式的读写。PIL是python平台事实上的图像处理标准库。
1
一些志愿者在PIL的基础上创建了兼容版本,名字叫做Pillow,它与PIL的使用方法基本相同,并加入了许多新的特性。
1
借助PIL模块结合Numpy模块提供的向量,矩阵等数组对象的处理方法和线性代数函数,以及Scipy提供的数值积分、优化、统计、信号处理、图像处理等搞笑操作,我们可以完成大多数的图像分析任务。

Image模块

1
2
3
4
5
from PIL import Image
im=image.open('xxx.jpg')
print(im.format,im.size,im.mode) # 格式、大小、模式

im.show()
image-20220505195406520

颜色空间转换

image-20220505195428036
1
2
im_gray=im.convert('L') # 颜色空间转换,转为灰色
im_gray.save('xxx.png')

裁剪

1
2
3
4
# 裁剪指定矩形区域
box=(66,66,190,190)
region=im.crop(box)
region.save('xxxx.png')

旋转

固定角度
1
2
region_90=region.transpose(Image.ROTATE_90) # 90,180,270 也可以传入Image.FLIP_LEFT_RIGHT进行水平旋转,或传入Image.FLIP_TOP_BOTTOM进行垂直旋转
region.save(...)
任意角度
1
2
region_30=region.rotate(30)
region_30.save(...)
粘贴(paste)
波段处理
getbands()
split()
merge()
像素处理(point())
1
可以完成反色、线性拉伸、归一化等
图像的直方图(histogram())
1
可以用来表示该图像的像素值的分布情况。
处理序列图像
1
即常见的动图,扩展名为。gif
维度处理
1
2
3
机器学习算法要求样本的特征数据具有相同的维度。类似地,当我们采用机器学习算法进行图像数据分析师,每幅图像的特征数据也应具有相同的维度。通常有两种方式:
1.裁剪或缩放为同高宽和颜色通道 resize()
2.滤波技术或特征值提取算法得到相同维度的特征数据。

ImageFilter模块

1
主要进行滤波处理

ImageEnhance模块

1
更高级的图像增强

NumPy图像数据分析示例

SciPy图像数据分析示例

1
SciPy是在Numpy基础上开发的用于数值运算的开源工具包。提供了许多高效的操作,可以实现数值积分、优化、统计、信号处理、图像处理等功能。

Scikit-image的特征提取模块

1
是用于图像处理的开源Python工具包,它包括颜色空间转换、滤波、图论、统计特征、形态学、图像恢复、分割、边缘、角点检测、几何变换等算法。特别是特征提取模块,使用户能更方便地从图像中提取特征。

本文标题:数据挖掘与机器学习-第八章 图像数据分析

文章作者:TTYONG

发布时间:2022年05月04日 - 17:05

最后更新:2022年05月05日 - 20:05

原始链接:http://tianyong.fun/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98%E6%8A%80%E6%9C%AF%E4%B8%8E%E5%BA%94%E7%94%A8-%E7%AC%AC%E5%85%AB%E7%AB%A0-%E5%9B%BE%E5%83%8F%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90.html

许可协议: 转载请保留原文链接及作者。

多少都是爱
0%