深圳网站建设公司模板,一号建站,金塔网站建设,佛山网站建设科技公司OpenCV与图像处理学习十二——图像形状特征之HOG特征一、图像特征理解1.1 颜色特征1.2 纹理特征1.3 形状特征1.4 空间关系特征二、形状特征描述2.1 HOG特征2.1.1 基本概念2.1.2 HOG实现过程2.1.3 代码实现前面介绍了图像的基础知识、基本处理方法以及传统图像分割的应用#x…
OpenCV与图像处理学习十二——图像形状特征之HOG特征一、图像特征理解1.1 颜色特征1.2 纹理特征1.3 形状特征1.4 空间关系特征二、形状特征描述2.1 HOG特征2.1.1 基本概念2.1.2 HOG实现过程2.1.3 代码实现前面介绍了图像的基础知识、基本处理方法以及传统图像分割的应用下面的笔记将介绍图像特征与目标检测部分的应用知识脉络如下所示
一、图像特征理解
图像特征是图像中独特的 易于跟踪和比较的特定模板或特定结构如下图所示 其中E和F是在图像中独特的、特殊的模板而ABCD四个在图像中是普遍存在的没有特殊性。
特征就是有意义的图像区域 该区域具有独特性或易于识别性
图像特征提取与匹配是计算机视觉中的一个关键问题 在目标检测、物体识别、 三维重建、 图像配准、 图像理解等具体应用中发挥着重要作用。
图像特征主要有图像的颜色特征、 纹理特征、 形状特征和空间关系特征。
1.1 颜色特征
颜色特征是一种全局特征 描述了图像或图像区域所对应的景物的表面性质。
颜色特征描述方法
颜色直方图颜色空间颜色分布
1.2 纹理特征
纹理特征也是一种全局特征 它也描述了图像或图像区域所对应景物的表面性质。 但由于纹理只是一种物体表面的特性 并不能完全反映出物体的本质属性所以仅仅利用纹理特征是无法获得高层次图像内容的。
1.3 形状特征
形状特征有两类表示方法一类是轮廓特征 另一类是区域特征。图像的轮廓特征主要针对物体的外边界而图像的区域特征则描述了是图像中的局部形状特征。 1.4 空间关系特征
是指图像中分割出来的多个目标之间的相互的空间位置或相对方向关系。 这些关系也可分为连接/邻接关系、 交叠/重叠关系和包含/独立关系等。 二、形状特征描述
2.1 HOG特征
2.1.1 基本概念
方向梯度直方图Histogram of Oriented Gradient, HOG 特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。
它通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog特征结合SVM分类器已经被广泛应用于图像识别中 尤其在行人检测中获得了极大的成功。
主要思想 在一副图像中 目标的形状能够被梯度或边缘的方向密度分布很好地描述所以使用HOG特征来描述目标的形状。
2.1.2 HOG实现过程
灰度化将图像看做一个x,y,z灰度 的三维图像采用Gamma校正法对输入图像进行颜色空间的标准化归一化计算图像每个像素的梯度包括大小和方向将图像划分成小cells统计每个cell的梯度直方图不同梯度的个数得到cell的描述子将每几个cell组成一个block 得到block的描述子将图像image内的所有block的HOG特征descriptor串联起来就可以得到HOG特征 该特征向量就是用来目标检测或分类的特征。
2.1.3 代码实现
import cv2
import numpy as np
# 判断矩形i是否完全包含在矩形o中
def is_inside(o, i):ox, oy, ow, oh oix, iy, iw, ih ireturn ox ix and oy iy and ox ow ix iw and oy oh iy ih# 对人体绘制颜色框
def draw_person(image, person):x, y, w, h personcv2.rectangle(image, (x, y), (x w, y h), (0, 255, 255), 2)img cv2.imread(people.jpg)
hog cv2.HOGDescriptor() # 启动检测器对象
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector()) # 指定检测器类型为人体
found, w hog.detectMultiScale(img, 0.1, (1, 1)) # 加载并检测图像
print(found)
print(w)# 丢弃某些完全被其它矩形包含在内的矩形
found_filtered []
for ri, r in enumerate(found):for qi, q in enumerate(found):if ri ! qi and is_inside(r, q):breakelse:found_filtered.append(r)print(found_filtered)
# 对不包含在内的有效矩形进行颜色框定
for person in found_filtered:draw_person(img, person)
cv2.imshow(people detection, img)
cv2.waitKey(0)
cv2.destroyAllWindows()原图为 检测结果