0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenCV预训练SVM行人HOG特征分类器实现多尺度行人检测

OpenCV学堂 来源:OpenCV学堂 作者:OpenCV学堂 2022-07-05 11:02 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

HOG概述

HOG(Histogram of Oriented Gradient)特征在对象检测与模式匹配中是一种常见的特征提取算法,是基于本地像素块进行特征直方图提取的一种算法,对象局部的变形与光照影响有很好的稳定性,最初是用HOG特征来来识别人像,通过HOG特征提取+SVM训练,可以得到很好的效果,OpenCV已经有了。HOG特征提取的大致流程如下:

2a4ac09a-fba0-11ec-ba43-dac502259ad0.png

305524ee-fba0-11ec-ba43-dac502259ad0.jpg

详细解读

第一步:灰度化
对HOG特征提取来说第一步是对输入的彩色图像转换为灰度图像,图像灰度化的方法有很多,不同灰度化方法之间有一些微小的差异,从彩色到灰度的图像转换可以表示如下:

337b1dae-fba0-11ec-ba43-dac502259ad0.jpg

第二步:计算图像梯度
计算图像的X方向梯度dx与Y方向梯度dy,根据梯度计算mag与角度,计算梯度时候可以先高斯模糊一下(可选步骤),然后使用sobel或者其它一阶导数算子计算梯度值dx、dy、mag、angle:

3396b56e-fba0-11ec-ba43-dac502259ad0.png

第三步:Cell分割与Block
对于图像来说,分成8x8像素块,每个块称为一个Cell,每个2x2大小的Cell称为一个Block,每个Cell根据角度与权重建立直方图,每20度为一个BIN,每个Cell得到9个值、每个Block得到36个值(4x9), 图像如下:

33b8ee9a-fba0-11ec-ba43-dac502259ad0.jpg

每个Block为单位进行L2数据归一化,作用是抵消光照/迁移影响,L2的归一化的公式如下:

36c50be6-fba0-11ec-ba43-dac502259ad0.png

第四步:生成描述子
对于窗口64x128范围大小的像素块,可以得到8x16个Cell, 使用Block在窗口移动,得到输出的向量总数为7x15x36=3780特征向量,每次Block移动步长是八个像素单位,一个Cell大小。

39da79b0-fba0-11ec-ba43-dac502259ad0.jpg

使用HOG特征数据

HOG特征本身是不支持旋转不变性与多尺度检测的,但是通过构建高斯金字塔实现多尺度的开窗检测就会得到不同分辨率的多尺度检测支持。OpenCV中HOG多尺度对象检测API如下:

virtualvoidcv::detectMultiScale(
InputArrayimg,
std::vector< Rect >&foundLocations,
doublehitThreshold=0,
SizewinStride=Size(),
Sizepadding=Size(),
doublescale=1.05,
doublefinalThreshold=2.0,
booluseMeanshiftGrouping=false
)
Img-表示输入图像
foundLocations-表示发现对象矩形框
hitThreshold-表示SVM距离度量,默认0表示,表示特征与SVM分类超平面之间
winStride-表示窗口步长
padding-表示填充
scale-表示尺度空间
finalThreshold-最终阈值,默认为2.0
useMeanshiftGrouping-不建议使用,速度太慢拉

使用OpenCV预训练SVM行人HOG特征分类器实现多尺度行人检测的代码如下:

importcv2ascv

if__name__=='__main__':
src=cv.imread("D:/images/pedestrian.png")
cv.imshow("input",src)
hog=cv.HOGDescriptor()
hog.setSVMDetector(cv.HOGDescriptor_getDefaultPeopleDetector())
#Detectpeopleintheimage
(rects,weights)=hog.detectMultiScale(src,
winStride=(4,4),
padding=(8,8),
scale=1.25,
useMeanshiftGrouping=False)
for(x,y,w,h)inrects:
cv.rectangle(src,(x,y),(x+w,y+h),(0,255,0),2)

cv.imshow("hog-detector",src)
cv.waitKey(0)
cv.destroyAllWindows()

原文标题:HOG特征详解与行人检测

文章出处:【微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。

审核编辑:彭静

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 分类器
    +关注

    关注

    0

    文章

    153

    浏览量

    13834
  • OpenCV
    +关注

    关注

    33

    文章

    652

    浏览量

    45068
  • HOG特征
    +关注

    关注

    0

    文章

    2

    浏览量

    996

原文标题:HOG特征详解与行人检测

文章出处:【微信号:CVSCHOOL,微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【幸狐Omni3576边缘计算套件试用体验】YOLO26 板端部署

    目标识别、姿态估计、图像分割、图像分类、旋转框检测的项目设计,包括环境部署、模型获取、关键代码、效果演示等。 项目介绍 准备工作:OpenCV 安装、Ultralytics 软件包安装、YOLO26
    发表于 04-19 22:02

    自动驾驶毫米波雷达真的识别不到行人吗?

    比较有意思,那就是毫米波雷达无法识别到行人,那这个说法准确吗? 行人为何成了雷达眼里的隐形人? 要理解毫米波雷达是否可以探测到行人,首先要了解一个概念,那就是雷达散射截面(RCS)。简单来说,RCS衡量的是一个物体反射电
    的头像 发表于 04-09 09:11 245次阅读
    自动驾驶毫米波雷达真的识别不到<b class='flag-5'>行人</b>吗?

    【上海晶珩睿莓 1 单板计算机】人脸识别

    【上海晶珩睿莓 1 单板计算机】人脸识别 本文介绍了上海晶珩睿莓 1 单板计算机结合 OpenCV 内置 YuNet 算法和 SFace 模型实现人脸识别的项目设计,包括环境部署、训练
    发表于 01-04 20:22

    没有专利的opencv-python 版本

    nonfree 模块的 contrib 版」 如果需要 contrib 模块的扩展功能(如特征匹配、目标跟踪),但要规避专利,可安装 opencv-contrib-python-headless(无头版,无
    发表于 12-13 12:37

    基于级联分类的人脸检测基本原理

    本次分享的内容是基于级联分类的人脸检测基本原理 1) 人脸检测概述 关于人脸检测算法,目前主流方法分为两类,一类是基于知识,主要方法包
    发表于 10-30 06:14

    在Ubuntu20.04系统中训练神经网络模型的一些经验

    , batch_size=512, epochs=20)总结 这个核心算法中的卷积神经网络结构和训练过程,是用来对MNIST手写数字图像进行分类的。模型将图像作为输入,通过卷积和池化层提取图像的特征,然后通过全连接层进行
    发表于 10-22 07:03

    光谱图像颜色特征用于茶叶分类的研究进展

    光谱成像技术结合颜色特征分析为茶叶分类提供了高效、非破坏性的解决方案。本文系统综述了该技术的原理、方法、应用案例及挑战,探讨了其在茶叶品质分级、品种识别和产地溯源中的研究进展,并展望了未来发展方向
    的头像 发表于 10-17 17:09 745次阅读
    <b class='flag-5'>多</b>光谱图像颜色<b class='flag-5'>特征</b>用于茶叶<b class='flag-5'>分类</b>的研究进展

    海康威视大模型精准检测守护高速安全

    这一成绩的背后,是海康威视大模型事件检测服务的科技助力。系统升级视觉大模型,针对抛洒物、行人、违停等事件的常见误检漏检进行优化,能够有效抑制背景误检,具备更强的泛化能力,即使是复杂抽象的特征
    的头像 发表于 08-21 11:16 1510次阅读

    零成本钢铁侠手套!树莓派+OpenCV 秒变手势遥控

    大家好,这是一个树莓派和OpenCV的连载专题。使用树莓派与OpenCV实现姿态估计和面部特征点追踪使用树莓派与OpenCV
    的头像 发表于 08-16 16:16 1536次阅读
    零成本钢铁侠手套!树莓派+<b class='flag-5'>OpenCV</b> 秒变手势遥控<b class='flag-5'>器</b>!

    如何使用树莓派与OpenCV实现面部和运动追踪的云台系统?

    大家好,这是一个树莓派和OpenCV的连载专题。使用树莓派与OpenCV实现姿态估计和面部特征点追踪使用树莓派与OpenCV
    的头像 发表于 08-14 17:45 2325次阅读
    如何使用树莓派与<b class='flag-5'>OpenCV</b><b class='flag-5'>实现</b>面部和运动追踪的云台系统?

    如何使用树莓派+OpenCV实现姿态估计和面部特征点追踪?

    大家好,这是一个树莓派和OpenCV的连载专题。使用树莓派与OpenCV实现姿态估计和面部特征点追踪使用树莓派与OpenCV
    的头像 发表于 08-13 17:44 1448次阅读
    如何使用树莓派+<b class='flag-5'>OpenCV</b><b class='flag-5'>实现</b>姿态估计和面部<b class='flag-5'>特征</b>点追踪?

    【Milk-V Duo S 开发板免费体验】SDK编译、人脸检测OpenCV测试

    【Milk-V Duo S 开发板免费体验】SDK编译、人脸检测OpenCV测试 本文介绍了 Milk-V Duo S 开发板实现 Buildroot SDK 镜像编译、基于 TDL 模型的人
    发表于 07-11 13:48

    基于LockAI视觉识别模块:手写数字识别

    1.1 手写数字识别简介 手写数字识别是一种利用计算机视觉和机器学习技术自动识别手写数字的过程。它通过图像预处理、特征提取和模型训练实现高效准确的数字识别。被广泛应用于银行支票处理、邮政编码识别及考试
    发表于 06-30 16:45

    基于LockAI视觉识别模块:C++轮廓检测

    本文档展示了如何使用OpenCV进行图像处理和特征检测,包括边缘检测、直线检测、圆检测以及多边形
    的头像 发表于 05-22 09:31 758次阅读
    基于LockAI视觉识别模块:C++轮廓<b class='flag-5'>检测</b>

    基于RV1126开发板实现自学习图像分类方案

    在RV1126开发板上实现自学习:在识别前对物体图片进行模型学习,训练完成后通过算法分类得出图像的模型ID。 方案设计逻辑流程图,方案代码分为分为两个业务流程,主体代码负责抓取、合成图像,算法代码负责
    的头像 发表于 04-21 13:37 11次阅读
    基于RV1126开发板<b class='flag-5'>实现</b>自学习图像<b class='flag-5'>分类</b>方案