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。
我们也可以知道,扫描窗口的大小,最终决定了可以缩小的最小的图片,也就是不能检测到比扫描窗口更小的图片。
训练的时候有一个扫描窗口,测试时也有一个扫描窗口,是否要

本文深入解析了HOG特征检测中的scale计算原理,包括如何根据用户输入的scale0参数生成一系列缩放级别,以及这些缩放级别如何影响图像处理和扫描窗口的设定。通过实例和图表展示,读者能够清晰地理解HOG检测中scale的作用及其实现方式。
750

被折叠的 条评论
为什么被折叠?



