OpenCV中HOG特征的提取实现
来源:互联网 发布:mac 抓取网页数据 编辑:程序博客网 时间:2024/05/16 03:01
OpenCV版本2.3.1
hog头文件:opencv\modules\objdetect\include\opencv2\objdetect中的objdetect.hpp
hog实现文件:opencv\modules\objdetect\src中的hog.cpp
参考文献:Histograms of Oriented Gradients for Human Detection 作者 Navneet Dalal and Bill Triggs
关于hog中HOGDescriptor的参数。参考博文http://blog.csdn.net/raodotcong/article/details/6239431
窗口大小winSize
块大小blockSize
cellSize
winsize,blocksize,blockstride,cellsize的关系必须满足条件:
blockSize.width % cellSize.width == 0 &&
blockSize.height % cellSize.height == 0
(winSize.width - blockSize.width) % blockStride.width == 0 &&
(winSize.height - blockSize.height) % blockStride.height == 0
getDescriptorSize()中可以看到。
Hog的维数为:
nbins*
(blockSize.width/cellSize.width)*
(blockSize.height/cellSize.height)*
((winSize.width - blockSize.width)/blockStride.width + 1)*
((winSize.height - blockSize.height)/blockStride.height + 1)
hog.cpp中的实现函数
1、void HOGDescriptor::computeGradient(const Mat& img, Mat& grad, Mat& qangle,
Size paddingTL, Size paddingBR) const
img为输入图片
grad为输出梯度(两通道)
qangle为输入弧度(两通道)
paddingTL和paddingBR默认值为Size()
2、void HOGCache::init(const HOGDescriptor* _descriptor,
const Mat& _img, Size _paddingTL, Size _paddingBR,
bool _useCache, Size _cacheStride)
HOGCache的初始化,无默认参数。
函数中调用descriptor->computeGradient(_img, grad, qangle, _paddingTL, _paddingBR);计算了输入图像img的梯度和角度,存储于HOGDCache结构体的成员变量grad和angle中。
为了提高运行效率。将数据结果缓存与HOGCache结构体的中的BlockData结构体和PixData结构体中。
初始化作用:制定了一个block模板,并规定了此模板中每个像素对各个cell的贡献程度,即权值。
次函数较为复杂。要详细理解此函数请参考:
图文解释
http://blog.csdn.net/ttransposition/article/details/11874285
代码注释
http://blog.csdn.net/ttransposition/article/details/11880425
3、const float* HOGCache::getBlock(Point pt, float* buf)
得到左顶点(LT)为pt坐标的block的按梯度大小权值计算的方向的直方图,输出到buf中。直方图经过normalizeBlockHistogram函数(见下面)归一化。
4、void HOGCache::normalizeBlockHistogram(float* _hist) const
直方图L2-Hys归一化。即先2范数归一化,然后限制在一定范围内如程序中的【0,0.2】,然后重新对限制后的直方图L2范数归一化。详情见论文。
Size HOGCache::windowsInImage(Size imageSize, Size winStride) const
得到输入图像中的窗口个数,返回值为size,分别代表x和y方向上的窗口个数。
Rect HOGCache::getWindow(Size imageSize, Size winStride, int idx) const
得到窗口在输入图像中的矩形范围。
5、void HOGDescriptor::compute(const Mat& img, vector<float>& descriptors,
Size winStride, Size padding,
const vector<Point>& locations) const
descriptors为输出的直方图。维数为locations.size()*getDescriptorSize()。可以不用为descriptors.resize.函数内重新resize了。
locations参数为图像中窗口的左上(LT)坐标。
6、void HOGDescriptor::detect(const Mat& img,
vector<Point>& hits, vector<double>& weights, double hitThreshold,
Size winStride, Size padding, const vector<Point>& locations) const
检测。需要预先设置svmDetector的值
hists为输出,其为窗口的左顶点坐标值
weights为输出。其为对应的hists窗口的svm分类距离。也就是经过线性分类后的分类结果的数值。只要比较该数值就可以判断是不是特定物体。
locations参数为图像中窗口的左上(LT)坐标。
- OpenCV中HOG特征的提取实现
- OpenCV提取HOG特征
- HOG特征提取算法的实现过程
- 图像识别--Java中使用openCV提取Hog特征通过SVM训练实现图像识别
- 特征提取方法(一):HOG原理及OpenCV实现
- 利用OpenCV提取HOG特征需要了解的参数
- HOG特征提取实现方法
- HOG特征及在opencv中的提取
- HOG特征提取C++ OpenCV代码
- Hog特征与opencv实现
- 基于vlfeat的HOG特征提取c++代码实现
- HOG特征提取代码(opencv处理基本数据,c语言实现基本算法)
- HOG特征提取代码(opencv处理基本数据,c语言实现基本算法)
- opencv中hog特征向量和块特征的对应关系
- OpenCV中基于HOG特征的行人检测
- HOG 特征的提取--基于scikit-image
- emgu cv hog 特征提取 与opencv 生成的结果略有区别
- HOG特征与opencv类实现
- ext中的EXT.XTemplate()
- 感光度
- maven web 项目中启动报错java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener
- SpringMVC中使用Interceptor拦截器
- 控制台彩色输出
- OpenCV中HOG特征的提取实现
- Java Web下访问外部jar,实例后的Object类型转化的问题
- 运行rspec文件生成xml类型的报告用以jenkins集成
- java泛型(1)
- cuda和Cg
- 读小说,读代码,使用CReading 尽享读书乐趣
- 设计模式--外观模式
- 像素的m邻接克服8邻接的二义性
- Saving PHP Sessions in Redis