行人识别位置过滤总结
数据统计
数据统计工作是为了获得行人位置的分布区间。统计方法为计算不同高度下的行人ROI上边界和下边界距离假设的水平线的距离。
通过在DetectModule输出结果的部分插入以下代码实现统计:
if (roi->height < 200)
{
count[1][roi->height >> 2] += (240 - roi->y - DST_START_COL); //此处统计上边界距离水平线距离
count[0][roi->height >> 2]++;
for (int i = 0; i < 50; i++)
{
printf("%.2f ", count[0][i] == 0 ? 0 : count[1][i] / count[0][i]);
}
printf("\r\n");
}
统计结果按高度每4个像素为一个阶梯,分布如下图。
接下来统计一下分布距离与ROI高度的关系
从统计结果可以看书,上下边界距离水平线的距离大约呈线性增加,平均比率分别为0.6和0.4。
接下来针对70米(30~50个像素高度)左右距离的ROI进行分析,判断在某个距离下的ROI分布:
if (roi->height > 30 && roi->height < 40)
{
int t = (240 - roi->y - DST_START_COL + 10);
if (t > 0 && t < 50)
{
count[0][t]++;
}
for (int i = 0; i < 50; i++)
{
printf("%d ", count[0][i]);
}
printf("\r\n");
//printf("%d - %d\r\n", roi->y + DST_START_COL, roi->height + roi->y + DST_START_COL - 240);
}
得到下图:
通过该图可以看出,70米左右距离的行人ROI距离水平线距离呈正太分布,平均值在13。最边界的ROI可能由于误检或车抖动造成漂移较大。