数据统计

数据统计工作是为了获得行人位置的分布区间。统计方法为计算不同高度下的行人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高度的关系

下边界于水平线距离与ROI高度比例

上边界于水平线距离与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可能由于误检或车抖动造成漂移较大。