根据devkit中的readme.txt和cs_overview.pdf的描述以及根据通过对数据集做的小实验总结的,如果过有错误的地方欢迎指正。
图一 cs_overview.pdf中的描述图2 readme中的描述
上图为readme.txt对rotation_y和alpha的描述,一开始我以为pdf中的ry角就是rotation_y ,角和alpha也是一个,但是经过和实际的数据集中角度的对比,发现两者有一些出入
图3 根据实验对比得到的角度在实际的数据集里面,如果物体向上图那样和camera同时朝向前方,那么rotation_y的值是一个负值,其代表的是物体的Z'轴与平行于相机X轴的直线的夹角,也就是在readme.txt中说的around Y-axis in camera coordinates,图一中的示例说物体的Z'的角度为0,顺时针方向为负数的角度,从实验结果上看正负号是对的,但是ry 和 rotation_y 的角度值却不一样。
对角,从数据集来看,如果像图一中 β 角 在Z轴逆时针方向为正值时,α 角的值为 rotation_y + β 而 图1 中 的计算公式为 ry + β,实际上这两个计算结果并不一样,所以这是比较困惑的一点,因为在readme中举了一个例子:
在这个例子中,说如果物体朝向camera的X轴,rotation_y应该为0,无论它处在X/Z平面中的那个位置,但是图一中的ry角显然不符合这个定义,相反,我觉得ry和rotation_y是一个互余的关系。
实际上从角度的分析可以看出alpha角实际上是将物体绕着与camera原点的连线转动到camera的Z轴方向后,物体的rotation_y角,如下图
下面我来简单讲一下做的小实验
首先我选择的是tracking训练集的0000文件夹下的数据集,并对立面的数据做了预处理,主要有以下几点处理:
1.把所有的角度从弧度转换为了角度方便观察
2.把所有的图像画上了等分线,这样是为了能够进行后续的推断,实际效果如下
经过这样的分割,可以知道,相机坐标系的原点大概就在最中间那根线的左右,下面我们来通过某些特定帧来验证各个角度的值
实验过程
1.首先来看第一帧图像和标注信息
前面已经说了,我把所有的弧度转换成了角度,可以看到在数据集中alpha和rotation角都是负数,这里面van就是白色面包车,而cyclist就是右边这个骑自行车的大爷,白车和自行车都是朝向左前方,所以rotation_y的值都比比 -90 要小,白车在camera的Z轴的左边,自行车在右边所以beta角一个为正,一个为负
2.现在我们来选择一些特殊角度来看,第55帧
自行车朝向正前方,所以ry为-90,两个都在Z轴的右边,所以beta都为负值,且越靠右越小
3.最能够看出两个角的区别:第140帧到153帧
在这连续的多帧中你会发现两个物体的alpha角并没有发生多大变化,但ry角却一直在改变,从数据集的图片中可以看到在这段期间,白车和自行车实际上一直在一条笔直的道路上前进,而真正转向的是后面的携带有camera的数据采集车。
第140帧第150帧
可以看到实际上是数据采集车进行了向左转弯,所以beta角在越来越小。如果一开始没有理解alpha角的含义,那么从这个里面就能看出 alpha角的含义,alpha角一直90度是因为这条路是笔直的,车也在直着向前开,不管beta角如何,只要把物体沿着与camera的原点进行旋转,旋转到Z轴的方向时,物体朝向与camera的X轴的夹角就是alpha
来源:oschina
链接:https://my.oschina.net/u/4359017/blog/4491211