在使用opencv的HOG功能的时候有两个疑惑,
首先说一下第一点:
(1)假设我的窗体大小是200*200的,然后我设定blocksize = cvSize(8,8),blockstride = cvSize(8,8), cellsize = cvSize(4,4)
即初始化代码如下:
HOGDescriptor *hog=new HOGDescriptor(cvSize(200,200),cvSize(8,8),cvSize(8,8),cvSize(4,4),9);
即不要block之间相互overlap
再假设生成的图像如下
其中1,2,3,4...分别代表一个一个的cell,然后一个block包括的是4个cell
那么直方图级联的顺序是不是block内部为block1(1->2->3->4),block2(5->6->7->8),这样子
然后block1级联block2等等一直级联下去呢?
纠结他们的级联关系的原因在于这个级联的顺序在我的程序中有点重要
再说一下第二点:
(2)假如我使得windowsize大小和blocksize大小一样,即把整个window当做一个block,那么我应该怎么设置参数呢?
即blockstride的大小应该怎么设置的?我尝试了一下两种方式
HOGDescriptor *hog=new HOGDescriptor(cvSize(200,200),cvSize(200,200),cvSize(200,200),cvSize(4,4),9);
HOGDescriptor *hog=new HOGDescriptor(cvSize(200,200),cvSize(200,200),cvSize(0,0),cvSize(4,4),9);
第一种方式是可以的,而且算出来的结果正是预想的结果,但是第二种就会导致程序崩溃。
想问一下第一种的方式对么?
如果对的话,那么直方图级联的顺序是不是应该是一行一行,从左到右,然后从上到下依次级联呢?
说了这么多
先谢谢热心人了