图像特征主要有图像的颜色特征、纹理特征、形状特征和空间关系特征。人眼能够看到图像这种视觉信息,但这种信息并不能让计算机“看见”,即计算机并不能处理这种信息。
想要让计算机“看见”,就要求咱们将图像的视觉信息转化成计算机可以识别和处理的定量形式。这就是图像特征提取,传统的特征提取方法分为两个类别,分别是基于结构形态的特征提取与基于几何分布的特征提取。算法
基于结构形态的特征提取
一般状况下,基于结构形态的特征有两类表示方法,一类是轮廓特征,另外一类是区域特征。基于结构形态的特征提取方法主要是将字符图像的结构形态转化为特征向量,主要包括边界特征法、傅里叶特征算子法、形状不变矩法以及几何参数法。
app
边界特征法ide
边界特征法,顾名思义,该方法主要关注的是图像边界部分的特征。其中,霍夫变换法和边界方向直方图法是两种最典型的边界特征法。函数
1. 霍夫变换spa
原始图像坐标系下的一个点对应于参数坐标系中的一条直线,反之,参数坐标系下的一条直线对应于原始图像坐标系下的一个点。而后,将原始图像坐标系下的各个点都投影到参数坐标系以后,会发现有汇集的点,这些汇集的点组成了原始坐标系下的直线。
3d
下面咱们给出一个小例子,经过霍夫变换来检测图片中的直线。code
原始图片orm
具体代码以下:blog
#coding=utf-8import cv2import numpy as npim = cv2.imread('hough.png')edges = cv2.Canny(im, 50, 150, apertureSize=3)result = im.copy()minLineLength = 10maxLineGap = 30lines = 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