5

我想知道,对于像“汽车”这样的对象的 HOG 描述符是否有任何实现,而不是 MATLAB 中的 Human?

但万一,只有人类,你能引导我到那个代码,并给我这样的提示,以改进用于“汽车或摩托车等物体”的代码

4

4 回答 4

2

现在在计算机视觉系统工具箱中有一个函数extractHOGFeatures 。

于 2013-12-05T15:46:03.647 回答
1

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

于 2014-02-04T04:04:34.323 回答
1

那么你可以使用VLFeat Toolbox,它对 HOG 的实现非常有效,你可以找到任何对象的 hOG 特征,也可以可视化。如果“im.jpg”如果你的输入图像,你可以使用 hog = vl_hog("im.jpg",8,'verbose') 这里 8 是你的窗口大小来获得 HOG 特征,你可以相应地调整。

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

于 2014-06-08T07:03:10.827 回答
0

这是一个完全实现 Dalal 算法的优秀 Matlab 代码。我已经在许多主要的学术项目中测试并使用了这段代码。

http://hi.baidu.com/fpmaldfoamdfmze/item/4f3b3ac881affcb00c0a7b11 所有功劳归发布者所有!

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

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

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

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

nthet:角度箱的数量。

issigned : 是否采用有符号或无符号梯度

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

isglobalinterpolate : 3d 直方图的全局或局部插值

normmethod : 使用的规范类型

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

单元格 = 8; 细胞 = 8; nblockw = 2; nblockh = 2; nthet = 9; 重叠 = 0.5; isglobalinterpolate = 'localinterpolate'; 已签名 = '未签名'; 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。祝你好运!

于 2013-11-19T18:28:53.267 回答