汽车跟踪

汽车跟踪操作步骤

文件目录如下:

    

1.配准图片

运行文件registration_2pics.m ,选择视频文件(假设文件名为DJI_0004.mov),将会与视频并列生成一个文件夹,文件夹与视频名称相同(【DJI_0004】),同时在文件夹【DJI_0004】中生成文件夹【Pics】(该文件夹中全部都是以第一幅图片为基准配准之后的图片,每一帧都对应一幅配准之后的图片),用于存储配准后的文件图片,图片命名效果如图(数字位为五位):

 

同时还会生成文件DJI_0004_info记录视频信息,内容为:

 

分别记录视频名称video_name、图像高度height、宽度width、帧率framerate、时间长度duration、图片总的数量NumofFrametosave。

注意事项:由于每一次运行都要选择文件,建议将目标视频目录的快捷方式复制到代码的文件夹内。

2.1.选择A方向车道区域和起始、结束区域

运行文件Get_A_direction_RoadAreaPoly_start_end_box.m ,手动选择车道区域的多边形、起始box和结束box,其中多边形区域尽可能吻合A方向的车道,选择后将会只显示多边形的外接矩形的区域的图像,只对这一区域图像进行处理。A车道的起始box在右侧选择,当车辆车头x坐标进入该box的x坐标范围时跟踪开始;A车道的结束box在左侧选择,当车辆车头x坐标进入该box的x坐标范围时跟踪结束。Box只使用box的x范围,上下边界不考虑。

选择完成后生成文件 A_direction_RoadAreaPoly_start_end_box.c 、 A_direction_RoadAreaPoly_start_end_box.jpg 、A_direction_RoadAreaPoly_start_end_box_Full.jpg

         注意事项

         多边形尽可能吻合车道区域,多边形区域之外的车辆不会进行跟踪;起始、结束box的左右边界尽可能远离图像的左右边界,一方面有的车长度太长,需要行驶一段距离才会完全进入图像中然后进行跟踪,另一方面减少跟踪时间;

         图片的坐标系:以左上角为原点,向右为x方向,向下为y方向,x方向为宽度,y方向为高度。

2.2.选择B方向车道区域和起始、结束区域

运行文件Get_B_direction_RoadAreaPoly_start_end_box.m ,选择【Pics】文件夹中的第一幅图片,手动选择车道区域的多边形、起始box和结束box,其中多边形区域尽可能吻合B方向的车道,选择后将会只显示多边形的外接矩形的区域的图像,只对这一区域图像进行处理。B车道的起始box在左侧选择,当车辆车头x坐标进入该box的x坐标范围时跟踪开始;B车道的结束box在右侧选择,当车辆车头x坐标进入该box的x坐标范围时跟踪结束。Box只使用box的x范围,上下边界不考虑。

选择完成后生成文件 B_direction_RoadAreaPoly_start_end_box.c 、 B_direction_RoadAreaPoly_start_end_box.jpg 、B_direction_RoadAreaPoly_start_end_box_Full.jpg

3.1跟踪A车道车辆

 

运行文件 A_direction_TrackCar.m 选择【Pics】文件夹中的第一幅图片,将会读取车道区域文件A_direction_RoadAreaPoly_start_end_box.c 进行背景建模,并跟踪车头进入绿色起始框x坐标范围的车辆,直至该车辆车头进入结束框的x范围。

结果:

生成A_direction_TrackCar_info 文件夹(最终结果):

    

 

文件夹内存储有跟踪的车辆的信息文件car_id_00001.c等和跟踪车辆区域图片文件car_id_00001.jpg等。其中,跟踪车辆图片是使用第一次跟踪到的车辆的box(boxSerials的的第一行数据)从Pics文件夹中对应帧截取出来的图片。

其中 car_id_00001.c 文件内容如下:

Id:对应文件名中的id,表示序号,最先结束跟踪的车辆序号越小(代码中结束跟踪时才会记录车辆的跟踪信息)。

start_at_frame:表示第几帧开始跟踪,

end_at_frame:表示第几帧结束跟踪。

carRect_in_objectRect:记录跟踪车辆区域图片中车辆的box(相对于分割出来的图片的box)。

boxSerials 记录配准图片文件夹从起始帧到结束帧每一帧中跟踪车辆区域图片的box(x,y,width,height),这些box和每一帧对应,第一个对应start_at_frame 帧,最后一个对应end_at_frame 帧。

 

跟踪车辆区域图片如下,是在配准后的图片中根据boxSerials中第一个box(开始跟踪时)分割出来的。

 

 

注意事项

boxSerials中对应的box是跟踪车辆区域的box;

carRect_in_objectRect 对应的是车辆的相对准确的外界矩形在车辆跟踪区域的box;

         因为使用boxSerials 中的区域box进行跟踪是较准确的,车辆在该区域中位置相对不变。而在该区域中对车辆进行识别得到的结果是较不准确的,所以这里就分为两步进行。

         设boxSerials中对应的box为box_region,carRect_in_objectRect 对应车辆的相对准确的外界矩形在车辆跟踪区域的box为rect; 则车辆的外界矩形在整幅图中的box为  [  box_region(1)+rect(1) , box_region(2)+rect(2) , rect(3) , rect(4) ] ;

 

        

3.2跟踪B车道的车辆

B车道车辆跟踪和A车道的跟踪方法相同,只是方向不同,得到的结果形式相同。

获取七条车道线

运行 Get_7line_points.m ,选择Pics文件夹中的第一幅图片,手动获取线段的端点,右键任意处结束,然后绘制下一条多段线(每条多段线由多个连续线段组成),得到文件Pointsof7Lines.c和图片Pointsof7Lines.jpg

 

结果图片如下:

 

其中,Pointsof7Lines.c 内容如下:

 

分别记录了每条多段线的线段点坐标(在图像坐标系中)。

原文地址:https://www.cnblogs.com/tangyuanjie/p/12924233.html