本文记录在Hog学习、使用中一位大神写的很好的两篇博客,以备后续翻看学习
1.hog原理与Opencv实现
https://blog.csdn.net/chaipp0607/article/details/70888899
1)该文中详细介绍了Hog特征提取流程,并对每一步的原因进行了讲解,如在最初对图像先进行色彩和伽马归一化是为了减少光照影响等等。
2)Hog计算中涉及滑动窗口win、块block、单元cell。在提取Hog特征时,窗口是最小的特征提取单元,例如,在目标检测时,是将滑动窗口的特征送入分类器中判断其是否为目标。在整幅图像上选择win是滑动的,在win上选择block是滑动的,在一个block中选择cell是不再滑动。
3)一个窗口内根据块步长与块尺寸滑动块时,必须可以滑动出整数个块。
在块内确定单元个数时,必须要整数个单元。
4)该文给出opencv代码。Hog被封装在HOGDescriptor类中,opencv中提供了直接利用HOG+SVM进行多尺度行人检测的函数detectMultiScale(),如果直接计算hog特征
我们使用hog.compute()函数。
HOGDescriptor hog(Size(64,64),Size(16,16),Size(8,8),Size(8,8),3);
Mat src = imread(adpos);//读取图片 图片是正样本或负样本图像,一个窗口的大小
resize(src,src,Size(64,64));
vector<float> descriptors;//HOG描述子向量
hog.compute(src,descriptors);
2.Hog特征可视化
https://zhangxu.blog.csdn.net/article/details/79843786
将整个图像作为检测窗,来更直观的显示hog特征。通过可视化可以直观的观察该特征到底是不是能体现目标区域与非目标区域的差异。
文中若有不妥或错误之处,还望指出!