图像数据的特征提取方法

图像特征主要有图像的颜色特征、纹理特征、形状特征和空间关系特征。人眼可以看到图像这种视觉信息,但这种信息并不能让计算机“看见”,即计算机并不能处理这种信息。

想要让计算机“看见”,就要求我们将图像的视觉信息转化成计算机能够识别和处理的定量形式。这就是图像特征提取,传统的特征提取方法分为两个类别,分别是基于结构形态的特征提取与基于几何分布的特征提取。

基于结构形态的特征提取

通常情况下,基于结构形态的特征有两类表示方法,一类是轮廓特征,另一类是区域特征。基于结构形态的特征提取方法主要是将字符图像的结构形态转化为特征向量,主要包括边界特征法、傅里叶特征算子法、形状不变矩法以及几何参数法。

边界特征法

边界特征法,顾名思义,该方法主要关注的是图像边界部分的特征。其中,霍夫变换法和边界方向直方图法是两种最典型的边界特征法。

1. 霍夫变换

原始图像坐标系下的一个点对应于参数坐标系中的一条直线,反之,参数坐标系下的一条直线对应于原始图像坐标系下的一个点。然后,将原始图像坐标系下的各个点都投影到参数坐标系之后,会发现有聚集的点,这些聚集的点组成了原始坐标系下的直线。点击查看详细原理

下面我们给出一个小例子,通过霍夫变换来检测图片中的直线。
原始图像


霍夫变化直线检测后

具体代码如下:

#coding=utf-8
import cv2
import numpy as np
im = cv2.imread('hough.png')
edges = cv2.Canny(im, 50, 150, apertureSize=3)
result = im.copy()
minLineLength = 10
maxLineGap = 30
lines = cv2.HoughLinesP(edges, 1, np.pi/180, 200, minLineLength, maxLineGap)
for x1, y1, x2, y2 in lines[0]:
    cv2.line(result, (x1, y1), (x2, y2), (0, 0, 255), 2)
cv2.imwrite("hough_result.png", result)
2. 边界方向直方图

首先利用常见的图像边缘检测算子求得图像的边缘,然后做出关于边缘大小和方向的直方图。通常的方法是构造图像灰度梯度方向矩阵。图像边缘检测。常用的边缘检测算子有Laplacian算子、Sobel算子、Prewitt算子、Canny算子等。一幅图像是由很多个离散的像素点组成的,上面提到的这些算子将通过差分的方式来近似偏导数的值。其中,Canny算子是效果较好的一种图像边缘检测算子。它分为两个阶段,首先对图像进行高斯平滑,然后对平滑之后的图像进行Roberts算子运算。

Canny边缘检测算子主要包括以下四个步骤。

  1. 用高斯滤波器对图像进行平滑处理。
  2. 用一阶偏导的有限差分来计算梯度的幅值和方向。
  3. 对梯度的幅值进行非极大值抑制处理。
  4. 用双阈值算法检测和连接图像的边缘。

以下图(图左为原图,图右为灰度图)所示,给出Canny边缘检测算子的代码。

Canny算子进行图像边缘检测的具体代码:

#coding=utf-8
import cv2
image = cv2.imread("lena.jpg")
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
#Canny边缘检测
canny = cv2.Canny(image, 30, 150)
cv2.imwrite("Canny.jpg", canny)

上述代码输出结果如图所示:


隐藏内容需要支付:¥6

未经允许不得转载!图像数据的特征提取方法

如遇到无法显示的问题,请先尝试刷新页面

客服联系邮箱:ai52learn@foxmail.com

本文地址:https://ai.52learn.online/913