交通物流运输线路路的网络维数怎么算?

点滴积累(29)
注明:文章来自网络上的博文
&&&&&梯度直方图特征是一种对图像局部重叠区域的密集型描述符它通过计算局部区域的梯度方向直方图来构成特征。特征结合分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。需要提醒的是,进行行人检测的方法是法国研究人员在的上提出的,而如今虽然有很多行人检测算法不断提出,但基本都是以的思路为主。
&&&&&&&&HOG特征是一种局部区域描述符它通过计算局部区域上的梯度方向直方图来构成人体特征能够很好地描述人体的边缘。它对光照变化和小量的偏移不敏感。
图像中像素点的梯度为:&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&
&&&&Hog特征提取的过程:把样本图像分割为若干个像素的单元(),把梯度方向平均划分为个区间(),在每个单元里面对所有像素的梯度方向在各个方向区间进行直方图统计,得到一个维的特征向量,每相邻的个单元构成一个块(),把一个块内的特征向量联起来得到维的特征向量,用块对样本图像进行扫描,扫描步长为一个单元。最后将所有块的特征串联起来,就得到了人体的特征。例如,对于的图像而言,每的单元(的像素)构成一个块,每个块内有个特征,以个像素为步长,那么,水平方向将有个扫描窗口,垂直方向将有个扫描窗口。也就是说,的图片,总共有个特征。
在行人检测过程中,除了上面提到的HOG特征提取过程,还包括彩图转灰度,亮度校正等步骤。总结一下,在行人检测中,HOG特征计算的步骤:
(1)将输入的彩图转换为灰度图;
(2)采用校正法对输入图像进行颜色空间的标准化(归一化);&&&目的是调节图像的对比度,降低图像局部的阴影和光照变化所造成的影响,同时可以抑制噪音的干扰;
(3)计算梯度;主要是为了捕获轮廓信息,同时进一步弱化光照的干扰。
(4)将梯度投影到单元的梯度方向;目的是为局部图像区域提供一个编码,
(5)将所有单元格在块上进行归一化;归一化能够更进一步对光照、阴影和边缘进行压缩,通常,每个单元格由多个不同的块共享,但它的归一化是基于不同块的,所以计算结果也不一样。因此,一个单元格的特征会以不同的结果多次出现在最后的向量中。我们将归一化之后的块描述符就称之为描述符。
(6)收集得到检测空间所有块的特征;该步骤就是将检测窗口中所有重叠的块进行特征的收集,并将它们结合成最终的特征向量供分类使用。
HOG构造函数
CV_WRAP&&HOGDescriptor()&:winSize(64,128),&blockSize(16,16),&blockStride(8,8),&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&cellSize(8,8),nbins(9),&derivAperture(1),&winSigma(-1),&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&histogramNormType(HOGDescriptor::L2Hys),L2HysThreshold(0.2),&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&gammaCorrection(true),&nlevels(HOGDescriptor::DEFAULT_NLEVELS)
CV_WRAP&HOGDescriptor(Size_winSize,&Size&_blockSize,&Size&_blockStride,&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Size&_cellSize,&int&_nbins,&int_derivAperture=1,&double&_winSigma=-1,&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&int&_histogramNormType=HOGDescriptor::L2Hys,double&_L2HysThreshold=0.2,&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&bool&_gammaCorrection=false,&int_nlevels=HOGDescriptor::DEFAULT_NLEVELS)&:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&winSize(_winSize),blockSize(_blockSize),&blockStride(_blockStride),&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&cellSize(_cellSize),nbins(_nbins),&derivAperture(_derivAperture),&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&winSigma(_winSigma),histogramNormType(_histogramNormType),&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&L2HysThreshold(_L2HysThreshold),gammaCorrection(_gammaCorrection),&nlevels(_nlevels)
&CV_WRAP&HOGDescriptor(const&String&filename)
&&&&&&&load(filename);
&HOGDescriptor(const&HOGDescriptor&&d)
&&&&&&d.copyTo(*this);
我们看到HOGDescriptor一共有4个构造函数,前三个有CV_WRAP前缀,表示它们是从DLL里导出的函数,即我们在程序当中可以调用的函数。
HOG基本概念
在构造函数中,有几个参数非常重要,分别为winSize(64,128),&&blockSize(16,16),&&blockStride(8,8),&cellSize(8,8),&&nbins(9)。在此,用几个示意图来表示。
a) & & &窗口大小winSize
b)&&&&&&块大小blockSize
c) & & &胞元大小cellSize
d)&&&&&&&梯度方向数
nbins代表在一个胞元中统计梯度的方向数目。如:nbins=9表示一个胞元内统计9个方向的梯度直方图。
Hog特征维数的计算
首先给出一个hog
&&&&&&&&&&&&HOGDescriptor*&hog&=&newHOGDescriptor(cvSize(64,&48),&cvSize(8,&6),&cvSize(8,&6),&cvSize(4,&3),&9);
根据上面的概念可知,cvSize(64,48)表示窗口的大小,cvSize(8,&6)表示块(block)大小,cvSize(8,6)表示块滑动增量(blockStride)大小,cvSize(4,&3)表示胞元(cell)大小,9表示每个胞单元中梯度直方图的数量。
注:输入的图片尺寸为640×480。
据此,可知:一个块(block)包含A=(blockSize.width/cellSize.width)*(blockSize.height&/&cellSize.height)个胞元(cell),所以一个块(block)含有9A个梯度直方图。按照所给出的数据,可得结果为36。
一个窗口包含B=((windowSize.width-blockSize.width)/(blockStrideSize.width)+1)*&((windowSize.height-blockSize.height)/(blockStrideSize.height)+1)个块(block),所以一个窗口包含9AB个梯度直方图。
按照所给出的数据,可得结果为2304。
其次,计算特征向量hog-&compute(trainImg,descriptors,&Size(64,&48),&Size(0,&0))
此处,trainImg代表输入的图片(此处尺寸为640×480),descriptors表示保存特征结果的Vector,Size(64,48)表示windows的步进,第四个为padding,用于填充图片以适应大小。
当padding以默认状态Size(0,0)出现,滑动窗口window来计算图片时,
结果不一定为整数。
此时,查看compute()函数发现,其中有一段代码如下:
padding.width&=&(int)alignSize(std::max(padding.width,0),&cacheStride.width);
padding.height&=&(int)alignSize(std::max(padding.height,0),&cacheStride.height);
这段代码就是用来将padding的大小来适应stride的大小。
在我的实例中,由于取得数都事先设计好,都是整数。而当若结果不为整数时,则将其取值为比其大的最小整数。如若padding.width计算为7.8时,就取8.
所以一幅640×480的图片,按照前面的参数,则可以取的特征数为230400维。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:33840次
排名:千里之外
原创:27篇
转载:22篇
(1)(1)(4)(2)(5)(5)(1)(5)(7)(2)(6)(2)(8)HOG参数简介及Hog特征维数的计算
HOG构造函数CV_WRAP HOGDescriptor() :winSize(64,128), blockSize(16,16), blockStride(8,8), cellSize(8,8),nbins(9), derivAperture(1), winSigma(-1), histo
HOG构造函数
CV_WRAP HOGDescriptor() :winSize(64,128), blockSize(16,16), blockStride(8,8), &&&& cellSize(8,8),nbins(9), derivAperture(1), winSigma(-1), histogramNormType(HOGDescriptor::L2Hys),L2HysThreshold(0.2), gammaCorrection(true), nlevels(HOGDescriptor::DEFAULT_NLEVELS)
CV_WRAP HOGDescriptor(Size_winSize, Size _blockSize, Size _blockStride,&&&&&&&&&&&&&&&& Size _cellSize, int _nbins, int_derivAperture=1, double _winSigma=-1, int _histogramNormType=HOGDescriptor::L2Hys,double _L2HysThreshold=0.2, bool _gammaCorrection=false,
int_nlevels=HOGDescriptor::DEFAULT_NLEVELS) : winSize(_winSize),blockSize(_blockSize), blockStride(_blockStride), cellSize(_cellSize),nbins(_nbins), derivAperture(_derivAperture), winSigma(_winSigma),histogramNormType(_histogramNormType), L2HysThreshold(_L2HysThreshold),gammaCorrection(_gammaCorrection),
nlevels(_nlevels)
&CV_WRAP HOGDescriptor(const String&filename)
&&&&& &load(filename);
&HOGDescriptor(const HOGDescriptor& d)
&&&&& d.copyTo(*this);
我们看到HOGDescriptor一共有4个构造函数,前三个有CV_WRAP前缀,表示它们是从DLL里导出的函数,即我们在程序当中可以调用的函数。
HOG基本概念
在构造函数中,有几个参数非常重要,分别为winSize(64,128), &blockSize(16,16), &blockStride(8,8), cellSize(8,8), &nbins(9)。在此,用几个示意图来表示。
a)&&&&&&&窗口大小winSize
b)&&&&&&块大小blockSize
c)&&&&&&&胞元大小cellSize
d)&&&&&&&梯度方向数
nbins代表在一个胞元中统计梯度的方向数目。如:nbins=9表示一个胞元内统计9个方向的梯度直方图。
Hog特征维数的计算
首先给出一个hog
HOGDescriptor* hog = newHOGDescriptor(cvSize(64, 48), cvSize(8, 6), cvSize(8, 6), cvSize(4, 3), 9);
根据上面的概念可知,cvSize(64,48)表示窗口的大小,cvSize(8, 6)表示块(block)大小,cvSize(8,6)表示块滑动增量(blockStride)大小,cvSize(4, 3)表示胞元(cell)大小,9表示每个胞单元中梯度直方图的数量。
注:输入的图片尺寸为640×480。
据此,可知:
一个块(block)包含A=(blockSize.width/cellSize.width)*(blockSize.height / cellSize.height)个胞元(cell),所以一个块(block)含有9A个梯度直方图。按照所给出的数据,可得结果为36。
一个窗口包含B=((windowSize.width-blockSize.width)/(blockStrideSize.width)+1)* ((windowSize.height-blockSize.height)/(blockStrideSize.height)+1)个块(block),所以一个窗口包含9AB个梯度直方图。
按照所给出的数据,可得结果为2304。
其次,计算特征向量hog-&compute(trainImg,descriptors, Size(64, 48), Size(0, 0))
此处,trainImg代表输入的图片(此处尺寸为640×480),descriptors表示保存特征结果的Vector,Size(64,48)表示windows的步进,第四个为padding,用于填充图片以适应大小。
当padding以默认状态Size(0,0)出现,滑动窗口window来计算图片时,
结果不一定为整数。
此时,查看compute()函数发现,其中有一段代码如下:
padding.width = (int)alignSize(std::max(padding.width,0), cacheStride.width);
padding.height = (int)alignSize(std::max(padding.height,0), cacheStride.height);
这段代码就是用来将padding的大小来适应stride的大小。
在我的实例中,,由于取得数都事先设计好,都是整数。而当若结果不为整数时,则将其取值为比其大的最小整数。如若padding.width计算为7.8时,就取8.
所以一幅640×480的图片,按照前面的参数,则可以取的特征数为230400维。
在此,特别感谢几位,分别为:
此篇博文总结了一些网上的参考资料,采用Hog特征训练的流程及对OpenCV中Hog代码进行了解释
此篇博文对Hog中Block,Cell的概念进行了详细的解释。我此篇博客中的图片来自于这篇博文。非常感谢。
此篇博文对Hog中的特征个数计算进行了详细的解释
你最喜欢的如何求线性空间的维数与一组基?_高等代数吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:8,721贴子:
如何求线性空间的维数与一组基?收藏
本人非数学专业,碰到一个问题需要用到高代
日光旭升工业洗料
你这个问题略广泛了。。。对于一般的(有限维)线性空间,只能按定义来了:⑴向量组无关;⑵向量组可以张成整个空间。
譬如说,a(n+1)=2an+n,我求其通项的时候,待定系数为a(n+1)+x(n+1)+y=2[an+xn+y],那么能不能视其为以an,n,c(常数)为一组基的线性空间?
拿二次函数作比方。我求最值的时候,我知道是二次函数,可以配方,作为普通函数,我可以求导。那么配方是针对具体的二次函数,我推广的一般的函数就不适用了,但是求导是可以的。上面那个数列问题,我知道是这题,我可以待定系数出来,但是我换一题呢?我就希望在代数里面找一个通法(不局限于高代,反正我不是数学系的,告诉我是哪门课程,自学去)虽然不一定有这个方法是把。。
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 物流运输线路 的文章

 

随机推荐