用于对象检测的HOG描述符

时间:2012-08-03 17:33:01

标签: matlab image-processing feature-detection object-detection matlab-cvst

我想知道,如果对于像“汽车”这样的对象的HOG描述符有任何实现,而对于MATLAB中的人类则不是吗?

但是,如果只有人类,你能指导我那个代码,并给我这样的提示,以改善用于“汽车或摩托车等物体”的代码

4 个答案:

答案 0 :(得分:2)

计算机视觉系统工具箱中现在有一个功能extractHOGFeatures

答案 1 :(得分:1)

HOG是一种特征描述符,它可以应用于您想要的任何对象。除了块大小,单元大小,块步幅等参数之外,实现不会改变。要获得汽车的描述符,您需要提供它们的正负样本。 Opencv为用户提供训练分类器的功能。如果matlab提供训练分类器的代码,它应该是相同的。

答案 2 :(得分:1)

嗯,你可以使用VLFeat Toolbox,它有非常有效的HOG,你可以找到任何物体的hOG特征,你也可以想象。 如果输入图像为“im.jpg”,则可以使用HOG功能 hog = vl_hog("im.jpg",8,'verbose') 这里8是你的窗口大小,你可以相应调整。

用于显示功能  imhog = vl_hog('render',hog,'verbose')

答案 3 :(得分:0)

这是一个完美实现Dalal算法的优秀Matlab代码。我已经测试并将此代码用于许多主要的学术项目。

http://hi.baidu.com/fpmaldfoamdfmze/item/4f3b3ac881affcb00c0a7b11 所有信用都归于发布此内容的人!

HOG并非特定于行人检测。您可以将它与任何刚性(或近似刚性)对象一起使用。

要使用此代码,您需要了解如何在某个区域上计算HOG。该地区被划分为重叠的“街区”。块由许多“单元”组成。在每个块中计算空间定向直方图。通过连接这些空间直方图来形成最终向量。 您可以调整的参数是

cellpw,cellph :单元格的像素宽度和高度。

nblockw,nblockh :块大小分别按x和y方向的单元格数计算。

nthet :角度箱的数量。

已签署:是否采用有符号或无符号渐变

重叠:指定为分数的块之间的重叠量

isglobalinterpolate :是否对3d直方图进行全局或局部插值

normmethod :使用的规范类型

您可以尝试使用默认参数 -

cellpw = 8; cellph = 8; nblockw = 2; nblockh = 2; nthet = 9; 重叠= 0.5; isglobalinterpolate ='localinterpolate'; issigned ='unsigned'; normmethod ='l2hys';

在matlab中获取该功能类似于

I = imread('car.png');
Ig = rgb2gray(I);
F = hogcalculator(Ig, 8, 8, 2, 2, 9, 0.5,'localinterpolate', 'unsigned', 'l2hys');

F的尺寸/长度取决于您选择的参数。

回答你的评论, 是的,您必须为正(汽车)和负(非汽车)图像构建这些功能,以构建检测系统。 SVM通常用作分类器。我建议使用libsvm库 -

http://www.csie.ntu.edu.tw/~cjlin/libsvm/

一旦你建立了训练集,训练你的训练集。调整SVM参数以获得最高精度。 示例中给出的参数可能不是最好的,您可以随时尝试不同的设置。我会尝试先改变nthet,cellpw和cellph。 祝你好运!