hog.detectMultiScale过程学习

来源:互联网 发布:win7一拖二软件 编辑:程序博客网 时间:2024/03/28 17:03

1、弄清楚scale的过程

double scale = 1.;    int levels = 0;    vector<double> levelScale;    for( levels = 0; levels < nlevels; levels++ )    {        levelScale.push_back(scale);        if( cvRound(img.cols/scale) < winSize.width ||            cvRound(img.rows/scale) < winSize.height ||            scale0 <= 1 )            break;        scale *= scale0;    }

由代码可以看出,hog会根据用户传递进来的scale0这个缩放参数,得到1到多个缩放级别,保存在levelScale这个vector里。计算的原理是:
第一个缩放参数固定等于1,
下一个缩放参数在上一个缩放参数的基础上乘于scale0,
直到原图像的宽或高除于这个最后的缩放参数的值,比扫描窗口小的时候,就停止。
如果用户指定的scale0<=1,就只有一级缩放参数:1,也就是不进行任何缩放,就将原图像进行处理。

从上面的scale的就算过程得到的缩放图片的过程可以由这张图表示:
这里写图片描述

最底下的就是原图,然后逐层往上缩小。这个图所设定的scale0=2。

我们也可以知道,扫描窗口的大小,最终决定了可以缩小的最小的图片,也就是不能检测到比扫描窗口更小的图片。

训练的时候有一个扫描窗口,测试时也有一个扫描窗口,是否要

0 0
原创粉丝点击