5

我想知道,如果有任何实现HOG描述符的对象,如“汽车”,而不是人类在MATLAB中?HOG描述符用于对象检测

但在情况下,只存在于人的,你可以指导我的代码,并给我因此为了提高代码提示用于“对象,如汽车或摩托车”

+0

嗨,我想建议您先尝试谷歌..反正这里是你给的图像作为输入一个链接MATLAB代码(不只是人类的任何图像它会产生一个长度为81的猪特征向量)[HOG](HOG)(http://www.mathworks.com/matlabcentral/fileexchange/28689-hog-descriptor-for-matlab) – G453 2012-08-03 18:04:21

+0

@Sistu这个代码没有任何描述加上它用于人类检测:( – Mario 2012-08-03 18:13:40

+1

在描述链接到的论文中引用一个更好的参考文献,或者至少从IEEE会议记录中摘录我的(非常一般的)理解是这个函数被设计为返回所提供图像的HOG描述符。然后使用这些描述符fo您的应用程序。所以如果你给它一辆“汽车”,你会得到可用于“汽车”的描述符。 – 2012-08-03 20:35:06

回答

0

这里是完全实现Dalal算法的优秀Matlab代码。我已经测试并将这些代码用于许多重要的学术项目。

http://hi.baidu.com/fpmaldfoamdfmze/item/4f3b3ac881affcb00c0a7b11 所有功劳归于发布这个人!

HOG并非专用于行人检测。您可以将它与任何刚性(或刚性很好)的物体一起使用。

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

cellpw,cellph:cell的像素宽度和高度分别为。

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

nthet:角度箱的数量。

issigned:是否有符号或无符号的梯度被取

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

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的长度取决于您选择的paramenters。

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

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

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

1

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

1

那么你可以使用VLFeat Toolbox,它具有非常有效的HOG implimentaion,你可以找到任何物体的hOG特征,也可以可视化。 如果输入图像为“im.jpg”,则可以使用 hog = vl_hog("im.jpg",8,'verbose') 获得HOG功能此处8是您的窗口大小,您可以相应地进行调整。

为了显示功能 imhog = vl_hog('render',hog,'verbose')