├── .gitignore
├── CMakeLists.txt
├── LICENSE
├── README.md
├── data
├── data_process.py
├── groundtruth.json
└── selected test data
│ ├── 0531
│ ├── 1492626292371547028
│ │ └── 20.jpg
│ ├── 1492626388446057821
│ │ └── 20.jpg
│ ├── 1492626718748019090
│ │ └── 20.jpg
│ ├── 1492626726476963805
│ │ └── 20.jpg
│ ├── 1492626749527113213
│ │ └── 20.jpg
│ ├── 1492627128130967757
│ │ └── 20.jpg
│ ├── 1492627317650154687
│ │ └── 20.jpg
│ ├── 1492627349131844229
│ │ └── 20.jpg
│ ├── 1492627471056566462
│ │ └── 20.jpg
│ ├── 1492627515463990014
│ │ └── 20.jpg
│ ├── 1492627525623470452
│ │ └── 20.jpg
│ ├── 1492627607908463563
│ │ └── 20.jpg
│ ├── 1492627610474600372
│ │ └── 20.jpg
│ ├── 1492627805420764602
│ │ └── 20.jpg
│ ├── 1492627871547619739
│ │ └── 20.jpg
│ ├── 1492627958694436076
│ │ └── 20.jpg
│ ├── 1492628003602776964
│ │ └── 20.jpg
│ ├── 1492628026320478715
│ │ └── 20.jpg
│ ├── 1492628031017373452
│ │ └── 20.jpg
│ ├── 1492628364152947274
│ │ └── 20.jpg
│ ├── 1492628367980837458
│ │ └── 20.jpg
│ ├── 1492628392132013744
│ │ └── 20.jpg
│ ├── 1492628544439813675
│ │ └── 20.jpg
│ ├── 1492628717669110483
│ │ └── 20.jpg
│ ├── 1492628748683581912
│ │ └── 20.jpg
│ ├── 1492628753214604895
│ │ └── 20.jpg
│ ├── 1492628756811316586
│ │ └── 20.jpg
│ ├── 1492628759843106892
│ │ └── 20.jpg
│ ├── 1492628785560580255
│ │ └── 20.jpg
│ ├── 1492628791892679406
│ │ └── 20.jpg
│ ├── 1492628894461588977
│ │ └── 20.jpg
│ ├── 1492628898525855772
│ │ └── 20.jpg
│ ├── 1492628915781811493
│ │ └── 20.jpg
│ ├── 1492628925209797907
│ │ └── 20.jpg
│ ├── 1492628946166107862
│ │ └── 20.jpg
│ ├── 1492629493832252271
│ │ └── 20.jpg
│ ├── 1492629626720641603
│ │ └── 20.jpg
│ ├── 1492629646273459822
│ │ └── 20.jpg
│ ├── 1492629700240878893
│ │ └── 20.jpg
│ ├── 1492629744847348361
│ │ └── 20.jpg
│ ├── 1492629764202222740
│ │ └── 20.jpg
│ ├── 1492629772330681800
│ │ └── 20.jpg
│ ├── 1492629968347062256
│ │ └── 20.jpg
│ ├── 1492630120020607688
│ │ └── 20.jpg
│ ├── 1492630278191641862
│ │ └── 20.jpg
│ ├── 1492631377662145887
│ │ └── 20.jpg
│ ├── 1492631797808463012
│ │ └── 20.jpg
│ ├── 1492634561885337945
│ │ └── 20.jpg
│ ├── 1492636918035773538
│ │ └── 20.jpg
│ └── 1492637138669280283
│ │ └── 20.jpg
│ └── 0601
│ ├── 1494452381594376146
│ └── 20.jpg
│ ├── 1494452399585761304
│ └── 20.jpg
│ ├── 1494452407582274573
│ └── 20.jpg
│ ├── 1494452443567310647
│ └── 20.jpg
│ ├── 1494452495543904834
│ └── 20.jpg
│ ├── 1494452521532285259
│ └── 20.jpg
│ ├── 1494452527529663225
│ └── 20.jpg
│ ├── 1494452555517417669
│ └── 20.jpg
│ ├── 1494452587503447885
│ └── 20.jpg
│ ├── 1494452605495775275
│ └── 20.jpg
│ ├── 1494452631484224411
│ └── 20.jpg
│ ├── 1494452667468632483
│ └── 20.jpg
│ ├── 1494452689458738349
│ └── 20.jpg
│ ├── 1494452809905908227
│ └── 20.jpg
│ ├── 1494452825898945556
│ └── 20.jpg
│ ├── 1494452921856946234
│ └── 20.jpg
│ ├── 1494452929853344267
│ └── 20.jpg
│ ├── 1494452957841111858
│ └── 20.jpg
│ ├── 1494452981830568996
│ └── 20.jpg
│ ├── 1494452987828017539
│ └── 20.jpg
│ ├── 1494453131765683584
│ └── 20.jpg
│ ├── 1494453137763384771
│ └── 20.jpg
│ ├── 1494453157754360152
│ └── 20.jpg
│ ├── 1494453173747344679
│ └── 20.jpg
│ ├── 1494453227726434936
│ └── 20.jpg
│ ├── 1494453233720967019
│ └── 20.jpg
│ ├── 1494453287696553635
│ └── 20.jpg
│ ├── 1494453307691066696
│ └── 20.jpg
│ ├── 1494453313685150979
│ └── 20.jpg
│ ├── 1494453341673586257
│ └── 20.jpg
│ ├── 1494453401646638002
│ └── 20.jpg
│ ├── 1494453409643085329
│ └── 20.jpg
│ ├── 1494453427635226083
│ └── 20.jpg
│ ├── 1494453467617697485
│ └── 20.jpg
│ ├── 1494453481611650216
│ └── 20.jpg
│ ├── 1494453511598429183
│ └── 20.jpg
│ ├── 1494453553580016137
│ └── 20.jpg
│ ├── 1494453561576544114
│ └── 20.jpg
│ ├── 1494453583566932856
│ └── 20.jpg
│ ├── 1494453589564231638
│ └── 20.jpg
│ ├── 1494453607556426762
│ └── 20.jpg
│ ├── 1494453621551554547
│ └── 20.jpg
│ ├── 1494453643540652356
│ └── 20.jpg
│ ├── 1494453657537147475
│ └── 20.jpg
│ ├── 1494453713511948219
│ └── 20.jpg
│ ├── 1494453731502184768
│ └── 20.jpg
│ ├── 1494453753492316007
│ └── 20.jpg
│ ├── 1494453761488899826
│ └── 20.jpg
│ ├── 1494453785478375673
│ └── 20.jpg
│ └── 1494453809467806176
│ └── 20.jpg
├── evaluate.py
├── include
├── Edge.h
├── Hough.h
├── Img.hpp
├── Kernel.h
└── SaveResult.h
├── main.cpp
├── result
├── image_of_readme
│ ├── Sobel.png
│ ├── binary.png
│ ├── binary_failure.png
│ ├── canny.png
│ ├── hough.png
│ ├── img.png
│ ├── mask.png
│ ├── nms.png
│ ├── result.png
│ ├── roi.png
│ └── update_cmp.png
└── predict.json
└── source
├── Edge.cpp
├── Hough.cpp
├── Kernel.cpp
└── SaveResult.cpp
/.gitignore:
--------------------------------------------------------------------------------
1 | cmake-build-*/
2 | .idea/
3 | .vscode/
4 | build/
5 | debug/
6 | release/
--------------------------------------------------------------------------------
/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.17)
2 | project(lane_detection)
3 |
4 | set(CMAKE_CXX_STANDARD 14)
5 |
6 | set(OpenCV_DIR D:\\Envs\\opencv\\build\\x64\\mingw\\install)
7 | find_package(OpenCV REQUIRED)
8 | include_directories(${OpenCV_INCLUDE_DIRS})
9 | set(OpenCV_LIBS opencv_core opencv_imgproc opencv_highgui opencv_imgcodecs)
10 |
11 | add_executable(lane_detection main.cpp include/Img.hpp include/Kernel.h source/Kernel.cpp include/Edge.h source/Edge.cpp include/Hough.h source/Hough.cpp include/SaveResult.h source/SaveResult.cpp)
12 |
13 | target_link_libraries(lane_detection ${OpenCV_LIBS})
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 XuZhengfei
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
车道线检测 (Lane Detection)
2 |
3 | ## 1、实验内容
4 |
5 | 本实验使用数字图像处理的基本方法,构建了一个车道线检测模型。该模型可以识别图像中所有的车道线,并得到完整的车道线信息。模型在tuSimple Lane Dataset大小为100的数据子集进行了测试,达到了较好的结果。
6 |
7 | ## 2、实现思路
8 |
9 | 实现车道线检测,主要包含两部分操作
10 |
11 | 1. 道路图像的处理,主要包括灰度图转换、基于高斯平滑的图像去噪、基于Canny算法的边缘提取
12 | 2. 车道线检测方法,主要包括获取感兴趣区域(ROI)、形态学闭运算、基于Hough变换的直线检测
13 |
14 | 模型的处理流程如下,
15 |
16 |
17 |
18 | ### 2.1 道路图像处理
19 |
20 | 通过对道路图像进行处理,突出图像中的车道线部分。模型将彩色图像转化成灰度图像进行处理,目的是简化模型的复杂度,提高运行效率。
21 |
22 | #### 2.1.1 高斯平滑
23 |
24 | 由于光照、路面情况、拍摄质量等问题,道路图像上存在很多噪声,通过高斯滤波使图像变得平滑,减弱图像中的噪声对结果的影响,提高车道线检测模型的鲁棒性。
25 |
26 | 高斯平滑就是使用高斯滤波器与原图像进行卷积,得到平滑图像。与均值滤波类似,它们都是取滤波器窗口内像素的加权均值作为输出。高斯滤波器的权值分布满足二维高斯函数。
27 | =e^{-\frac{x^2+y^2}{2\sigma^2}})
28 | 由于高斯平滑是线性离散滤波,因此离散形式的高斯滤波器为
29 | ^2&space;+&space;(j&space;-&space;k&space;-&space;1)^2}{2&space;\sigma&space;^&space;2}})
30 | 本实验采用 $3\times3$ 的高斯滤波器。具体实现为定义 `Kernel` 类实现通用的卷积操作,定义派生类 `GaussianKernel` 实现不同 size 和 $\sigma$ 高斯滤波器的构建的运算,实现接口如下:
31 |
32 | ```c++
33 | /* Kernel.h */
34 | class Kernel
35 | {
36 | public:
37 | double **data;
38 | int size;
39 | Kernel(int size); // 空的卷积核
40 | Kernel(Kernel &cp); // 拷贝构造函数
41 | ~Kernel();
42 | double *operator[](const int idx) const;
43 | // 卷积操作
44 | template
45 | void convolve(const Img &src, Img &dst, const bool is_clip = true) const;
46 | };
47 |
48 | class GaussianKernel : public Kernel
49 | {
50 | public:
51 | double sigma;
52 | GaussianKernel(const int size, const double sigma);
53 | GaussianKernel(GaussianKernel &cp);
54 | };
55 | ```
56 |
57 | #### 2.1.2 边缘提取
58 |
59 | 在实验过程中,我曾尝试采用以下方法进行边缘提取的方法。由于在图像中车道线的灰度值较大,因此我设计了一种参数自适应的阈值分割算法,把车道线从图像中抽取出来。具体方法如下:统计图像的灰度分布,选取整体灰度分布相应比例对应的灰度值作为阈值,对图像进行二值化。效果如下:
60 |
61 | 
62 |
63 | 可以发现,通过阈值分割有效的过滤掉了大部分背景,如山脉、路面、车辆,这为下面的直线检测去除了一定的干扰。但是由于部分图像存在反光或较亮区域,这导致一些车道线丢失,或特征不再明显,如下图。
64 |
65 | 
66 |
67 | 虽然可以通过求图像梯度的方法将大面积的高亮度区域滤除,但是直接将原图转成二值图像处理,会丢失车道线的细节信息导致结果车道线信息不完整。因此舍弃该方案。
68 |
69 | 最终采用基于图像梯度的边缘提取方法——Canny算法。Canny主要包含三个步骤:
70 |
71 | 1. Sobel算子:计算图像梯度
72 | 2. 非极大值抑制:去除非边缘的噪点,细化边缘
73 | 3. 双阈值:检测并连接边缘
74 |
75 | (1)Sobel 算子计算图像梯度
76 |
77 | 灰度图可以看做灰度值 $h(x,y)$ 关于 $(x,y)$ 坐标的二元函数,计算图像梯度可以通过Sobel算子计算得到。
78 |
79 | * $x$ 方向梯度: ${grad}_x(x,y) = \frac{\partial h(x,y)}{\partial x}$
80 | * $y$ 方向梯度: ${grad}_y(x,y) = \frac{\partial h(x,y)}{\partial x}$
81 | * 梯度幅度: $grad = \sqrt{{grad_x}^2 + {gard_y}^2}$
82 | * 梯度方向:$gard_\theta = arctan(\frac{grad_y}{grad_x})$
83 |
84 | 其中计算 $x,y$ 方向的梯度使用Sobel算子对图像进行卷积
85 |
86 |
87 |
88 | Sobel 算子计算梯度效果如下:
89 |
90 | 
91 |
92 | (2)非极大值抑制
93 |
94 | 分析上图发现,由于图像灰度存在起伏,所以有一些不是边缘的区域也存在较大的梯度。采用非极大值抑制(NMS)的方法,消除梯度图像中非边缘的噪声,并将边缘细化。
95 |
96 | NMS实现的思路如下:计算每个中心像素点沿梯度方向邻域内各点的梯度值,如果该中心像素点的梯度值是以上像素点梯度值的局部极大值,则保留梯度,否则梯度置为零。由于邻域内在梯度方向上的点不一定是在整数坐标位置,因此需要通过插值计算邻域内梯度方向点的梯度值。实现效果如下:
97 |
98 | 
99 |
100 | 一些非边缘的噪点得到了一定程度的抑制,边缘也得到细化。
101 |
102 | (3)双阈值检测和边缘连接
103 |
104 | 需要将得到的梯度图像进行阈值分割,得到二值图以便后续进行hough变换。采用双阈值对图像进行阈值分割,实现思路如下:
105 |
106 | * 当梯度值大于高阈值时,将其灰度值取为255。
107 | * 当梯度值小于低阈值时,将其灰度值取为0。
108 | * 当梯度介于两者之间是,如果该点邻域内有高阈值点,则取为255,否则取0。
109 |
110 | 双阈值处理中,高阈值将物体边缘和背景区分开,但是当高阈值较大时,可能导致边缘断断续续;此时低阈值平滑边缘轮廓,能实现较好的分割效果。同时借鉴之前尝试对灰度图做阈值分割的思路,采用整体灰度分布相应比例处的灰度值为高阈值,低阈值取高阈值的 $\frac{2}{3}$,实现效果如下:
111 |
112 | 
113 |
114 | Canny 边缘提取的实现接口如下:
115 |
116 | ```c++
117 | #ifndef LANE_DETECTION_EDGE_DETECTION_H
118 | #define LANE_DETECTION_EDGE_DETECTION_H
119 |
120 | #include "Img.hpp"
121 | #include "Kernel.h"
122 | // 阈值分割
123 | void TurnBinary(Img &src, const double weight);
124 | // 膨胀运算
125 | void Dilation(const Img &src, Img &dst, int kernel_size);
126 | // 腐蚀运算
127 | void Erosion(const Img &src, Img &dst, int kernel_size);
128 | // 遮盖无效部分
129 | void RoiMask(Img &src);
130 | // Sobel 算子计算梯度
131 | void Sobel(const Img &src, Img &dst, Img &theta);
132 | // 非极大值抑制
133 | void NonMaxSuppression(const Img &src, Img &dst, const Img &theta);
134 | // 双阈值处理
135 | void DoubleThreshold(Img &image, const double weight = 0.9);
136 | // Canny 边缘检测
137 | void Canny(Img &image, const double weight = 0.9);
138 | #endif //LANE_DETECTION_EDGE_DETECTION_H
139 | ```
140 |
141 | ### 2.2 车道线检测
142 |
143 | #### 2.2.1 梯形 ROI mask
144 |
145 | 经过图像的边缘提取,车道线边缘已经从图像中抽取出来。观察边缘图像发现:道路两边的环境复杂,存在很多干扰车道线检测的直线边缘,如天际线、山脉边缘、电线杆、树丛等。同时考虑到道路图像中,车道线集中在图像的中间偏下区域,因此可以仅对感兴趣区域(ROI)进行处理和检测。根据车道线图像特点,采用梯形掩码获取ROI。
146 |
147 | 观察图像选取了(400, 0) (220, 420) (200, 860), (400, 1280)四个点作为 mask 的角点。mask图像如下
148 |
149 | 
150 |
151 | ROI 如下:
152 |
153 | 
154 |
155 | #### 2.2.2 hough 变换检测直线
156 |
157 | hough变换是一种目标检测的方法,可以检测出有明确表达式的图形。hough 变换的基本原理:利用两个不同坐标系之间的变换来检测图像中的直线。将图像空间中的直线映射到参数空间的一个点,然后对参数空间中的点进行累计投票,进而得到参数空间中的峰值点,该峰值点就对应空间坐标系中的真实存在的直线参数。
158 |
159 | hough变换中,直线采用极坐标方程表示,因为参数$\theta$ 和 $r$ 的范围有限,便于以相同步长进行离散化
160 |
161 | 实现思路:
162 |
163 | * 初始化参数空间(二维矩阵)
164 | * 遍历空间坐标系的每个非零像素点,为所有可能经过该点的直线的参数进行投票。
165 | * 找出参数空间中大于指定阈值的参数点
166 |
167 | hough 变换效果如下图:
168 |
169 | 
170 |
171 | 可以线由于车道线存在一定的弧度并非严格地直线,且存在一定宽度,导致每条车道线都会检测出多条对应直线。可以采用聚类的方法对检测出的直线进行聚类,以得到更精准的效果。
172 |
173 | #### 2.2.3 车道线聚类
174 |
175 | 由于 k-means 等聚类算法复杂度较高,影响车道线检测的实时性。所以我设计了一种高效的聚类方案。具体思路如下:根据以两个直线的角度参数距离为相似度函数,遍历hough变换检测出的所有直线参数,如果相似度高于阈值,则认为属于同一类别,该类别大小加一;如果相似度低于阈值,则认为属于不同类别,与下一个类中心点进行比较。如果没有相似的
176 |
177 | 伪代码如下:
178 |
179 | ```c++
180 | params; // hough 变换得到参数列表
181 | clusters; // 聚类列表
182 | flag; // 标记是否新建类
183 | for param in params
184 | {
185 | flag = true;
186 | for cluster in clusters
187 | {
188 | if is_similar(param, cluster) // 如果相似则添加到该类中
189 | {
190 | flag = false;
191 | update(cluster);
192 | break;
193 | }
194 | }
195 | if flag // 与现有的所有类都不同
196 | clusters.append(param); // 添加新类
197 | }
198 | ```
199 |
200 | 这里相似度函数采用两条直线的角度参数的差值。
201 |
202 | 一开始选择的更新聚类中心的方法,是取同一类别的平均值,效果不佳。经过尝试最后采用取每个类别的初始值为中心点,实现较好的效果。示例如下:
203 |
204 | 
205 |
206 | 评测结果对比:
207 |
208 | | 中心点 | Accuracy | FP | FN |
209 | | ---------- | -------- | ------ | ------ |
210 | | 数据均值 | 0.5740 | 0.7058 | 0.7533 |
211 | | 聚类初始值 | 0.7539 | 0.5025 | 0.5242 |
212 |
213 | 分析原因:由于车道线有一定弧度,导致前半部分和后半部分的车道线参数差距较大。如果降低判定相似的标准,就会导致本不相似的直线求均值,从而使Accuracy较低;如果提高相似的标准就会,导致聚类得到类别很多,从而FP较大;因此采用加权均值更新聚类中心点并不理想。
214 |
215 | 按照车道线聚类结果中每个类别的大小,对聚类结果进行排序,选择所有聚类结果中规模最大的4个类作为最终确定的直线参数。
216 |
217 | 代码接口如下:
218 |
219 | ```c++
220 | // 相似函数
221 | bool is_similar(pair &l1, pair &l2);
222 | // 更新类中心点
223 | void update_cluster(pair &line, pair, int> &cluster);
224 | // 直线聚类
225 | void lines_cluster(vector> &lines);
226 | // hough变换
227 | void HoughTransform(Img &src, vector> &lines, int threshold);
228 | ```
229 |
230 | ### 2.3 输出结果
231 |
232 | 函数接口如下:
233 |
234 | ```c++
235 | /* 根据车道线的参数,获取坐标向量 */
236 | void GetLanes(Img &src, vector> ¶ms, vector> &lanes);
237 | /* 将检测结果写入json文件 */
238 | void WriteJson(string &raw_file, vector> &lanes, double run_time, ofstream &of);
239 | /* 展示车道线检测结果 */
240 | void polyLanes(const string &path, vector> &lanes, int delay);
241 | ```
242 |
243 | 通过 `GetLanes` 将每个直线参数转换成直线坐标,`WriteJson` 函数将结果写入json文件,`polyLanes` 可视化展示车道线。
244 |
245 | 实现效果如下:
246 |
247 | 
248 |
249 | ## 3、 实现说明
250 |
251 | ### 3.1 Img 模板类存储图像
252 |
253 | 由于只允许使用OpenCV进行图像的读写操作,因此本实验构建了 `Img` 模板类,作为图像存储和操作的基本数据结构,代码接口如下:
254 |
255 | ```c++
256 | template
257 | class Img
258 | {
259 | public:
260 | T **data; // 存放数据
261 | int rows; // 图像的行数
262 | int cols; // 图像的列数
263 |
264 | Img(int rows, int cols); /* 构造空值图像 */
265 | Img(const char *path); /* 读入图像:灰度图 */
266 | Img(Img &cp); /* Img类的复制构造函数 */
267 | ~Img();
268 |
269 | T *operator[](const int idx) const;
270 | Img &operator=(const Img &cp);
271 |
272 | cv::Mat toMat() const; /* 将图像转换成 cv::Mat */
273 | void show(const char *name, int delay) const; /* 展示图片 */
274 | };
275 | ```
276 |
277 | 展示图片的`plotLanes`函数也使用了 OpenCV 框架对图像进行展示。
278 |
279 | ### 3.2 main 函数
280 |
281 | ```c++
282 | int main()
283 | {
284 | // 获取所有图片的路径
285 | vector file_names;
286 | get_image_names("../data/selected test data", file_names);
287 | // 输出文件流接口
288 | ofstream out;
289 | out.open("../result/predict.json", ios::out);
290 | // 记录 run_time 运行时间
291 | clock_t begin_time, end_time;
292 | // 车道线检测
293 | for (auto &path : file_names)
294 | {
295 | begin_time = clock();
296 | Img src(path.data());
297 | Img dst(src.rows, src.cols);
298 | Img dst_close(src.rows, src.cols);
299 | Img theta(src.rows, src.cols);
300 |
301 | // 高斯滤波
302 | GaussianKernel filter(3, 1);
303 | filter.convolve(src, dst, true);
304 | // Canny 边缘检测
305 | Canny(dst, 0.97);
306 | // 获取图像 Roi
307 | RoiMask(dst);
308 | // hough 变换
309 | vector> lanes_param;
310 | HoughTransform(dst, lanes_param, 100);
311 | // 将车道线转成标准格式
312 | vector> lanes;
313 | GetLanes(dst, lanes_param, lanes);
314 | end_time = clock();
315 | // 将预测结果保存在 json 文件中
316 | string raw_path = path;
317 | raw_path.replace(raw_path.find("../data/selected test data"), 26, "clips");
318 | WriteJson(raw_path, lanes, double(end_time - begin_time) / CLOCKS_PER_SEC, out);
319 | // 绘图展示检测出的直线
320 | polyLanes(path, lanes, lanes_param, 100);
321 | cout << lanes_param.size() << endl;
322 | }
323 | out.close();
324 | return 0;
325 | }
326 | ```
327 |
328 | ### 3.3 项目文件树结构:
329 |
330 | ```shell
331 | │ .gitignore
332 | │ CMakeLists.txt
333 | │ evaluate.py # 评测脚本
334 | │ main.cpp # 主函数
335 | │ README.md
336 | │
337 | ├─result
338 | │ predict.json # 预测结果
339 | ├─data
340 | │ │ data_process.py # 数据预处理脚本
341 | │ │ groundtruth.json # 真实值
342 | │ │
343 | │ └─selected test data # 待处理图像
344 | │ ├─0531
345 | │ └─0601
346 | │
347 | ├─include
348 | │ Edge.h # 边缘检测
349 | │ Hough.h # hough 变换
350 | │ Img.hpp # Img 模板类
351 | │ Kernel.h # Kernel 滤波器
352 | │ SaveResult.h # 输出结果接口
353 | │
354 | └─source
355 | Edge.cpp
356 | Hough.cpp
357 | Kernel.cpp
358 | SaveResult.cpp
359 | ```
360 |
361 | ## 4、 实验结果
362 |
363 | 经过运行 TuSimple Lane Detection 项目的测评脚本,得到在数据子集上检测结果如下:
364 |
365 | | Accuracy | FP | FN |
366 | | -------- | ------ | ------ |
367 | | 0.7539 | 0.5025 | 0.5242 |
368 |
369 | 实现了较好的测评效果。同时检测每张图像约用时0.4秒。
370 |
371 | ## 5、 实验总结及改进
372 |
373 | 实验过程中尝试了很多方案,如采用形态学运算,提高车道线的完整性;通过阈值分割,去除背景和干扰物;采用均值作为聚类中心等。由于方案设计上的主观缺陷和检测任务的存在的光照不均、环境复杂等客观因素,以上方案均被舍弃。最终经过实践得到了一种鲁棒性较好,效果较优的车道线检测方案。
374 |
375 | 通过查阅相关资料,我了解到更多车道线检测的改进算法,例如可以通过最大类间方差法(OTSU)进行阈值分割、动态ROI区域等。可以通过以上算法进一步提高模型精度和性能。
376 |
377 |
378 | ## 6、 运行方法
379 | 1. **编译**(Windows 10):
380 | * cmake version 3.19.3
381 | * GNU Make version 4.2.1
382 | * OpenCV version 4.5.1
383 |
384 | 在 powershell 中执行以下命令:
385 | (1)生成 debug 版本:
386 | ```shell
387 | mkdir debug # 创建编译目录
388 | cd debug
389 | cmake -G "MinGW Makefiles" .. # 生成 Makefile
390 | mingw32-make # 使用 MinGW 编译代码
391 | ```
392 | (2)生成 release 版本
393 | ```shell
394 | mkdir release
395 | cd release
396 | cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release ..
397 | mingw32-make
398 | ```
399 | 2. **运行**
400 | > 在 debug / release 目录中双击 lane_detection.exe 即可运行
401 | 3. **测评**
402 | ```shell
403 | cd ..
404 | python evaluate.py ./result/predict.json ./data/groundtruth.json
405 | ```
--------------------------------------------------------------------------------
/data/data_process.py:
--------------------------------------------------------------------------------
1 | import os
2 | import json
3 |
4 | # 读入 groundtruth
5 | gt_all = {}
6 | gt = []
7 | with open("./groundtruth.json", 'r', encoding='utf-8') as f:
8 | for line in f.readlines():
9 | line_dic = json.loads(line)
10 | gt_all[line_dic["raw_file"]] = line
11 |
12 | # 遍历图片
13 | find_img = os.walk(r"selected test data")
14 |
15 |
16 | # 创建文件夹保存测试图片
17 | count = 0
18 |
19 | for path, dir_list, file_list in find_img:
20 | for file_name in file_list:
21 | if file_name == "20.jpg":
22 | count += 1
23 | name = os.path.join(path, file_name)
24 | name = name.replace('\\', '/');
25 | name = name.replace("./selected test data", "clips")
26 | gt.append(gt_all[name])
27 | print(name)
28 | else:
29 | os.remove(os.path.join(path, file_name))
30 |
31 | print("total image num: ", count)
32 |
33 | # 存储 test 图像的 groundtruth
34 | with open("groundtruth.json", 'w', encoding='utf8') as f:
35 | for sample in gt:
36 | f.write(sample)
37 |
38 |
--------------------------------------------------------------------------------
/data/selected test data/0531/1492626292371547028/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492626292371547028/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492626388446057821/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492626388446057821/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492626718748019090/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492626718748019090/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492626726476963805/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492626726476963805/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492626749527113213/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492626749527113213/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492627128130967757/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492627128130967757/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492627317650154687/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492627317650154687/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492627349131844229/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492627349131844229/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492627471056566462/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492627471056566462/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492627515463990014/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492627515463990014/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492627525623470452/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492627525623470452/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492627607908463563/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492627607908463563/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492627610474600372/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492627610474600372/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492627805420764602/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492627805420764602/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492627871547619739/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492627871547619739/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492627958694436076/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492627958694436076/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492628003602776964/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492628003602776964/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492628026320478715/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492628026320478715/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492628031017373452/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492628031017373452/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492628364152947274/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492628364152947274/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492628367980837458/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492628367980837458/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492628392132013744/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492628392132013744/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492628544439813675/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492628544439813675/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492628717669110483/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492628717669110483/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492628748683581912/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492628748683581912/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492628753214604895/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492628753214604895/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492628756811316586/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492628756811316586/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492628759843106892/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492628759843106892/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492628785560580255/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492628785560580255/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492628791892679406/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492628791892679406/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492628894461588977/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492628894461588977/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492628898525855772/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492628898525855772/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492628915781811493/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492628915781811493/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492628925209797907/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492628925209797907/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492628946166107862/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492628946166107862/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492629493832252271/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492629493832252271/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492629626720641603/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492629626720641603/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492629646273459822/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492629646273459822/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492629700240878893/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492629700240878893/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492629744847348361/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492629744847348361/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492629764202222740/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492629764202222740/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492629772330681800/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492629772330681800/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492629968347062256/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492629968347062256/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492630120020607688/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492630120020607688/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492630278191641862/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492630278191641862/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492631377662145887/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492631377662145887/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492631797808463012/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492631797808463012/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492634561885337945/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492634561885337945/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492636918035773538/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492636918035773538/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0531/1492637138669280283/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0531/1492637138669280283/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494452381594376146/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494452381594376146/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494452399585761304/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494452399585761304/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494452407582274573/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494452407582274573/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494452443567310647/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494452443567310647/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494452495543904834/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494452495543904834/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494452521532285259/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494452521532285259/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494452527529663225/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494452527529663225/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494452555517417669/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494452555517417669/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494452587503447885/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494452587503447885/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494452605495775275/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494452605495775275/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494452631484224411/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494452631484224411/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494452667468632483/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494452667468632483/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494452689458738349/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494452689458738349/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494452809905908227/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494452809905908227/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494452825898945556/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494452825898945556/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494452921856946234/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494452921856946234/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494452929853344267/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494452929853344267/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494452957841111858/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494452957841111858/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494452981830568996/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494452981830568996/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494452987828017539/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494452987828017539/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453131765683584/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453131765683584/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453137763384771/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453137763384771/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453157754360152/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453157754360152/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453173747344679/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453173747344679/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453227726434936/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453227726434936/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453233720967019/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453233720967019/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453287696553635/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453287696553635/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453307691066696/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453307691066696/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453313685150979/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453313685150979/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453341673586257/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453341673586257/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453401646638002/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453401646638002/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453409643085329/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453409643085329/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453427635226083/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453427635226083/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453467617697485/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453467617697485/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453481611650216/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453481611650216/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453511598429183/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453511598429183/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453553580016137/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453553580016137/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453561576544114/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453561576544114/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453583566932856/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453583566932856/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453589564231638/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453589564231638/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453607556426762/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453607556426762/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453621551554547/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453621551554547/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453643540652356/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453643540652356/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453657537147475/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453657537147475/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453713511948219/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453713511948219/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453731502184768/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453731502184768/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453753492316007/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453753492316007/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453761488899826/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453761488899826/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453785478375673/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453785478375673/20.jpg
--------------------------------------------------------------------------------
/data/selected test data/0601/1494453809467806176/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/data/selected test data/0601/1494453809467806176/20.jpg
--------------------------------------------------------------------------------
/evaluate.py:
--------------------------------------------------------------------------------
1 | import numpy as np
2 | from sklearn.linear_model import LinearRegression
3 | import ujson as json
4 |
5 |
6 | class LaneEval(object):
7 | lr = LinearRegression()
8 | pixel_thresh = 20
9 | pt_thresh = 0.85
10 |
11 | @staticmethod
12 | def get_angle(xs, y_samples):
13 | xs, ys = xs[xs >= 0], y_samples[xs >= 0]
14 | if len(xs) > 1:
15 | LaneEval.lr.fit(ys[:, None], xs)
16 | k = LaneEval.lr.coef_[0]
17 | theta = np.arctan(k)
18 | else:
19 | theta = 0
20 | return theta
21 |
22 | @staticmethod
23 | def line_accuracy(pred, gt, thresh):
24 | pred = np.array([p if p >= 0 else -100 for p in pred])
25 | gt = np.array([g if g >= 0 else -100 for g in gt])
26 | return np.sum(np.where(np.abs(pred - gt) < thresh, 1., 0.)) / len(gt)
27 |
28 | @staticmethod
29 | def bench(pred, gt, y_samples, running_time):
30 | if any(len(p) != len(y_samples) for p in pred):
31 | raise Exception('Format of lanes error.')
32 | if running_time > 200 or len(gt) + 2 < len(pred):
33 | return 0., 0., 1.
34 | angles = [LaneEval.get_angle(np.array(x_gts), np.array(y_samples)) for x_gts in gt]
35 | threshs = [LaneEval.pixel_thresh / np.cos(angle) for angle in angles]
36 | line_accs = []
37 | fp, fn = 0., 0.
38 | matched = 0.
39 | for x_gts, thresh in zip(gt, threshs):
40 | accs = [LaneEval.line_accuracy(np.array(x_preds), np.array(x_gts), thresh) for x_preds in pred]
41 | max_acc = np.max(accs) if len(accs) > 0 else 0.
42 | if max_acc < LaneEval.pt_thresh:
43 | fn += 1
44 | else:
45 | matched += 1
46 | line_accs.append(max_acc)
47 | fp = len(pred) - matched
48 | if len(gt) > 4 and fn > 0:
49 | fn -= 1
50 | s = sum(line_accs)
51 | if len(gt) > 4:
52 | s -= min(line_accs)
53 | return s / max(min(4.0, len(gt)), 1.), fp / len(pred) if len(pred) > 0 else 0., fn / max(min(len(gt), 4.), 1.)
54 |
55 | @staticmethod
56 | def bench_one_submit(pred_file, gt_file):
57 | json_pred = [json.loads(line) for line in open(pred_file).readlines()]
58 | json_gt = [json.loads(line) for line in open(gt_file).readlines()]
59 | if len(json_gt) != len(json_pred):
60 | raise Exception('We do not get the predictions of all the test tasks')
61 | gts = {l['raw_file']: l for l in json_gt}
62 | accuracy, fp, fn = 0., 0., 0.
63 | for pred in json_pred:
64 | if 'raw_file' not in pred or 'lanes' not in pred or 'run_time' not in pred:
65 | raise Exception('raw_file or lanes or run_time not in some predictions.')
66 | raw_file = pred['raw_file']
67 | pred_lanes = pred['lanes']
68 | run_time = pred['run_time']
69 | if raw_file not in gts:
70 | raise Exception('Some raw_file from your predictions do not exist in the test tasks.')
71 | gt = gts[raw_file]
72 | gt_lanes = gt['lanes']
73 | y_samples = gt['h_samples']
74 | try:
75 | a, p, n = LaneEval.bench(pred_lanes, gt_lanes, y_samples, run_time)
76 | except BaseException as e:
77 | raise Exception('Format of lanes error.')
78 | accuracy += a
79 | fp += p
80 | fn += n
81 | num = len(gts)
82 | # the first return parameter is the default ranking parameter
83 | return json.dumps([
84 | {'name': 'Accuracy', 'value': accuracy / num, 'order': 'desc'},
85 | {'name': 'FP', 'value': fp / num, 'order': 'asc'},
86 | {'name': 'FN', 'value': fn / num, 'order': 'asc'}
87 | ])
88 |
89 |
90 | if __name__ == '__main__':
91 | import sys
92 | if len(sys.argv) != 3:
93 | raise Exception('Invalid input arguments')
94 | print(LaneEval.bench_one_submit(sys.argv[1], sys.argv[2]))
95 |
96 |
--------------------------------------------------------------------------------
/include/Edge.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by xuzf on 2021/2/6.
3 | //
4 |
5 | #ifndef LANE_DETECTION_EDGE_DETECTION_H
6 | #define LANE_DETECTION_EDGE_DETECTION_H
7 |
8 | #include "Img.hpp"
9 | #include "Kernel.h"
10 |
11 | // 阈值分割
12 | void TurnBinary(Img &src, const double weight);
13 |
14 | // 膨胀运算
15 | void Dilation(const Img &src, Img &dst, int kernel_size);
16 |
17 | // 腐蚀运算
18 | void Erosion(const Img &src, Img &dst, int kernel_size);
19 |
20 | // 遮盖无效部分
21 | void RoiMask(Img &src);
22 |
23 | // Sobel 算子计算梯度
24 | void Sobel(const Img &src, Img &dst, Img &theta);
25 |
26 | // 非极大值抑制
27 | void NonMaxSuppression(const Img &src, Img &dst, const Img &theta);
28 |
29 | // 双阈值处理
30 | void DoubleThreshold(Img &image, const double weight = 0.9);
31 |
32 | // Canny 边缘检测
33 | void Canny(Img &image, const double weight = 0.9);
34 |
35 | #endif //LANE_DETECTION_EDGE_DETECTION_H
--------------------------------------------------------------------------------
/include/Hough.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by xuzf on 2021/2/8.
3 | //
4 |
5 | #ifndef LANE_DETECTION_HOUGH_H
6 | #define LANE_DETECTION_HOUGH_H
7 | #include
8 | #include
9 | #include "Img.hpp"
10 | using namespace std;
11 |
12 | void HoughTransform(Img &src, vector> &lines, int threshold);
13 |
14 | #endif //LANE_DETECTION_HOUGH_H
15 |
--------------------------------------------------------------------------------
/include/Img.hpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by xuzf on 2021/2/5.
3 | //
4 |
5 | #ifndef LANE_DETECTION_IMG_HPP
6 | #define LANE_DETECTION_IMG_HPP
7 |
8 | #include
9 | #include
10 | #include
11 |
12 | //typedef unsigned char uchar;
13 | const double PI = acos(-1.0); // 圆周率
14 |
15 | template
16 | class Img
17 | {
18 | public:
19 | T **data; // 存放数据
20 | int rows; // 图像的行数
21 | int cols; // 图像的列数
22 |
23 | Img(int rows, int cols); /* 构造空值图像 */
24 | Img(const char *path); /* 读入图像:灰度图 */
25 | Img(Img &cp); /* Img类的复制构造函数 */
26 | ~Img();
27 |
28 | T *operator[](const int idx) const;
29 |
30 | Img &operator=(const Img &cp);
31 |
32 | cv::Mat toMat() const; /* 将图像转换成 cv::Mat */
33 | void show(const char *name, int delay) const; /* 展示图片 */
34 | };
35 |
36 | /* 构造空值图像 */
37 | template
38 | Img::Img(int rows, int cols) : rows(rows), cols(cols)
39 | {
40 | data = new T *[rows];
41 | for (int i = 0; i < rows; ++i)
42 | {
43 | data[i] = new T[cols];
44 | std::memset(data[i], 0, sizeof(uchar) * cols);
45 | }
46 | }
47 |
48 | /* 读入真实图像:灰度图 */
49 | template
50 | Img::Img(const char *path) : rows(0), cols(0)
51 | {
52 | cv::Mat img_mat = cv::imread(path, cv::IMREAD_GRAYSCALE);
53 | this->rows = img_mat.rows;
54 | this->cols = img_mat.cols;
55 | data = new uchar *[rows];
56 | for (int i = 0; i < this->rows; i++)
57 | {
58 | uchar *p = img_mat.ptr(i);
59 | data[i] = new uchar[cols];
60 | for (int j = 0; j < this->cols; j++)
61 | {
62 | data[i][j] = *p;
63 | p++;
64 | }
65 | }
66 | }
67 |
68 | /* 复制构造函数 */
69 | template
70 | Img::Img(Img &cp) : rows(cp.rows), cols(cp.cols)
71 | {
72 | data = new T *[this->rows];
73 | for (int i = 0; i < this->rows; i++)
74 | {
75 | data[i] = new T[this->cols];
76 | for (int j = 0; j < this->cols; j++)
77 | {
78 | data[i][j] = cp[i][j];
79 | }
80 | }
81 | }
82 |
83 | /* 析构函数 */
84 | template
85 | Img::~Img()
86 | {
87 | for (int i = 0; i < rows; ++i)
88 | {
89 | delete[] data[i];
90 | }
91 | delete[] data;
92 | }
93 |
94 | /* 访问图像的指定行 */
95 | template
96 | T *Img::operator[](const int idx) const
97 | {
98 | return data[idx];
99 | }
100 |
101 | template
102 | Img &Img::operator=(const Img &cp)
103 | {
104 | assert(this->rows == cp.rows);
105 | assert(this->cols == cp.cols);
106 | for (int i = 0; i < rows; ++i)
107 | {
108 | for (int j = 0; j < cols; ++j)
109 | {
110 | data[i][j] = cp[i][j];
111 | }
112 | }
113 | return *this;
114 | }
115 |
116 | /* 将图像转换成 cv::Mat */
117 | template
118 | cv::Mat Img::toMat() const
119 | {
120 | cv::Mat img_mat = cv::Mat::zeros(rows, cols, CV_8UC1);
121 | for (int i = 0; i < rows; ++i)
122 | {
123 | uchar *p = img_mat.ptr(i);
124 | for (int j = 0; j < cols; ++j)
125 | {
126 | *p = data[i][j];
127 | p++;
128 | }
129 | }
130 | return img_mat;
131 | }
132 |
133 | /* 展示图片 */
134 | template
135 | void Img::show(const char *name, int delay) const
136 | {
137 | cv::Mat src = this->toMat();
138 | cv::Mat temp;
139 |
140 | cv::resize(src, temp, cv::Size(src.cols / 2.0, src.rows / 2.0), 0, 0, cv::INTER_LINEAR);
141 | cv::imshow(name, temp);
142 | cv::waitKey(delay);
143 | }
144 |
145 | #endif //LANE_DETECTION_IMG_HPP
146 |
--------------------------------------------------------------------------------
/include/Kernel.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by xuzf on 2021/2/5.
3 | //
4 |
5 | #ifndef LANE_DETECTION_KERNEL_H
6 | #define LANE_DETECTION_KERNEL_H
7 |
8 | #include "Img.hpp"
9 |
10 | class Kernel
11 | {
12 | public:
13 | double **data;
14 | int size;
15 |
16 | Kernel(int size); // 空的卷积核
17 | Kernel(Kernel &cp); // 拷贝构造函数
18 | ~Kernel();
19 |
20 | double *operator[](const int idx) const;
21 |
22 | template
23 | void convolve(const Img &src, Img &dst, const bool is_clip = true) const; // 卷积操作
24 | };
25 |
26 | class GaussianKernel : public Kernel
27 | {
28 | public:
29 | double sigma;
30 |
31 | GaussianKernel(const int size, const double sigma);
32 |
33 | GaussianKernel(GaussianKernel &cp);
34 | };
35 |
36 | /* 实现卷积操作 */
37 | template
38 | void Kernel::convolve(const Img &src, Img &dst, const bool is_clip) const
39 | {
40 | if (!src.data || src.rows != dst.rows || src.cols != dst.cols)
41 | return;
42 |
43 | int offset = size / 2;
44 | double val;
45 | int x, y;
46 |
47 | for (int i = 0; i < dst.rows; ++i)
48 | {
49 | for (int j = 0; j < dst.cols; ++j)
50 | {
51 | /* 计算目标图像上每个像素点的值 */
52 | val = 0;
53 | for (int dx = -offset; dx <= offset; ++dx)
54 | {
55 | for (int dy = -offset; dy <= offset; ++dy)
56 | {
57 | x = i + dx;
58 | y = j + dy;
59 | if (x >= 0 && x < dst.rows && y >= 0 && y <= dst.cols)
60 | {
61 | val += double(src[x][y]) * double(data[offset + dx][offset + dy]);
62 | }
63 | }
64 | }
65 | if (is_clip) // 截断到 0 ~ 255
66 | {
67 | val = val > 255 ? 255 : val;
68 | val = val < 0 ? 0 : val;
69 | val = round(val);
70 | }
71 | dst[i][j] = T2(val);
72 | }
73 | }
74 | }
75 |
76 | #endif //LANE_DETECTION_KERNEL_H
77 |
--------------------------------------------------------------------------------
/include/SaveResult.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by xuzf on 2021/2/11.
3 | //
4 |
5 | #ifndef LANE_DETECTION_SAVE_RESULT_H
6 | #define LANE_DETECTION_SAVE_RESULT_H
7 |
8 | #include "Img.hpp"
9 | #include
10 | #include
11 | #include
12 | #include
13 |
14 | using namespace std;
15 |
16 | const double h_samples[56] = {160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340,
17 | 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530,
18 | 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710};
19 |
20 | /* 根据车道线的参数,获取坐标向量 */
21 | void GetLanes(Img &src, vector> ¶ms, vector > &lanes);
22 |
23 | /* 将检测结果写入json文件 */
24 | void WriteJson(string &raw_file, vector > &lanes, double run_time, ofstream &of);
25 |
26 | /* 展示车道线检测结果 */
27 | void polyLanes(const string &path, vector> &lanes, vector> ¶ms, int delay);
28 | #endif //LANE_DETECTION_SAVE_RESULT_H
29 |
--------------------------------------------------------------------------------
/main.cpp:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include
4 | #include
5 | #include
6 | #include "include/Img.hpp"
7 | #include "include/Kernel.h"
8 | #include "include/Edge.h"
9 | #include "include/Hough.h"
10 | #include "include/SaveResult.h"
11 |
12 | using namespace std;
13 | using namespace cv;
14 |
15 | /* 获取所有待处理的图片路径 */
16 | void get_image_names(const string &inPath, vector &file_names)
17 | {
18 | string strFind = inPath + "/*";
19 | _finddata_t fileInfo{};
20 | intptr_t hFile = _findfirst(strFind.c_str(), &fileInfo);
21 | if (hFile == -1)
22 | return;
23 | do
24 | {
25 | // 如果为文件夹,则递归遍历
26 | if (fileInfo.attrib & _A_SUBDIR)
27 | {
28 | if ((strcmp(fileInfo.name, ".") != 0) && (strcmp(fileInfo.name, "..") != 0))
29 | {
30 | get_image_names(inPath + "/" + fileInfo.name, file_names);
31 | }
32 | }
33 | // 如果为单个文件直接push_back
34 | else
35 | {
36 | file_names.emplace_back(inPath + "/" + fileInfo.name);
37 | }
38 |
39 | } while (!_findnext(hFile, &fileInfo));
40 |
41 | _findclose(hFile);
42 | }
43 |
44 | int main()
45 | {
46 | // 获取所有图片的路径
47 | vector file_names;
48 | get_image_names("../data/selected test data", file_names);
49 |
50 | // 输出文件流接口
51 | ofstream out;
52 | // out.open("../result/best_predict.json", ios::out);
53 | out.open("../result/predict.json", ios::out);
54 |
55 | // 记录 run_time 运行时间
56 | clock_t begin_time, end_time;
57 |
58 | // 车道线检测
59 | for (auto &path : file_names)
60 | {
61 | begin_time = clock();
62 | Img src(path.data());
63 | Img dst(src.rows, src.cols);
64 | Img dst_close(src.rows, src.cols);
65 | Img theta(src.rows, src.cols);
66 |
67 | // 原图
68 | // src.show("origin", 10);
69 |
70 | // 高斯滤波
71 | GaussianKernel filter(3, 1);
72 | filter.convolve(src, dst, true);
73 | // dst.show("gaussian", 10);
74 |
75 | // Canny 边缘检测
76 | Canny(dst, 0.97);
77 | // dst.show("canny", 10);
78 |
79 | // 获取图像 Roi
80 | RoiMask(dst);
81 | // dst.show("roi mask", 10);
82 |
83 | // hough 变换
84 | vector> lanes_param;
85 | HoughTransform(dst, lanes_param, 100);
86 |
87 | // 将车道线转成标准格式
88 | vector> lanes;
89 | GetLanes(dst, lanes_param, lanes);
90 | end_time = clock();
91 |
92 | // 将预测结果保存在 json 文件中
93 | string raw_path = path;
94 | raw_path.replace(raw_path.find("../data/selected test data"), 26, "clips");
95 | WriteJson(raw_path, lanes, (double) (end_time - begin_time) / CLOCKS_PER_SEC, out);
96 |
97 | // 绘图展示检测出的直线
98 | // dst.show("final", 10);
99 | polyLanes(path, lanes, lanes_param, 50);
100 | cout << lanes_param.size() << endl;
101 | }
102 | out.close();
103 |
104 | return 0;
105 | }
106 |
--------------------------------------------------------------------------------
/result/image_of_readme/Sobel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/result/image_of_readme/Sobel.png
--------------------------------------------------------------------------------
/result/image_of_readme/binary.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/result/image_of_readme/binary.png
--------------------------------------------------------------------------------
/result/image_of_readme/binary_failure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/result/image_of_readme/binary_failure.png
--------------------------------------------------------------------------------
/result/image_of_readme/canny.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/result/image_of_readme/canny.png
--------------------------------------------------------------------------------
/result/image_of_readme/hough.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/result/image_of_readme/hough.png
--------------------------------------------------------------------------------
/result/image_of_readme/img.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/result/image_of_readme/img.png
--------------------------------------------------------------------------------
/result/image_of_readme/mask.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/result/image_of_readme/mask.png
--------------------------------------------------------------------------------
/result/image_of_readme/nms.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/result/image_of_readme/nms.png
--------------------------------------------------------------------------------
/result/image_of_readme/result.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/result/image_of_readme/result.png
--------------------------------------------------------------------------------
/result/image_of_readme/roi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/result/image_of_readme/roi.png
--------------------------------------------------------------------------------
/result/image_of_readme/update_cmp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xuzf-git/lane_detection_by_DIP/04febcb9423288896b85a4321bf83da5d80cf146/result/image_of_readme/update_cmp.png
--------------------------------------------------------------------------------
/result/predict.json:
--------------------------------------------------------------------------------
1 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 583, 571, 559, 547, 535, 524, 512, 500, 488, 476, 464, 452, 440, 428, 416, 404, 392, 381, 369, 357, 345, 333, 321, 309, 297, 285, 273, 261, 249, 238, 226, 214, 202, 190, 178, 166, 154, 142, 130, 118, 106, 95, 83, 71, 59, 47, 35, 23], [-2, -2, -2, -2, -2, -2, -2, -2, 589, 599, 609, 619, 629, 639, 649, 659, 669, 679, 689, 699, 709, 719, 729, 739, 749, 759, 769, 779, 789, 799, 809, 819, 829, 839, 849, 859, 869, 879, 889, 899, 909, 919, 929, 939, 949, 959, 969, 979, 989, 999, 1009, 1019, 1029, 1039, 1049, 1059], [-2, -2, -2, -2, -2, -2, -2, -2, 598, 635, 672, 710, 747, 784, 822, 859, 896, 934, 971, 1008, 1046, 1083, 1120, 1157, 1195, 1232, 1269, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 563, 528, 493, 458, 423, 389, 354, 319, 284, 249, 214, 179, 144, 110, 75, 40, 5, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492626292371547028/20.jpg", "run_time": 0.545 }
2 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 577, 567, 557, 548, 538, 529, 519, 509, 500, 490, 480, 471, 461, 451, 442, 432, 422, 413, 403, 393, 384, 374, 364, 355, 345, 335, 326, 316, 306, 297, 287, 277, 268, 258, 248, 239, 229, 220, 210, 200, 191, 181, 171, 162, 152, 142, 133, 123], [-2, -2, -2, -2, -2, -2, -2, -2, 632, 644, 655, 667, 678, 690, 701, 713, 724, 736, 747, 759, 770, 782, 793, 805, 816, 828, 839, 851, 862, 874, 885, 897, 908, 920, 931, 943, 954, 966, 977, 989, 1000, 1012, 1023, 1035, 1046, 1058, 1069, 1081, 1092, 1104, 1115, 1127, 1138, 1150, 1161, 1173], [-2, -2, -2, -2, -2, -2, -2, -2, 730, 705, 680, 655, 631, 606, 581, 556, 532, 507, 482, 457, 433, 408, 383, 358, 334, 309, 284, 259, 235, 210, 185, 160, 136, 111, 86, 61, 37, 12, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 661, 694, 727, 759, 792, 825, 858, 890, 923, 956, 988, 1021, 1054, 1087, 1119, 1152, 1185, 1217, 1250, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492626388446057821/20.jpg", "run_time": 0.485 }
3 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 606, 599, 592, 585, 577, 570, 563, 555, 548, 541, 534, 526, 519, 512, 505, 497, 490, 483, 476, 468, 461, 454, 446, 439, 432, 425, 417, 410, 403, 396, 388, 381, 374, 367, 359, 352, 345, 338, 330, 323, 316, 308, 301, 294, 287, 279, 272, 265], [-2, -2, -2, -2, -2, -2, -2, -2, 702, 739, 777, 814, 851, 889, 926, 963, 1001, 1038, 1075, 1113, 1150, 1187, 1224, 1262, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 586, 566, 545, 525, 504, 484, 463, 443, 422, 402, 381, 361, 340, 320, 299, 279, 258, 238, 217, 197, 176, 156, 135, 115, 94, 74, 53, 33, 12, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492626718748019090/20.jpg", "run_time": 0.375 }
4 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 618, 609, 600, 591, 582, 573, 564, 555, 546, 537, 528, 519, 510, 501, 492, 483, 474, 465, 456, 447, 438, 429, 420, 411, 402, 393, 384, 375, 366, 357, 348, 339, 330, 321, 312, 303, 294, 285, 276, 267, 258, 249, 240, 231, 222, 213, 204, 195], [-2, -2, -2, -2, -2, -2, -2, -2, 752, 790, 827, 864, 902, 939, 976, 1013, 1051, 1088, 1125, 1163, 1200, 1237, 1275, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 623, 594, 565, 536, 507, 478, 449, 420, 391, 362, 333, 304, 275, 246, 217, 188, 159, 130, 100, 71, 42, 13, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 645, 657, 670, 683, 696, 709, 721, 734, 747, 760, 773, 785, 798, 811, 824, 837, 849, 862, 875, 888, 901, 913, 926, 939, 952, 965, 977, 990, 1003, 1016, 1029, 1041, 1054, 1067, 1080, 1093, 1105, 1118, 1131, 1144, 1157, 1169, 1182, 1195, 1208, 1221, 1233, 1246]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492626726476963805/20.jpg", "run_time": 0.399 }
5 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 456, 437, 418, 399, 380, 361, 343, 324, 305, 286, 267, 249, 230, 211, 192, 173, 155, 136, 117, 98, 79, 61, 42, 23, 4, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 601, 595, 590, 584, 578, 572, 566, 561, 555, 549, 543, 538, 532, 526, 520, 514, 509, 503, 497, 491, 486, 480, 474, 468, 463, 457, 451, 445, 439, 434, 428, 422, 416, 411, 405, 399, 393, 387, 382, 376, 370, 364, 359, 353, 347, 341, 336, 330], [-2, -2, -2, -2, -2, -2, -2, -2, 594, 631, 668, 706, 743, 780, 818, 855, 892, 930, 967, 1004, 1042, 1079, 1116, 1154, 1191, 1228, 1266, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492626749527113213/20.jpg", "run_time": 0.423 }
6 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 667, 680, 694, 708, 722, 736, 749, 763, 777, 791, 804, 818, 832, 846, 859, 873, 887, 901, 914, 928, 942, 956, 969, 983, 997, 1011, 1025, 1038, 1052, 1066, 1080, 1093, 1107, 1121, 1135, 1148, 1162, 1176, 1190, 1203, 1217, 1231, 1245, 1259, 1272, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 627, 620, 613, 606, 598, 591, 584, 576, 569, 562, 555, 547, 540, 533, 526, 518, 511, 504, 497, 489, 482, 475, 467, 460, 453, 446, 438, 431, 424, 417, 409, 402, 395, 388, 380, 373, 366, 359, 351, 344, 337, 329, 322, 315, 308, 300, 293, 286], [-2, -2, -2, -2, -2, -2, -2, -2, 569, 543, 516, 490, 464, 438, 412, 386, 360, 334, 308, 282, 256, 230, 204, 178, 152, 126, 100, 74, 48, 22, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 621, 658, 696, 733, 770, 807, 845, 882, 919, 957, 994, 1031, 1069, 1106, 1143, 1181, 1218, 1255, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492627128130967757/20.jpg", "run_time": 0.491 }
7 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 670, 684, 698, 711, 725, 739, 753, 766, 780, 794, 808, 821, 835, 849, 863, 877, 890, 904, 918, 932, 945, 959, 973, 987, 1000, 1014, 1028, 1042, 1055, 1069, 1083, 1097, 1111, 1124, 1138, 1152, 1166, 1179, 1193, 1207, 1221, 1234, 1248, 1262, 1276, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 563, 539, 516, 492, 469, 445, 421, 398, 374, 351, 327, 304, 280, 256, 233, 209, 186, 162, 139, 115, 92, 68, 44, 21, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 598, 635, 672, 710, 747, 784, 822, 859, 896, 934, 971, 1008, 1046, 1083, 1120, 1157, 1195, 1232, 1269, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 628, 620, 612, 605, 597, 589, 581, 573, 565, 558, 550, 542, 534, 526, 519, 511, 503, 495, 487, 480, 472, 464, 456, 448, 440, 433, 425, 417, 409, 401, 394, 386, 378, 370, 362, 355, 347, 339, 331, 323, 315, 308, 300, 292, 284, 276, 269, 261]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492627317650154687/20.jpg", "run_time": 0.452 }
8 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 598, 635, 672, 710, 747, 784, 822, 859, 896, 934, 971, 1008, 1046, 1083, 1120, 1157, 1195, 1232, 1269, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 667, 680, 694, 708, 722, 736, 749, 763, 777, 791, 804, 818, 832, 846, 859, 873, 887, 901, 914, 928, 942, 956, 969, 983, 997, 1011, 1025, 1038, 1052, 1066, 1080, 1093, 1107, 1121, 1135, 1148, 1162, 1176, 1190, 1203, 1217, 1231, 1245, 1259, 1272, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 593, 589, 584, 579, 574, 569, 564, 559, 554, 550, 545, 540, 535, 530, 525, 520, 515, 510, 506, 501, 496, 491, 486, 481, 476, 471, 467, 462, 457, 452, 447, 442, 437, 432, 428, 423, 418, 413, 408, 403, 398, 393, 389, 384, 379, 374, 369, 364], [-2, -2, -2, -2, -2, -2, -2, -2, 610, 584, 558, 532, 506, 480, 454, 428, 402, 376, 350, 324, 298, 272, 246, 220, 194, 168, 142, 115, 89, 63, 37, 11, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492627349131844229/20.jpg", "run_time": 0.5 }
9 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 535, 570, 605, 640, 675, 710, 745, 779, 814, 849, 884, 919, 954, 989, 1024, 1058, 1093, 1128, 1163, 1198, 1233, 1268, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 640, 637, 634, 632, 629, 626, 623, 620, 617, 614, 611, 609, 606, 603, 600, 597, 594, 591, 589, 586, 583, 580, 577, 574, 571, 568, 566, 563, 560, 557, 554, 551, 548, 546, 543, 540, 537, 534, 531, 528, 525, 523, 520, 517, 514, 511, 508, 505], [-2, -2, -2, -2, -2, -2, -2, -2, 644, 618, 592, 566, 540, 514, 488, 462, 436, 409, 383, 357, 331, 305, 279, 253, 227, 201, 175, 149, 123, 97, 71, 45, 19, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492627471056566462/20.jpg", "run_time": 0.506 }
10 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 661, 671, 681, 691, 701, 711, 721, 731, 741, 751, 761, 771, 781, 791, 801, 811, 821, 831, 841, 851, 861, 871, 881, 891, 901, 911, 921, 931, 941, 951, 961, 971, 981, 991, 1001, 1011, 1021, 1031, 1041, 1051, 1061, 1071, 1081, 1091, 1101, 1111, 1121, 1131], [-2, -2, -2, -2, -2, -2, -2, -2, 669, 657, 645, 633, 621, 609, 597, 585, 573, 561, 550, 538, 526, 514, 502, 490, 478, 466, 454, 442, 430, 418, 407, 395, 383, 371, 359, 347, 335, 323, 311, 299, 287, 275, 263, 252, 240, 228, 216, 204, 192, 180, 168, 156, 144, 132, 120, 109], [-2, -2, -2, -2, -2, -2, -2, -2, 581, 550, 520, 489, 458, 427, 397, 366, 335, 304, 273, 243, 212, 181, 150, 120, 89, 58, 27, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 748, 774, 800, 826, 852, 878, 904, 930, 956, 982, 1008, 1034, 1060, 1086, 1112, 1138, 1164, 1190, 1216, 1242, 1269, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492627515463990014/20.jpg", "run_time": 0.469 }
11 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 657, 666, 675, 683, 692, 701, 709, 718, 727, 736, 744, 753, 762, 770, 779, 788, 796, 805, 814, 822, 831, 840, 849, 857, 866, 875, 883, 892, 901, 909, 918, 927, 935, 944, 953, 962, 970, 979, 988, 996, 1005, 1014, 1022, 1031, 1040, 1048, 1057, 1066], [-2, -2, -2, -2, -2, -2, -2, -2, 649, 639, 629, 619, 609, 599, 589, 579, 569, 559, 549, 539, 529, 519, 509, 499, 489, 479, 469, 459, 449, 439, 429, 419, 409, 399, 389, 379, 369, 359, 349, 339, 329, 319, 309, 299, 289, 279, 269, 259, 249, 239, 229, 219, 209, 199, 189, 179], [-2, -2, -2, -2, -2, -2, -2, -2, 555, 525, 494, 463, 432, 401, 371, 340, 309, 278, 248, 217, 186, 155, 124, 94, 63, 32, 1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 712, 739, 766, 794, 821, 849, 876, 904, 931, 959, 986, 1014, 1041, 1069, 1096, 1124, 1151, 1179, 1206, 1234, 1261, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492627525623470452/20.jpg", "run_time": 0.457 }
12 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 587, 577, 567, 557, 547, 537, 527, 517, 507, 497, 487, 477, 467, 457, 447, 437, 427, 417, 407, 397, 387, 377, 367, 357, 347, 337, 327, 317, 307, 297, 287, 277, 267, 257, 247, 237, 227, 217, 207, 197, 187, 177, 167, 157, 147, 137, 127, 117], [-2, -2, -2, -2, -2, -2, -2, -2, 649, 661, 672, 684, 695, 707, 718, 730, 741, 753, 764, 776, 787, 799, 810, 822, 833, 845, 856, 868, 879, 891, 902, 914, 925, 937, 948, 960, 971, 983, 994, 1006, 1017, 1029, 1040, 1052, 1063, 1075, 1086, 1098, 1109, 1121, 1132, 1144, 1155, 1167, 1178, 1190], [-2, -2, -2, -2, -2, -2, -2, -2, 660, 631, 602, 573, 544, 515, 486, 457, 428, 399, 370, 341, 312, 283, 254, 224, 195, 166, 137, 108, 79, 50, 21, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 670, 701, 732, 763, 793, 824, 855, 886, 916, 947, 978, 1009, 1040, 1070, 1101, 1132, 1163, 1193, 1224, 1255, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492627607908463563/20.jpg", "run_time": 0.487 }
13 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 648, 640, 632, 624, 616, 607, 599, 591, 583, 575, 567, 559, 551, 543, 535, 527, 518, 510, 502, 494, 486, 478, 470, 462, 454, 446, 437, 429, 421, 413, 405, 397, 389, 381, 373, 365, 356, 348, 340, 332, 324, 316, 308, 300, 292, 284, 275, 267], [-2, -2, -2, -2, -2, -2, -2, -2, 687, 700, 713, 727, 740, 753, 766, 780, 793, 806, 820, 833, 846, 859, 873, 886, 899, 912, 926, 939, 952, 966, 979, 992, 1005, 1019, 1032, 1045, 1058, 1072, 1085, 1098, 1112, 1125, 1138, 1151, 1165, 1178, 1191, 1204, 1218, 1231, 1244, 1258, 1271, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 684, 719, 754, 789, 824, 858, 893, 928, 963, 998, 1033, 1068, 1103, 1137, 1172, 1207, 1242, 1277, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 666, 640, 614, 588, 562, 536, 510, 484, 458, 432, 406, 380, 354, 328, 302, 275, 249, 223, 197, 171, 145, 119, 93, 67, 41, 15, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492627610474600372/20.jpg", "run_time": 0.474 }
14 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 598, 593, 587, 582, 577, 571, 566, 561, 555, 550, 545, 539, 534, 529, 523, 518, 513, 507, 502, 497, 492, 486, 481, 476, 470, 465, 460, 454, 449, 444, 438, 433, 428, 422, 417, 412, 406, 401, 396, 391, 385, 380, 375, 369, 364, 359, 353, 348], [-2, -2, -2, -2, -2, -2, -2, -2, 690, 728, 765, 802, 840, 877, 914, 952, 989, 1026, 1064, 1101, 1138, 1176, 1213, 1250, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 568, 549, 529, 509, 490, 470, 450, 431, 411, 392, 372, 352, 333, 313, 293, 274, 254, 234, 215, 195, 176, 156, 136, 117, 97, 77, 58, 38, 19, 0, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 691, 704, 718, 732, 746, 759, 773, 787, 801, 814, 828, 842, 856, 869, 883, 897, 911, 924, 938, 952, 966, 980, 993, 1007, 1021, 1035, 1048, 1062, 1076, 1090, 1103, 1117, 1131, 1145, 1158, 1172, 1186, 1200, 1214, 1227, 1241, 1255, 1269, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492627805420764602/20.jpg", "run_time": 0.478 }
15 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 595, 586, 577, 568, 559, 550, 541, 532, 523, 514, 505, 496, 487, 478, 469, 460, 451, 442, 433, 424, 415, 406, 397, 388, 379, 370, 361, 352, 343, 334, 325, 316, 307, 298, 289, 280, 271, 262, 253, 244, 235, 226, 217, 208, 199, 190, 181, 172], [-2, -2, -2, -2, -2, -2, -2, -2, 638, 651, 664, 676, 689, 702, 715, 728, 740, 753, 766, 779, 792, 804, 817, 830, 843, 856, 868, 881, 894, 907, 920, 932, 945, 958, 971, 984, 996, 1009, 1022, 1035, 1048, 1060, 1073, 1086, 1099, 1112, 1124, 1137, 1150, 1163, 1176, 1188, 1201, 1214, 1227, 1240], [-2, -2, -2, -2, -2, -2, -2, -2, 606, 584, 561, 539, 516, 494, 471, 449, 426, 404, 382, 359, 337, 314, 292, 269, 247, 224, 202, 179, 157, 134, 112, 90, 67, 45, 22, 0, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 619, 654, 689, 723, 758, 793, 828, 863, 898, 933, 968, 1002, 1037, 1072, 1107, 1142, 1177, 1212, 1247, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492627871547619739/20.jpg", "run_time": 0.5 }
16 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 628, 623, 618, 612, 607, 602, 597, 591, 586, 581, 575, 570, 565, 559, 554, 549, 543, 538, 533, 527, 522, 517, 511, 506, 501, 496, 490, 485, 480, 474, 469, 464, 458, 453, 448, 442, 437, 432, 426, 421, 416, 410, 405, 400, 394, 389, 384, 379], [-2, -2, -2, -2, -2, -2, -2, -2, 617, 640, 662, 685, 707, 730, 752, 774, 797, 819, 842, 864, 887, 909, 932, 954, 977, 999, 1022, 1044, 1066, 1089, 1111, 1134, 1156, 1179, 1201, 1224, 1246, 1269, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 608, 592, 576, 560, 544, 528, 512, 496, 480, 464, 448, 432, 416, 400, 384, 368, 352, 336, 320, 304, 288, 272, 256, 240, 224, 208, 192, 176, 160, 144, 128, 112, 96, 80, 64, 48, 32, 16, 0, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492627958694436076/20.jpg", "run_time": 0.393 }
17 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 573, 568, 562, 556, 550, 545, 539, 533, 527, 521, 516, 510, 504, 498, 493, 487, 481, 475, 469, 464, 458, 452, 446, 441, 435, 429, 423, 418, 412, 406, 400, 394, 389, 383, 377, 371, 366, 360, 354, 348, 342, 337, 331, 325, 319, 314, 308, 302], [-2, -2, -2, -2, -2, -2, -2, -2, 671, 708, 746, 783, 820, 858, 895, 932, 970, 1007, 1044, 1082, 1119, 1156, 1194, 1231, 1268, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 544, 526, 509, 492, 475, 457, 440, 423, 405, 388, 371, 353, 336, 319, 301, 284, 267, 249, 232, 215, 197, 180, 163, 145, 128, 111, 93, 76, 59, 42, 24, 7, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 663, 677, 691, 705, 718, 732, 746, 760, 773, 787, 801, 815, 828, 842, 856, 870, 884, 897, 911, 925, 939, 952, 966, 980, 994, 1007, 1021, 1035, 1049, 1062, 1076, 1090, 1104, 1117, 1131, 1145, 1159, 1173, 1186, 1200, 1214, 1228, 1241, 1255, 1269, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492628003602776964/20.jpg", "run_time": 0.486 }
18 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 610, 602, 593, 585, 577, 568, 560, 551, 543, 535, 526, 518, 509, 501, 493, 484, 476, 467, 459, 451, 442, 434, 425, 417, 409, 400, 392, 384, 375, 367, 358, 350, 342, 333, 325, 316, 308, 300, 291, 283, 274, 266, 258, 249, 241, 232, 224, 216], [-2, -2, -2, -2, -2, -2, -2, -2, 661, 674, 686, 699, 712, 725, 738, 750, 763, 776, 789, 802, 814, 827, 840, 853, 866, 878, 891, 904, 917, 930, 942, 955, 968, 981, 994, 1006, 1019, 1032, 1045, 1058, 1070, 1083, 1096, 1109, 1122, 1134, 1147, 1160, 1173, 1186, 1198, 1211, 1224, 1237, 1250, 1262], [-2, -2, -2, -2, -2, -2, -2, -2, 598, 635, 672, 710, 747, 784, 822, 859, 896, 934, 971, 1008, 1046, 1083, 1120, 1157, 1195, 1232, 1269, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492628026320478715/20.jpg", "run_time": 0.453 }
19 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 631, 619, 608, 596, 584, 572, 560, 548, 536, 524, 512, 500, 488, 476, 465, 453, 441, 429, 417, 405, 393, 381, 369, 357, 345, 333, 322, 310, 298, 286, 274, 262, 250, 238, 226, 214, 202, 190, 178, 167, 155, 143, 131, 119, 107, 95, 83, 71], [-2, -2, -2, -2, -2, -2, -2, -2, 637, 647, 657, 667, 677, 687, 697, 707, 717, 727, 737, 747, 757, 767, 777, 787, 797, 807, 817, 827, 837, 847, 857, 867, 877, 887, 897, 907, 917, 927, 937, 947, 957, 967, 977, 987, 997, 1007, 1017, 1027, 1037, 1047, 1057, 1067, 1077, 1087, 1097, 1107], [-2, -2, -2, -2, -2, -2, -2, -2, 641, 674, 706, 739, 772, 804, 837, 870, 903, 935, 968, 1001, 1033, 1066, 1099, 1131, 1164, 1197, 1230, 1262, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 645, 616, 587, 558, 529, 500, 471, 441, 412, 383, 354, 325, 296, 267, 238, 209, 180, 151, 122, 93, 64, 35, 6, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492628031017373452/20.jpg", "run_time": 0.473 }
20 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 634, 625, 616, 608, 599, 590, 581, 573, 564, 555, 547, 538, 529, 521, 512, 503, 494, 486, 477, 468, 460, 451, 442, 434, 425, 416, 408, 399, 390, 381, 373, 364, 355, 347, 338, 329, 321, 312, 303, 295, 286, 277, 268, 260, 251, 242, 234, 225], [-2, -2, -2, -2, -2, -2, -2, -2, 632, 670, 707, 744, 782, 819, 856, 894, 931, 968, 1006, 1043, 1080, 1118, 1155, 1192, 1230, 1267, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 670, 684, 698, 711, 725, 739, 753, 766, 780, 794, 808, 821, 835, 849, 863, 877, 890, 904, 918, 932, 945, 959, 973, 987, 1000, 1014, 1028, 1042, 1055, 1069, 1083, 1097, 1111, 1124, 1138, 1152, 1166, 1179, 1193, 1207, 1221, 1234, 1248, 1262, 1276, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492628364152947274/20.jpg", "run_time": 0.327 }
21 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 626, 616, 605, 594, 583, 573, 562, 551, 541, 530, 519, 508, 498, 487, 476, 465, 455, 444, 433, 423, 412, 401, 390, 380, 369, 358, 347, 337, 326, 315, 305, 294, 283, 272, 262, 251, 240, 230, 219, 208, 197, 187, 176, 165, 154, 144, 133, 122], [-2, -2, -2, -2, -2, -2, -2, -2, 613, 587, 561, 535, 509, 483, 457, 431, 405, 379, 353, 327, 301, 275, 249, 222, 196, 170, 144, 118, 92, 66, 40, 14, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 683, 720, 757, 795, 832, 869, 907, 944, 981, 1019, 1056, 1093, 1131, 1168, 1205, 1242, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 658, 671, 683, 695, 708, 720, 732, 745, 757, 769, 782, 794, 806, 819, 831, 843, 856, 868, 880, 893, 905, 917, 930, 942, 955, 967, 979, 992, 1004, 1016, 1029, 1041, 1053, 1066, 1078, 1090, 1103, 1115, 1127, 1140, 1152, 1164, 1177, 1189, 1202, 1214, 1226, 1239]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492628367980837458/20.jpg", "run_time": 0.364 }
22 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 617, 607, 598, 588, 578, 569, 559, 550, 540, 530, 521, 511, 501, 492, 482, 472, 463, 453, 443, 434, 424, 414, 405, 395, 385, 376, 366, 356, 347, 337, 327, 318, 308, 298, 289, 279, 269, 260, 250, 241, 231, 221, 212, 202, 192, 183, 173, 163], [-2, -2, -2, -2, -2, -2, -2, -2, 577, 551, 525, 499, 473, 447, 421, 395, 369, 342, 316, 290, 264, 238, 212, 186, 160, 134, 108, 82, 56, 30, 4, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 768, 805, 842, 880, 917, 954, 992, 1029, 1066, 1104, 1141, 1178, 1216, 1253, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 653, 666, 678, 690, 703, 715, 727, 740, 752, 765, 777, 789, 802, 814, 826, 839, 851, 863, 876, 888, 900, 913, 925, 937, 950, 962, 974, 987, 999, 1012, 1024, 1036, 1049, 1061, 1073, 1086, 1098, 1110, 1123, 1135, 1147, 1160, 1172, 1184, 1197, 1209, 1221, 1234]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492628392132013744/20.jpg", "run_time": 0.36 }
23 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 506, 483, 459, 436, 412, 389, 365, 342, 318, 294, 271, 247, 224, 200, 177, 153, 130, 106, 82, 59, 35, 12, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 625, 618, 611, 604, 597, 590, 583, 576, 569, 562, 555, 548, 541, 534, 527, 520, 513, 506, 499, 492, 485, 478, 471, 464, 457, 450, 443, 436, 429, 422, 415, 408, 401, 394, 387, 380, 373, 366, 359, 352, 345, 338, 331, 324, 317, 310, 303, 296], [-2, -2, -2, -2, -2, -2, -2, -2, 702, 739, 777, 814, 851, 889, 926, 963, 1001, 1038, 1075, 1113, 1150, 1187, 1224, 1262, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492628544439813675/20.jpg", "run_time": 0.391 }
24 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 627, 620, 613, 606, 599, 592, 585, 578, 571, 564, 557, 550, 543, 536, 529, 522, 515, 508, 501, 494, 487, 480, 473, 466, 459, 452, 445, 438, 431, 424, 417, 410, 403, 396, 389, 382, 375, 368, 361, 354, 347, 340, 333, 326, 319, 312, 305, 298], [-2, -2, -2, -2, -2, -2, -2, -2, 676, 691, 706, 722, 737, 753, 768, 783, 799, 814, 830, 845, 860, 876, 891, 907, 922, 937, 953, 968, 984, 999, 1014, 1030, 1045, 1061, 1076, 1091, 1107, 1122, 1138, 1153, 1168, 1184, 1199, 1215, 1230, 1245, 1261, 1276, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492628717669110483/20.jpg", "run_time": 0.271 }
25 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 639, 631, 623, 615, 607, 598, 590, 582, 574, 566, 558, 550, 542, 534, 526, 518, 509, 501, 493, 485, 477, 469, 461, 453, 445, 437, 428, 420, 412, 404, 396, 388, 380, 372, 364, 356, 347, 339, 331, 323, 315, 307, 299, 291, 283, 275, 266, 258], [-2, -2, -2, -2, -2, -2, -2, -2, 724, 759, 794, 829, 864, 898, 933, 968, 1003, 1038, 1073, 1108, 1143, 1177, 1212, 1247, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 657, 633, 608, 583, 558, 534, 509, 484, 459, 435, 410, 385, 360, 336, 311, 286, 261, 237, 212, 187, 162, 138, 113, 88, 63, 39, 14, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492628748683581912/20.jpg", "run_time": 0.289 }
26 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 634, 628, 621, 615, 608, 602, 595, 589, 582, 576, 569, 563, 556, 550, 543, 537, 530, 524, 517, 511, 504, 498, 491, 485, 478, 472, 465, 459, 452, 446, 439, 433, 426, 420, 413, 407, 400, 394, 387, 381, 374, 368, 361, 355, 348, 342, 335, 329], [-2, -2, -2, -2, -2, -2, -2, -2, 625, 609, 592, 575, 559, 542, 525, 509, 492, 475, 459, 442, 426, 409, 392, 376, 359, 342, 326, 309, 292, 276, 259, 242, 226, 209, 193, 176, 159, 143, 126, 109, 93, 76, 59, 43, 26, 9, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492628753214604895/20.jpg", "run_time": 0.306 }
27 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 641, 634, 627, 621, 614, 607, 600, 594, 587, 580, 574, 567, 560, 553, 547, 540, 533, 526, 520, 513, 506, 499, 493, 486, 479, 472, 466, 459, 452, 445, 439, 432, 425, 418, 412, 405, 398, 391, 385, 378, 371, 364, 358, 351, 344, 337, 331, 324], [-2, -2, -2, -2, -2, -2, -2, -2, 683, 720, 757, 795, 832, 869, 907, 944, 981, 1019, 1056, 1093, 1131, 1168, 1205, 1242, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 623, 607, 590, 573, 557, 540, 523, 507, 490, 474, 457, 440, 424, 407, 390, 374, 357, 340, 324, 307, 290, 274, 257, 241, 224, 207, 191, 174, 157, 141, 124, 107, 91, 74, 57, 41, 24, 8, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492628756811316586/20.jpg", "run_time": 0.337 }
28 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 629, 621, 614, 606, 598, 590, 582, 575, 567, 559, 551, 543, 535, 528, 520, 512, 504, 496, 489, 481, 473, 465, 457, 450, 442, 434, 426, 418, 410, 403, 395, 387, 379, 371, 364, 356, 348, 340, 332, 325, 317, 309, 301, 293, 285, 278, 270, 262], [-2, -2, -2, -2, -2, -2, -2, -2, 600, 580, 559, 539, 518, 498, 477, 457, 436, 416, 395, 375, 354, 334, 313, 293, 272, 252, 231, 211, 190, 170, 149, 129, 108, 88, 67, 47, 26, 6, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 725, 763, 800, 837, 874, 912, 949, 986, 1024, 1061, 1098, 1136, 1173, 1210, 1248, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492628759843106892/20.jpg", "run_time": 0.281 }
29 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 638, 630, 621, 613, 605, 597, 589, 581, 573, 565, 557, 549, 541, 532, 524, 516, 508, 500, 492, 484, 476, 468, 460, 451, 443, 435, 427, 419, 411, 403, 395, 387, 379, 370, 362, 354, 346, 338, 330, 322, 314, 306, 298, 289, 281, 273, 265, 257], [-2, -2, -2, -2, -2, -2, -2, -2, 596, 577, 558, 540, 521, 502, 483, 464, 446, 427, 408, 389, 370, 352, 333, 314, 295, 276, 258, 239, 220, 201, 182, 164, 145, 126, 107, 88, 70, 51, 32, 13, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492628785560580255/20.jpg", "run_time": 0.298 }
30 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 592, 587, 582, 576, 571, 566, 560, 555, 550, 544, 539, 534, 528, 523, 518, 512, 507, 502, 496, 491, 486, 481, 475, 470, 465, 459, 454, 449, 443, 438, 433, 427, 422, 417, 411, 406, 401, 395, 390, 385, 380, 374, 369, 364, 358, 353, 348, 342], [-2, -2, -2, -2, -2, -2, -2, -2, 539, 518, 498, 477, 457, 436, 415, 395, 374, 354, 333, 313, 292, 272, 251, 231, 210, 190, 169, 149, 128, 108, 87, 67, 46, 26, 5, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 671, 708, 746, 783, 820, 858, 895, 932, 970, 1007, 1044, 1082, 1119, 1156, 1194, 1231, 1268, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492628791892679406/20.jpg", "run_time": 0.297 }
31 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 624, 616, 609, 601, 593, 585, 577, 569, 562, 554, 546, 538, 530, 523, 515, 507, 499, 491, 484, 476, 468, 460, 452, 444, 437, 429, 421, 413, 405, 398, 390, 382, 374, 366, 359, 351, 343, 335, 327, 319, 312, 304, 296, 288, 280, 273, 265, 257], [-2, -2, -2, -2, -2, -2, -2, -2, 706, 743, 781, 818, 855, 892, 930, 967, 1004, 1042, 1079, 1116, 1154, 1191, 1228, 1266, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 701, 714, 728, 742, 756, 770, 783, 797, 811, 825, 838, 852, 866, 880, 893, 907, 921, 935, 948, 962, 976, 990, 1004, 1017, 1031, 1045, 1059, 1072, 1086, 1100, 1114, 1127, 1141, 1155, 1169, 1182, 1196, 1210, 1224, 1238, 1251, 1265, 1279, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 602, 580, 559, 537, 516, 494, 473, 452, 430, 409, 387, 366, 344, 323, 301, 280, 259, 237, 216, 194, 173, 151, 130, 108, 87, 66, 44, 23, 1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492628894461588977/20.jpg", "run_time": 0.38 }
32 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 585, 567, 549, 531, 513, 495, 477, 459, 441, 423, 405, 387, 369, 351, 333, 315, 297, 279, 261, 243, 225, 207, 189, 171, 153, 134, 116, 98, 80, 62, 44, 26, 8, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 615, 607, 599, 590, 582, 573, 565, 557, 548, 540, 531, 523, 515, 506, 498, 489, 481, 473, 464, 456, 447, 439, 431, 422, 414, 406, 397, 389, 380, 372, 364, 355, 347, 338, 330, 322, 313, 305, 296, 288, 280, 271, 263, 254, 246, 238, 229, 221], [-2, -2, -2, -2, -2, -2, -2, -2, 679, 716, 753, 791, 828, 865, 903, 940, 977, 1015, 1052, 1089, 1127, 1164, 1201, 1239, 1276, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492628898525855772/20.jpg", "run_time": 0.379 }
33 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 613, 605, 597, 590, 582, 575, 567, 560, 552, 545, 537, 530, 522, 515, 507, 499, 492, 484, 477, 469, 462, 454, 447, 439, 432, 424, 417, 409, 402, 394, 386, 379, 371, 364, 356, 349, 341, 334, 326, 319, 311, 304, 296, 288, 281, 273, 266, 258], [-2, -2, -2, -2, -2, -2, -2, -2, 636, 613, 591, 568, 546, 523, 501, 478, 456, 434, 411, 389, 366, 344, 321, 299, 276, 254, 231, 209, 186, 164, 142, 119, 97, 74, 52, 29, 7, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 714, 751, 788, 826, 863, 900, 938, 975, 1012, 1049, 1087, 1124, 1161, 1199, 1236, 1273, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 675, 689, 703, 716, 730, 744, 758, 772, 785, 799, 813, 827, 840, 854, 868, 882, 895, 909, 923, 937, 950, 964, 978, 992, 1006, 1019, 1033, 1047, 1061, 1074, 1088, 1102, 1116, 1129, 1143, 1157, 1171, 1184, 1198, 1212, 1226, 1240, 1253, 1267, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492628915781811493/20.jpg", "run_time": 0.421 }
34 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 581, 566, 550, 535, 519, 504, 489, 473, 458, 442, 427, 412, 396, 381, 365, 350, 335, 319, 304, 288, 273, 258, 242, 227, 211, 196, 181, 165, 150, 134, 119, 104, 88, 73, 57, 42, 27, 11, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 626, 619, 612, 605, 598, 591, 584, 577, 570, 563, 556, 549, 542, 535, 528, 521, 514, 507, 500, 493, 486, 479, 472, 465, 458, 451, 444, 437, 430, 423, 416, 409, 402, 395, 388, 381, 374, 367, 360, 353, 346, 339, 332, 325, 318, 311, 304, 297], [-2, -2, -2, -2, -2, -2, -2, -2, 702, 739, 777, 814, 851, 889, 926, 963, 1001, 1038, 1075, 1113, 1150, 1187, 1224, 1262, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492628925209797907/20.jpg", "run_time": 0.423 }
35 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 414, 398, 382, 366, 350, 334, 318, 302, 286, 270, 254, 238, 222, 206, 190, 174, 158, 142, 126, 110, 94, 78, 62, 46, 30, 14, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 610, 604, 599, 593, 587, 582, 576, 571, 565, 560, 554, 549, 543, 538, 532, 526, 521, 515, 510, 504, 499, 493, 488, 482, 477, 471, 466, 460, 454, 449, 443, 438, 432, 427, 421, 416, 410, 405, 399, 393, 388, 382, 377, 371, 366, 360, 355, 349], [-2, -2, -2, -2, -2, -2, -2, -2, 710, 747, 784, 822, 859, 896, 934, 971, 1008, 1046, 1083, 1120, 1158, 1195, 1232, 1270, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492628946166107862/20.jpg", "run_time": 0.423 }
36 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 649, 640, 631, 621, 612, 603, 593, 584, 575, 565, 556, 547, 538, 528, 519, 510, 500, 491, 482, 472, 463, 454, 444, 435, 426, 416, 407, 398, 388, 379, 370, 360, 351, 342, 332, 323, 314, 304, 295, 286, 276, 267, 258, 248, 239, 230, 220, 211], [-2, -2, -2, -2, -2, -2, -2, -2, 670, 682, 694, 706, 717, 729, 741, 753, 765, 777, 789, 801, 813, 825, 837, 849, 860, 872, 884, 896, 908, 920, 932, 944, 956, 968, 980, 992, 1003, 1015, 1027, 1039, 1051, 1063, 1075, 1087, 1099, 1111, 1123, 1135, 1146, 1158, 1170, 1182, 1194, 1206, 1218, 1230]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492629493832252271/20.jpg", "run_time": 0.267 }
37 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 584, 564, 544, 525, 505, 485, 466, 446, 427, 407, 387, 368, 348, 328, 309, 289, 270, 250, 230, 211, 191, 171, 152, 132, 113, 93, 73, 54, 34, 14, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 599, 594, 590, 585, 581, 576, 572, 568, 563, 559, 554, 550, 545, 541, 536, 532, 527, 523, 519, 514, 510, 505, 501, 496, 492, 487, 483, 478, 474, 470, 465, 461, 456, 452, 447, 443, 438, 434, 429, 425, 421, 416, 412, 407, 403, 398, 394, 389]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492629626720641603/20.jpg", "run_time": 0.316 }
38 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 450, 429, 407, 386, 364, 343, 322, 300, 279, 257, 236, 214, 193, 171, 150, 129, 107, 86, 64, 43, 21, 0, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 641, 632, 623, 614, 605, 596, 587, 578, 569, 560, 551, 542, 533, 524, 515, 506, 497, 488, 478, 469, 460, 451, 442, 433, 424, 415, 406, 397, 388, 379, 370, 361, 352, 343, 334, 325, 316, 307, 298, 289, 280, 271, 262, 253, 244, 235, 226, 217], [-2, -2, -2, -2, -2, -2, -2, -2, 644, 657, 670, 683, 697, 710, 723, 737, 750, 763, 776, 790, 803, 816, 829, 843, 856, 869, 883, 896, 909, 922, 936, 949, 962, 975, 989, 1002, 1015, 1029, 1042, 1055, 1068, 1082, 1095, 1108, 1121, 1135, 1148, 1161, 1174, 1188, 1201, 1214, 1228, 1241, 1254, 1267], [-2, -2, -2, -2, -2, -2, -2, -2, 598, 635, 672, 710, 747, 784, 822, 859, 896, 934, 971, 1008, 1046, 1083, 1120, 1157, 1195, 1232, 1269, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492629646273459822/20.jpg", "run_time": 0.363 }
39 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 683, 720, 757, 795, 832, 869, 907, 944, 981, 1019, 1056, 1093, 1131, 1168, 1205, 1242, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 691, 704, 718, 732, 746, 759, 773, 787, 801, 814, 828, 842, 856, 869, 883, 897, 911, 924, 938, 952, 966, 980, 993, 1007, 1021, 1035, 1048, 1062, 1076, 1090, 1103, 1117, 1131, 1145, 1158, 1172, 1186, 1200, 1214, 1227, 1241, 1255, 1269, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 643, 635, 628, 620, 612, 604, 596, 589, 581, 573, 565, 557, 549, 542, 534, 526, 518, 510, 503, 495, 487, 479, 471, 464, 456, 448, 440, 432, 424, 417, 409, 401, 393, 385, 378, 370, 362, 354, 346, 338, 331, 323, 315, 307, 299, 292, 284, 276]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492629700240878893/20.jpg", "run_time": 0.263 }
40 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 685, 698, 710, 722, 735, 747, 759, 772, 784, 796, 809, 821, 833, 846, 858, 870, 883, 895, 907, 920, 932, 945, 957, 969, 982, 994, 1006, 1019, 1031, 1043, 1056, 1068, 1080, 1093, 1105, 1117, 1130, 1142, 1154, 1167, 1179, 1191, 1204, 1216, 1229, 1241, 1253, 1266], [-2, -2, -2, -2, -2, -2, -2, -2, 621, 586, 551, 516, 481, 447, 412, 377, 342, 307, 272, 237, 202, 168, 133, 98, 63, 28, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492629744847348361/20.jpg", "run_time": 0.234 }
41 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 365, 349, 333, 317, 301, 285, 269, 253, 237, 221, 205, 189, 173, 157, 141, 125, 109, 93, 77, 61, 45, 29, 13, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492629764202222740/20.jpg", "run_time": 0.331 }
42 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 614, 609, 604, 600, 595, 590, 586, 581, 576, 572, 567, 562, 558, 553, 548, 544, 539, 534, 530, 525, 520, 516, 511, 506, 502, 497, 492, 488, 483, 478, 474, 469, 464, 460, 455, 450, 446, 441, 436, 432, 427, 422, 418, 413, 408, 404, 399, 394], [-2, -2, -2, -2, -2, -2, -2, -2, 526, 508, 490, 472, 454, 435, 417, 399, 381, 363, 345, 327, 309, 291, 273, 255, 237, 219, 201, 183, 165, 147, 129, 111, 93, 75, 57, 39, 21, 2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 690, 728, 765, 802, 840, 877, 914, 952, 989, 1026, 1064, 1101, 1138, 1176, 1213, 1250, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492629772330681800/20.jpg", "run_time": 0.329 }
43 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 666, 652, 639, 625, 611, 597, 584, 570, 556, 542, 528, 515, 501, 487, 473, 460, 446, 432, 418, 405, 391, 377, 363, 350, 336, 322, 308, 295, 281, 267, 253, 239, 226, 212, 198, 184, 171, 157, 143, 129, 116, 102, 88, 74, 61, 47, 33, 19]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492629968347062256/20.jpg", "run_time": 0.312 }
44 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 649, 641, 632, 623, 615, 606, 597, 589, 580, 571, 563, 554, 545, 536, 528, 519, 510, 502, 493, 484, 476, 467, 458, 450, 441, 432, 423, 415, 406, 397, 389, 380, 371, 363, 354, 345, 337, 328, 319, 310, 302, 293, 284, 276, 267, 258, 250, 241], [-2, -2, -2, -2, -2, -2, -2, -2, 640, 678, 715, 752, 789, 827, 864, 901, 939, 976, 1013, 1051, 1088, 1125, 1163, 1200, 1237, 1275, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 642, 655, 669, 682, 695, 708, 722, 735, 748, 761, 775, 788, 801, 815, 828, 841, 854, 868, 881, 894, 907, 921, 934, 947, 961, 974, 987, 1000, 1014, 1027, 1040, 1053, 1067, 1080, 1093, 1106, 1120, 1133, 1146, 1160, 1173, 1186, 1199, 1213, 1226, 1239, 1252, 1266], [-2, -2, -2, -2, -2, -2, -2, -2, 654, 635, 616, 597, 578, 560, 541, 522, 503, 484, 466, 447, 428, 409, 390, 372, 353, 334, 315, 296, 277, 259, 240, 221, 202, 183, 165, 146, 127, 108, 89, 71, 52, 33, 14, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492630120020607688/20.jpg", "run_time": 0.363 }
45 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 571, 608, 645, 683, 720, 757, 795, 832, 869, 907, 944, 981, 1018, 1056, 1093, 1130, 1168, 1205, 1242, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 643, 654, 665, 676, 687, 698, 709, 720, 732, 743, 754, 765, 776, 787, 798, 809, 820, 831, 843, 854, 865, 876, 887, 898, 909, 920, 931, 943, 954, 965, 976, 987, 998, 1009, 1020, 1031, 1042, 1054, 1065, 1076, 1087, 1098, 1109, 1120, 1131, 1142, 1154, 1165], [-2, -2, -2, -2, -2, -2, -2, -2, 601, 570, 539, 508, 477, 447, 416, 385, 354, 324, 293, 262, 231, 200, 170, 139, 108, 77, 47, 16, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 633, 622, 610, 599, 587, 576, 564, 553, 541, 530, 518, 507, 495, 484, 472, 461, 449, 438, 426, 415, 403, 392, 380, 369, 357, 346, 334, 323, 311, 300, 288, 277, 265, 254, 242, 231, 219, 208, 196, 185, 173, 162, 150, 139, 127, 116, 104, 93]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492630278191641862/20.jpg", "run_time": 0.396 }
46 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 635, 646, 657, 669, 680, 691, 702, 713, 724, 735, 746, 757, 768, 780, 791, 802, 813, 824, 835, 846, 857, 868, 880, 891, 902, 913, 924, 935, 946, 957, 968, 979, 991, 1002, 1013, 1024, 1035, 1046, 1057, 1068, 1079, 1091, 1102, 1113, 1124, 1135, 1146, 1157], [-2, -2, -2, -2, -2, -2, -2, -2, 684, 672, 661, 649, 638, 626, 615, 603, 592, 580, 569, 557, 546, 534, 523, 511, 500, 488, 477, 465, 454, 442, 431, 419, 408, 396, 385, 373, 362, 350, 339, 327, 316, 304, 293, 281, 270, 258, 247, 235, 224, 212, 201, 189, 178, 166, 155, 143], [-2, -2, -2, -2, -2, -2, -2, -2, 661, 629, 596, 563, 530, 498, 465, 432, 400, 367, 334, 301, 269, 236, 203, 171, 138, 105, 73, 40, 7, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492631377662145887/20.jpg", "run_time": 0.473 }
47 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 672, 683, 695, 706, 718, 729, 741, 752, 764, 775, 787, 798, 810, 821, 833, 844, 856, 867, 879, 890, 902, 913, 925, 936, 948, 959, 971, 982, 994, 1006, 1017, 1029, 1040, 1052, 1063, 1075, 1086, 1098, 1109, 1121, 1132, 1144, 1155, 1167, 1178, 1190, 1201, 1213], [-2, -2, -2, -2, -2, -2, -2, -2, 588, 557, 526, 495, 465, 434, 403, 372, 341, 311, 280, 249, 218, 188, 157, 126, 95, 64, 34, 3, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 688, 716, 743, 771, 798, 826, 853, 880, 908, 935, 963, 990, 1018, 1045, 1073, 1100, 1128, 1155, 1183, 1210, 1238, 1265, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 641, 629, 617, 605, 593, 581, 569, 557, 545, 533, 522, 510, 498, 486, 474, 462, 450, 438, 426, 414, 402, 390, 379, 367, 355, 343, 331, 319, 307, 295, 283, 271, 259, 247, 235, 224, 212, 200, 188, 176, 164, 152, 140, 128, 116, 104, 92, 81]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492631797808463012/20.jpg", "run_time": 0.437 }
48 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 667, 678, 689, 700, 711, 722, 733, 744, 755, 767, 778, 789, 800, 811, 822, 833, 844, 855, 866, 878, 889, 900, 911, 922, 933, 944, 955, 966, 978, 989, 1000, 1011, 1022, 1033, 1044, 1055, 1066, 1077, 1089, 1100, 1111, 1122, 1133, 1144, 1155, 1166, 1177, 1189], [-2, -2, -2, -2, -2, -2, -2, -2, 669, 658, 647, 637, 626, 615, 604, 594, 583, 572, 562, 551, 540, 529, 519, 508, 497, 487, 476, 465, 454, 444, 433, 422, 411, 401, 390, 379, 369, 358, 347, 336, 326, 315, 304, 293, 283, 272, 261, 251, 240, 229, 218, 208, 197, 186, 176, 165], [-2, -2, -2, -2, -2, -2, -2, -2, 677, 712, 747, 781, 816, 851, 886, 921, 956, 991, 1026, 1060, 1095, 1130, 1165, 1200, 1235, 1270, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492634561885337945/20.jpg", "run_time": 0.454 }
49 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 675, 685, 695, 705, 715, 725, 735, 745, 755, 765, 775, 785, 795, 805, 815, 825, 835, 845, 855, 865, 875, 885, 895, 905, 915, 925, 935, 945, 955, 965, 975, 985, 995, 1005, 1015, 1025, 1035, 1045, 1055, 1065, 1075, 1085, 1095, 1105, 1115, 1125, 1135, 1145], [-2, -2, -2, -2, -2, -2, -2, -2, 632, 620, 609, 597, 586, 574, 563, 551, 540, 528, 517, 505, 494, 482, 471, 459, 448, 436, 425, 413, 402, 390, 379, 367, 356, 344, 333, 321, 310, 298, 287, 275, 264, 252, 241, 229, 218, 206, 195, 183, 172, 160, 149, 137, 126, 114, 103, 91], [-2, -2, -2, -2, -2, -2, -2, -2, 698, 667, 636, 605, 575, 544, 513, 482, 451, 421, 390, 359, 328, 298, 267, 236, 205, 174, 144, 113, 82, 51, 21, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 749, 778, 807, 836, 865, 894, 923, 952, 981, 1010, 1039, 1068, 1097, 1126, 1155, 1184, 1213, 1242, 1271, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492636918035773538/20.jpg", "run_time": 0.489 }
50 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 631, 619, 606, 594, 582, 569, 557, 545, 532, 520, 508, 495, 483, 471, 458, 446, 434, 421, 409, 396, 384, 372, 359, 347, 335, 322, 310, 298, 285, 273, 261, 248, 236, 224, 211, 199, 187, 174, 162, 149, 137, 125, 112, 100, 88, 75, 63, 51], [-2, -2, -2, -2, -2, -2, -2, -2, 580, 609, 638, 667, 696, 725, 754, 783, 812, 841, 870, 899, 928, 957, 986, 1015, 1044, 1074, 1103, 1132, 1161, 1190, 1219, 1248, 1277, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 701, 709, 717, 725, 733, 741, 749, 758, 766, 774, 782, 790, 798, 806, 814, 822, 830, 838, 847, 855, 863, 871, 879, 887, 895, 903, 911, 919, 928, 936, 944, 952, 960, 968, 976, 984, 992, 1000, 1009, 1017, 1025, 1033, 1041, 1049, 1057, 1065, 1073, 1081], [-2, -2, -2, -2, -2, -2, -2, -2, 635, 601, 566, 531, 496, 461, 426, 391, 356, 322, 287, 252, 217, 182, 147, 112, 77, 43, 8, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0531/1492637138669280283/20.jpg", "run_time": 0.41 }
51 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 511, 529, 546, 563, 580, 598, 615, 632, 650, 667, 684, 702, 719, 736, 754, 771, 788, 806, 823, 840, 858, 875, 892, 910, 927, 944, 962, 979, 996, 1013, 1031, 1048, 1065, 1083, 1100, 1117, 1135, 1152, 1169, 1187, 1204, 1221, 1239, 1256, 1273, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 659, 652, 645, 638, 631, 624, 617, 610, 603, 596, 589, 582, 575, 568, 561, 554, 547, 540, 533, 526, 519, 512, 505, 498, 491, 484, 477, 470, 463, 456, 449, 442, 435, 428, 421, 414, 407, 400, 393, 386, 379, 372, 365, 358, 351, 344, 337, 330], [-2, -2, -2, -2, -2, -2, -2, -2, 603, 576, 548, 521, 493, 466, 438, 411, 383, 356, 328, 301, 273, 246, 219, 191, 164, 136, 109, 81, 54, 26, 0, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494452381594376146/20.jpg", "run_time": 0.359 }
52 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 752, 790, 827, 864, 902, 939, 976, 1013, 1051, 1088, 1125, 1163, 1200, 1237, 1275, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 730, 705, 680, 655, 631, 606, 581, 556, 532, 507, 482, 457, 433, 408, 383, 358, 334, 309, 284, 259, 235, 210, 185, 160, 136, 111, 86, 61, 37, 12, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494452399585761304/20.jpg", "run_time": 0.359 }
53 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 671, 708, 746, 783, 820, 858, 895, 932, 970, 1007, 1044, 1082, 1119, 1156, 1194, 1231, 1268, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 655, 646, 637, 629, 620, 611, 603, 594, 585, 577, 568, 559, 550, 542, 533, 524, 516, 507, 498, 490, 481, 472, 464, 455, 446, 437, 429, 420, 411, 403, 394, 385, 377, 368, 359, 351, 342, 333, 324, 316, 307, 298, 290, 281, 272, 264, 255, 246], [-2, -2, -2, -2, -2, -2, -2, -2, 666, 678, 691, 704, 717, 730, 742, 755, 768, 781, 794, 806, 819, 832, 845, 858, 870, 883, 896, 909, 922, 934, 947, 960, 973, 986, 998, 1011, 1024, 1037, 1050, 1062, 1075, 1088, 1101, 1114, 1126, 1139, 1152, 1165, 1178, 1190, 1203, 1216, 1229, 1242, 1254, 1267], [-2, -2, -2, -2, -2, -2, -2, -2, 636, 605, 575, 544, 513, 482, 452, 421, 390, 359, 328, 298, 267, 236, 205, 175, 144, 113, 82, 51, 21, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494452407582274573/20.jpg", "run_time": 0.316 }
54 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 676, 665, 653, 641, 629, 617, 605, 593, 581, 569, 557, 545, 533, 522, 510, 498, 486, 474, 462, 450, 438, 426, 414, 402, 390, 379, 367, 355, 343, 331, 319, 307, 295, 283, 271, 259, 247, 236, 224, 212, 200, 188, 176, 164, 152, 140, 128, 116], [-2, -2, -2, -2, -2, -2, -2, -2, 677, 712, 747, 781, 816, 851, 886, 921, 956, 991, 1026, 1060, 1095, 1130, 1165, 1200, 1235, 1270, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 670, 681, 692, 703, 713, 724, 735, 745, 756, 767, 778, 788, 799, 810, 820, 831, 842, 853, 863, 874, 885, 896, 906, 917, 928, 938, 949, 960, 971, 981, 992, 1003, 1014, 1024, 1035, 1046, 1056, 1067, 1078, 1089, 1099, 1110, 1121, 1131, 1142, 1153, 1164, 1174]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494452443567310647/20.jpg", "run_time": 0.282 }
55 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 648, 685, 723, 760, 797, 835, 872, 909, 946, 984, 1021, 1058, 1096, 1133, 1170, 1208, 1245, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 634, 601, 569, 536, 503, 470, 438, 405, 372, 340, 307, 274, 241, 209, 176, 143, 111, 78, 45, 12, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494452495543904834/20.jpg", "run_time": 0.281 }
56 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 629, 666, 703, 741, 778, 815, 853, 890, 927, 964, 1002, 1039, 1076, 1114, 1151, 1188, 1226, 1263, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 628, 641, 655, 669, 683, 696, 710, 724, 738, 751, 765, 779, 793, 806, 820, 834, 848, 862, 875, 889, 903, 917, 930, 944, 958, 972, 985, 999, 1013, 1027, 1040, 1054, 1068, 1082, 1096, 1109, 1123, 1137, 1151, 1164, 1178, 1192, 1206, 1219, 1233, 1247, 1261, 1274]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494452521532285259/20.jpg", "run_time": 0.31 }
57 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 595, 586, 577, 568, 559, 550, 541, 532, 523, 514, 505, 496, 487, 478, 469, 460, 451, 442, 433, 424, 415, 406, 397, 388, 379, 370, 361, 352, 343, 334, 325, 316, 307, 298, 289, 280, 271, 262, 253, 244, 235, 226, 217, 208, 199, 190, 181, 172], [-2, -2, -2, -2, -2, -2, -2, -2, 555, 525, 494, 463, 432, 401, 371, 340, 309, 278, 248, 217, 186, 155, 124, 94, 63, 32, 1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 617, 630, 644, 657, 670, 683, 697, 710, 723, 737, 750, 763, 776, 790, 803, 816, 829, 843, 856, 869, 882, 896, 909, 922, 936, 949, 962, 975, 989, 1002, 1015, 1028, 1042, 1055, 1068, 1082, 1095, 1108, 1121, 1135, 1148, 1161, 1174, 1188, 1201, 1214, 1228, 1241]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494452527529663225/20.jpg", "run_time": 0.355 }
58 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 717, 755, 792, 829, 867, 904, 941, 979, 1016, 1053, 1091, 1128, 1165, 1203, 1240, 1277, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 599, 590, 580, 571, 562, 552, 543, 534, 524, 515, 506, 496, 487, 478, 468, 459, 450, 440, 431, 422, 412, 403, 394, 384, 375, 366, 356, 347, 338, 328, 319, 310, 300, 291, 282, 272, 263, 254, 244, 235, 226, 216, 207, 198, 189, 179, 170, 161], [-2, -2, -2, -2, -2, -2, -2, -2, 606, 572, 537, 502, 467, 432, 397, 362, 327, 293, 258, 223, 188, 153, 118, 83, 48, 14, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494452555517417669/20.jpg", "run_time": 0.353 }
59 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 596, 587, 579, 571, 562, 554, 545, 537, 529, 520, 512, 503, 495, 487, 478, 470, 461, 453, 445, 436, 428, 420, 411, 403, 394, 386, 378, 369, 361, 352, 344, 336, 327, 319, 310, 302, 294, 285, 277, 268, 260, 252, 243, 235, 227, 218, 210, 201], [-2, -2, -2, -2, -2, -2, -2, -2, 671, 683, 696, 709, 722, 735, 747, 760, 773, 786, 799, 811, 824, 837, 850, 863, 875, 888, 901, 914, 927, 939, 952, 965, 978, 991, 1003, 1016, 1029, 1042, 1055, 1067, 1080, 1093, 1106, 1119, 1131, 1144, 1157, 1170, 1182, 1195, 1208, 1221, 1234, 1246, 1259, 1272], [-2, -2, -2, -2, -2, -2, -2, -2, 702, 735, 768, 801, 833, 866, 899, 931, 964, 997, 1030, 1062, 1095, 1128, 1160, 1193, 1226, 1258, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 675, 642, 610, 577, 544, 511, 479, 446, 413, 381, 348, 315, 282, 250, 217, 184, 152, 119, 86, 54, 21, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494452587503447885/20.jpg", "run_time": 0.4 }
60 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 630, 621, 613, 604, 596, 588, 579, 571, 563, 554, 546, 537, 529, 521, 512, 504, 495, 487, 479, 470, 462, 453, 445, 437, 428, 420, 411, 403, 395, 386, 378, 370, 361, 353, 344, 336, 328, 319, 311, 302, 294, 286, 277, 269, 260, 252, 244, 235], [-2, -2, -2, -2, -2, -2, -2, -2, 636, 650, 664, 677, 691, 705, 719, 732, 746, 760, 774, 787, 801, 815, 829, 843, 856, 870, 884, 898, 911, 925, 939, 953, 966, 980, 994, 1008, 1021, 1035, 1049, 1063, 1077, 1090, 1104, 1118, 1132, 1145, 1159, 1173, 1187, 1200, 1214, 1228, 1242, 1255, 1269, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 623, 592, 562, 531, 500, 469, 439, 408, 377, 346, 315, 285, 254, 223, 192, 162, 131, 100, 69, 38, 8, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494452605495775275/20.jpg", "run_time": 0.38 }
61 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 607, 620, 632, 644, 657, 669, 681, 694, 706, 718, 731, 743, 756, 768, 780, 793, 805, 817, 830, 842, 854, 867, 879, 891, 904, 916, 928, 941, 953, 965, 978, 990, 1002, 1015, 1027, 1040, 1052, 1064, 1077, 1089, 1101, 1114, 1126, 1138, 1151, 1163, 1175, 1188], [-2, -2, -2, -2, -2, -2, -2, -2, 642, 630, 618, 606, 595, 583, 571, 559, 547, 535, 523, 511, 499, 487, 475, 463, 452, 440, 428, 416, 404, 392, 380, 368, 356, 344, 332, 320, 309, 297, 285, 273, 261, 249, 237, 225, 213, 201, 189, 177, 166, 154, 142, 130, 118, 106, 94, 82], [-2, -2, -2, -2, -2, -2, -2, -2, 602, 639, 676, 714, 751, 788, 825, 863, 900, 937, 975, 1012, 1049, 1087, 1124, 1161, 1199, 1236, 1273, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 644, 611, 579, 546, 513, 481, 448, 415, 383, 350, 317, 284, 252, 219, 186, 154, 121, 88, 55, 23, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494452631484224411/20.jpg", "run_time": 0.375 }
62 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 609, 647, 684, 721, 759, 796, 833, 871, 908, 945, 982, 1020, 1057, 1094, 1132, 1169, 1206, 1244, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 618, 609, 600, 591, 582, 573, 564, 555, 546, 537, 528, 519, 510, 501, 492, 483, 474, 465, 456, 447, 438, 429, 420, 411, 402, 393, 384, 375, 366, 357, 348, 339, 330, 321, 312, 303, 294, 285, 276, 267, 258, 249, 240, 231, 222, 213, 204, 195], [-2, -2, -2, -2, -2, -2, -2, -2, 632, 645, 659, 672, 685, 698, 712, 725, 738, 751, 765, 778, 791, 805, 818, 831, 844, 858, 871, 884, 897, 911, 924, 937, 951, 964, 977, 990, 1004, 1017, 1030, 1043, 1057, 1070, 1083, 1097, 1110, 1123, 1136, 1150, 1163, 1176, 1189, 1203, 1216, 1229, 1242, 1256]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494452667468632483/20.jpg", "run_time": 0.319 }
63 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 600, 591, 583, 574, 566, 558, 549, 541, 533, 524, 516, 507, 499, 491, 482, 474, 465, 457, 449, 440, 432, 423, 415, 407, 398, 390, 381, 373, 365, 356, 348, 340, 331, 323, 314, 306, 298, 289, 281, 272, 264, 256, 247, 239, 230, 222, 214, 205], [-2, -2, -2, -2, -2, -2, -2, -2, 620, 634, 647, 660, 673, 687, 700, 713, 727, 740, 753, 766, 780, 793, 806, 819, 833, 846, 859, 873, 886, 899, 912, 926, 939, 952, 965, 979, 992, 1005, 1019, 1032, 1045, 1058, 1072, 1085, 1098, 1111, 1125, 1138, 1151, 1164, 1178, 1191, 1204, 1218, 1231, 1244], [-2, -2, -2, -2, -2, -2, -2, -2, 625, 662, 699, 737, 774, 811, 849, 886, 923, 961, 998, 1035, 1073, 1110, 1147, 1185, 1222, 1259, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494452689458738349/20.jpg", "run_time": 0.364 }
64 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 613, 603, 594, 584, 574, 565, 555, 545, 536, 526, 516, 507, 497, 487, 478, 468, 458, 449, 439, 429, 420, 410, 401, 391, 381, 372, 362, 352, 343, 333, 323, 314, 304, 294, 285, 275, 265, 256, 246, 236, 227, 217, 207, 198, 188, 178, 169, 159], [-2, -2, -2, -2, -2, -2, -2, -2, 640, 678, 715, 752, 789, 827, 864, 901, 939, 976, 1013, 1051, 1088, 1125, 1163, 1200, 1237, 1275, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 614, 626, 638, 650, 661, 673, 685, 697, 709, 721, 733, 745, 757, 769, 781, 793, 804, 816, 828, 840, 852, 864, 876, 888, 900, 912, 924, 936, 947, 959, 971, 983, 995, 1007, 1019, 1031, 1043, 1055, 1067, 1079, 1090, 1102, 1114, 1126, 1138, 1150, 1162, 1174], [-2, -2, -2, -2, -2, -2, -2, -2, 607, 576, 546, 515, 484, 453, 422, 392, 361, 330, 299, 269, 238, 207, 176, 145, 115, 84, 53, 22, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494452809905908227/20.jpg", "run_time": 0.397 }
65 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 649, 661, 672, 684, 695, 707, 718, 730, 741, 753, 764, 776, 787, 799, 810, 822, 833, 845, 856, 868, 879, 891, 902, 914, 925, 937, 948, 960, 971, 983, 994, 1006, 1017, 1029, 1040, 1052, 1063, 1075, 1086, 1098, 1109, 1121, 1132, 1144, 1155, 1167, 1178, 1190], [-2, -2, -2, -2, -2, -2, -2, -2, 634, 623, 612, 601, 590, 579, 567, 556, 545, 534, 523, 512, 501, 490, 479, 468, 456, 445, 434, 423, 412, 401, 390, 379, 368, 356, 345, 334, 323, 312, 301, 290, 279, 268, 257, 245, 234, 223, 212, 201, 190, 179, 168, 157, 145, 134, 123, 112], [-2, -2, -2, -2, -2, -2, -2, -2, 571, 608, 645, 683, 720, 757, 795, 832, 869, 907, 944, 981, 1018, 1056, 1093, 1130, 1168, 1205, 1242, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 658, 625, 592, 560, 527, 494, 462, 429, 396, 363, 331, 298, 265, 233, 200, 167, 135, 102, 69, 36, 4, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494452825898945556/20.jpg", "run_time": 0.368 }
66 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 622, 612, 602, 592, 582, 572, 562, 552, 542, 532, 522, 512, 502, 492, 482, 472, 462, 452, 442, 432, 422, 412, 402, 392, 382, 372, 362, 352, 342, 332, 322, 312, 302, 292, 282, 272, 262, 252, 242, 232, 222, 212, 202, 192, 182, 172, 162, 152], [-2, -2, -2, -2, -2, -2, -2, -2, 580, 551, 522, 493, 464, 435, 406, 377, 348, 319, 290, 261, 232, 203, 174, 145, 116, 87, 57, 28, 0, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 657, 668, 680, 691, 703, 714, 726, 737, 749, 760, 772, 783, 795, 806, 818, 829, 841, 852, 864, 875, 887, 898, 910, 921, 933, 944, 956, 967, 979, 990, 1002, 1013, 1025, 1036, 1048, 1059, 1071, 1082, 1094, 1105, 1117, 1128, 1140, 1151, 1163, 1174, 1186, 1197], [-2, -2, -2, -2, -2, -2, -2, -2, 712, 743, 774, 805, 835, 866, 897, 928, 958, 989, 1020, 1051, 1082, 1112, 1143, 1174, 1205, 1235, 1266, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494452921856946234/20.jpg", "run_time": 0.376 }
67 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 601, 591, 581, 571, 561, 551, 541, 531, 521, 511, 501, 491, 481, 471, 461, 451, 441, 431, 421, 411, 401, 391, 381, 371, 361, 351, 341, 331, 321, 311, 301, 291, 281, 271, 261, 251, 241, 231, 221, 211, 201, 191, 181, 171, 161, 151, 141, 131], [-2, -2, -2, -2, -2, -2, -2, -2, 685, 696, 706, 717, 728, 739, 749, 760, 771, 782, 792, 803, 814, 824, 835, 846, 857, 867, 878, 889, 899, 910, 921, 932, 942, 953, 964, 975, 985, 996, 1007, 1017, 1028, 1039, 1050, 1060, 1071, 1082, 1093, 1103, 1114, 1125, 1135, 1146, 1157, 1168, 1178, 1189], [-2, -2, -2, -2, -2, -2, -2, -2, 601, 570, 539, 508, 477, 447, 416, 385, 354, 324, 293, 262, 231, 200, 170, 139, 108, 77, 47, 16, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 864, 902, 939, 976, 1014, 1051, 1088, 1126, 1163, 1200, 1237, 1275, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494452929853344267/20.jpg", "run_time": 0.375 }
68 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 637, 649, 661, 673, 685, 697, 709, 721, 732, 744, 756, 768, 780, 792, 804, 816, 828, 840, 852, 864, 875, 887, 899, 911, 923, 935, 947, 959, 971, 983, 995, 1007, 1018, 1030, 1042, 1054, 1066, 1078, 1090, 1102, 1114, 1126, 1138, 1150, 1161, 1173, 1185, 1197], [-2, -2, -2, -2, -2, -2, -2, -2, 580, 552, 525, 497, 470, 442, 415, 387, 360, 333, 305, 278, 250, 223, 195, 168, 140, 113, 85, 58, 30, 3, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 628, 618, 608, 598, 588, 578, 568, 558, 548, 538, 528, 518, 508, 498, 488, 478, 468, 458, 448, 438, 428, 418, 408, 398, 388, 378, 368, 358, 348, 338, 328, 318, 308, 298, 288, 278, 268, 258, 248, 238, 228, 218, 208, 198, 188, 178, 168, 158], [-2, -2, -2, -2, -2, -2, -2, -2, 685, 718, 751, 783, 816, 849, 882, 914, 947, 980, 1012, 1045, 1078, 1111, 1143, 1176, 1209, 1241, 1274, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494452957841111858/20.jpg", "run_time": 0.41 }
69 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 625, 615, 605, 595, 585, 575, 565, 555, 545, 535, 525, 515, 505, 495, 485, 475, 465, 455, 445, 435, 425, 415, 405, 395, 385, 375, 365, 355, 345, 335, 325, 315, 305, 295, 285, 275, 265, 255, 245, 235, 225, 215, 205, 195, 185, 175, 165, 155], [-2, -2, -2, -2, -2, -2, -2, -2, 661, 673, 684, 696, 707, 719, 730, 742, 753, 765, 776, 788, 799, 811, 822, 834, 845, 857, 868, 880, 891, 903, 914, 926, 937, 949, 960, 972, 983, 995, 1006, 1018, 1029, 1041, 1052, 1064, 1075, 1087, 1098, 1110, 1121, 1133, 1144, 1156, 1167, 1179, 1190, 1202], [-2, -2, -2, -2, -2, -2, -2, -2, 574, 545, 516, 487, 458, 429, 400, 371, 342, 313, 284, 255, 226, 197, 168, 138, 109, 80, 51, 22, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 673, 708, 743, 778, 813, 848, 882, 917, 952, 987, 1022, 1057, 1092, 1127, 1161, 1196, 1231, 1266, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494452981830568996/20.jpg", "run_time": 0.396 }
70 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 615, 606, 597, 587, 578, 569, 559, 550, 541, 531, 522, 513, 503, 494, 485, 475, 466, 457, 447, 438, 429, 419, 410, 401, 391, 382, 373, 363, 354, 345, 335, 326, 317, 308, 298, 289, 280, 270, 261, 252, 242, 233, 224, 214, 205, 196, 186, 177], [-2, -2, -2, -2, -2, -2, -2, -2, 667, 679, 691, 702, 714, 726, 738, 750, 762, 774, 786, 798, 810, 822, 834, 845, 857, 869, 881, 893, 905, 917, 929, 941, 953, 965, 977, 988, 1000, 1012, 1024, 1036, 1048, 1060, 1072, 1084, 1096, 1108, 1120, 1131, 1143, 1155, 1167, 1179, 1191, 1203, 1215, 1227], [-2, -2, -2, -2, -2, -2, -2, -2, 648, 685, 723, 760, 797, 835, 872, 909, 946, 984, 1021, 1058, 1096, 1133, 1170, 1208, 1245, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 584, 554, 523, 492, 461, 431, 400, 369, 338, 307, 277, 246, 215, 184, 154, 123, 92, 61, 30, 0, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494452987828017539/20.jpg", "run_time": 0.426 }
71 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 600, 615, 629, 643, 657, 672, 686, 700, 715, 729, 743, 757, 772, 786, 800, 815, 829, 843, 857, 872, 886, 900, 914, 929, 943, 957, 972, 986, 1000, 1014, 1029, 1043, 1057, 1072, 1086, 1100, 1114, 1129, 1143, 1157, 1172, 1186, 1200, 1214, 1229, 1243, 1257, 1272]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453131765683584/20.jpg", "run_time": 0.322 }
72 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 599, 613, 627, 641, 656, 670, 684, 699, 713, 727, 741, 756, 770, 784, 798, 813, 827, 841, 856, 870, 884, 898, 913, 927, 941, 956, 970, 984, 998, 1013, 1027, 1041, 1056, 1070, 1084, 1098, 1113, 1127, 1141, 1156, 1170, 1184, 1198, 1213, 1227, 1241, 1255, 1270]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453137763384771/20.jpg", "run_time": 0.3 }
73 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 667, 705, 742, 779, 817, 854, 891, 928, 966, 1003, 1040, 1078, 1115, 1152, 1190, 1227, 1264, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 639, 630, 620, 610, 601, 591, 581, 572, 562, 552, 543, 533, 523, 514, 504, 495, 485, 475, 466, 456, 446, 437, 427, 417, 408, 398, 388, 379, 369, 359, 350, 340, 330, 321, 311, 301, 292, 282, 272, 263, 253, 243, 234, 224, 214, 205, 195, 185], [-2, -2, -2, -2, -2, -2, -2, -2, 668, 680, 692, 704, 716, 728, 740, 752, 764, 775, 787, 799, 811, 823, 835, 847, 859, 871, 883, 895, 907, 918, 930, 942, 954, 966, 978, 990, 1002, 1014, 1026, 1038, 1050, 1062, 1073, 1085, 1097, 1109, 1121, 1133, 1145, 1157, 1169, 1181, 1193, 1205, 1216, 1228], [-2, -2, -2, -2, -2, -2, -2, -2, 651, 618, 586, 553, 520, 487, 455, 422, 389, 357, 324, 291, 259, 226, 193, 160, 128, 95, 62, 30, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453157754360152/20.jpg", "run_time": 0.374 }
74 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 656, 693, 730, 768, 805, 842, 880, 917, 954, 992, 1029, 1066, 1103, 1141, 1178, 1215, 1253, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 612, 626, 640, 654, 667, 681, 695, 709, 722, 736, 750, 764, 777, 791, 805, 819, 832, 846, 860, 874, 888, 901, 915, 929, 943, 956, 970, 984, 998, 1011, 1025, 1039, 1053, 1066, 1080, 1094, 1108, 1122, 1135, 1149, 1163, 1177, 1190, 1204, 1218, 1232, 1245, 1259], [-2, -2, -2, -2, -2, -2, -2, -2, 627, 618, 610, 601, 592, 583, 575, 566, 557, 549, 540, 531, 523, 514, 505, 497, 488, 479, 470, 462, 453, 444, 436, 427, 418, 410, 401, 392, 384, 375, 366, 357, 349, 340, 331, 323, 314, 305, 297, 288, 279, 271, 262, 253, 244, 236, 227, 218], [-2, -2, -2, -2, -2, -2, -2, -2, 626, 596, 565, 534, 503, 473, 442, 411, 380, 349, 319, 288, 257, 226, 196, 165, 134, 103, 72, 42, 11, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453173747344679/20.jpg", "run_time": 0.391 }
75 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 630, 618, 606, 594, 582, 570, 558, 546, 534, 523, 511, 499, 487, 475, 463, 451, 439, 427, 415, 403, 391, 380, 368, 356, 344, 332, 320, 308, 296, 284, 272, 260, 248, 237, 225, 213, 201, 189, 177, 165, 153, 141, 129, 117, 105, 94, 82, 70], [-2, -2, -2, -2, -2, -2, -2, -2, 644, 654, 664, 674, 684, 694, 704, 714, 724, 734, 744, 754, 764, 774, 784, 794, 804, 814, 824, 834, 844, 854, 864, 874, 884, 894, 904, 914, 924, 934, 944, 954, 964, 974, 984, 994, 1004, 1014, 1024, 1034, 1044, 1054, 1064, 1074, 1084, 1094, 1104, 1114], [-2, -2, -2, -2, -2, -2, -2, -2, 635, 601, 566, 531, 496, 461, 426, 391, 356, 322, 287, 252, 217, 182, 147, 112, 77, 43, 8, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 733, 762, 791, 820, 850, 879, 908, 937, 966, 995, 1024, 1053, 1082, 1111, 1140, 1169, 1198, 1227, 1256, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453227726434936/20.jpg", "run_time": 0.363 }
76 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 566, 540, 514, 488, 462, 436, 409, 383, 357, 331, 305, 279, 253, 227, 201, 175, 149, 123, 97, 71, 45, 19, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 661, 694, 727, 759, 792, 825, 858, 890, 923, 956, 988, 1021, 1054, 1087, 1119, 1152, 1185, 1217, 1250, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 656, 669, 682, 694, 707, 720, 733, 745, 758, 771, 784, 797, 809, 822, 835, 848, 861, 873, 886, 899, 912, 925, 937, 950, 963, 976, 989, 1001, 1014, 1027, 1040, 1053, 1065, 1078, 1091, 1104, 1117, 1129, 1142, 1155, 1168, 1181, 1193, 1206, 1219, 1232, 1245, 1257]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453233720967019/20.jpg", "run_time": 0.296 }
77 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 610, 600, 591, 582, 572, 563, 554, 544, 535, 526, 517, 507, 498, 489, 479, 470, 461, 451, 442, 433, 423, 414, 405, 395, 386, 377, 367, 358, 349, 339, 330, 321, 311, 302, 293, 283, 274, 265, 255, 246, 237, 227, 218, 209, 199, 190, 181, 171], [-2, -2, -2, -2, -2, -2, -2, -2, 625, 638, 651, 663, 676, 689, 702, 715, 727, 740, 753, 766, 779, 791, 804, 817, 830, 843, 855, 868, 881, 894, 907, 919, 932, 945, 958, 971, 983, 996, 1009, 1022, 1035, 1047, 1060, 1073, 1086, 1099, 1111, 1124, 1137, 1150, 1163, 1175, 1188, 1201, 1214, 1227], [-2, -2, -2, -2, -2, -2, -2, -2, 602, 573, 544, 515, 486, 457, 428, 398, 369, 340, 311, 282, 253, 224, 195, 166, 137, 108, 79, 50, 21, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 598, 635, 672, 710, 747, 784, 822, 859, 896, 934, 971, 1008, 1046, 1083, 1120, 1157, 1195, 1232, 1269, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453287696553635/20.jpg", "run_time": 0.376 }
78 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 614, 607, 600, 593, 586, 579, 572, 565, 558, 551, 544, 537, 530, 523, 516, 509, 502, 495, 488, 481, 474, 467, 460, 453, 446, 439, 432, 425, 418, 411, 404, 397, 390, 383, 376, 369, 362, 355, 348, 341, 334, 327, 320, 313, 306, 299, 292, 285], [-2, -2, -2, -2, -2, -2, -2, -2, 747, 780, 812, 845, 878, 910, 943, 976, 1009, 1041, 1074, 1107, 1139, 1172, 1205, 1238, 1270, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 703, 716, 729, 741, 754, 767, 780, 793, 805, 818, 831, 844, 857, 869, 882, 895, 908, 921, 933, 946, 959, 972, 985, 997, 1010, 1023, 1036, 1049, 1061, 1074, 1087, 1100, 1113, 1125, 1138, 1151, 1164, 1177, 1189, 1202, 1215, 1228, 1241, 1253, 1266, 1279, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 553, 526, 499, 471, 444, 416, 389, 361, 334, 306, 279, 251, 224, 196, 169, 141, 114, 86, 59, 31, 4, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453307691066696/20.jpg", "run_time": 0.378 }
79 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 602, 593, 584, 575, 566, 557, 548, 539, 530, 521, 512, 503, 493, 484, 475, 466, 457, 448, 439, 430, 421, 412, 403, 394, 385, 376, 367, 358, 349, 340, 331, 322, 313, 304, 295, 286, 277, 268, 259, 250, 241, 232, 223, 214, 205, 196, 187, 178], [-2, -2, -2, -2, -2, -2, -2, -2, 565, 538, 510, 483, 455, 428, 400, 373, 345, 318, 290, 263, 235, 208, 181, 153, 126, 98, 71, 43, 16, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 609, 622, 635, 649, 662, 675, 688, 702, 715, 728, 741, 755, 768, 781, 795, 808, 821, 834, 848, 861, 874, 887, 901, 914, 927, 941, 954, 967, 980, 994, 1007, 1020, 1033, 1047, 1060, 1073, 1087, 1100, 1113, 1126, 1140, 1153, 1166, 1179, 1193, 1206, 1219, 1232], [-2, -2, -2, -2, -2, -2, -2, -2, 598, 635, 672, 710, 747, 784, 822, 859, 896, 934, 971, 1008, 1046, 1083, 1120, 1157, 1195, 1232, 1269, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453313685150979/20.jpg", "run_time": 0.443 }
80 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 600, 567, 534, 502, 469, 436, 403, 371, 338, 305, 273, 240, 207, 175, 142, 109, 76, 44, 11, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 647, 657, 667, 677, 687, 697, 707, 717, 727, 737, 747, 757, 767, 777, 787, 797, 807, 817, 827, 837, 847, 857, 867, 877, 887, 897, 907, 917, 927, 937, 947, 957, 967, 977, 987, 997, 1007, 1017, 1027, 1037, 1047, 1057, 1067, 1077, 1087, 1097, 1107, 1117], [-2, -2, -2, -2, -2, -2, -2, -2, 756, 793, 831, 868, 905, 943, 980, 1017, 1055, 1092, 1129, 1167, 1204, 1241, 1279, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 654, 641, 628, 615, 603, 590, 577, 564, 551, 539, 526, 513, 500, 487, 475, 462, 449, 436, 423, 411, 398, 385, 372, 359, 347, 334, 321, 308, 295, 283, 270, 257, 244, 232, 219, 206, 193, 180, 168, 155, 142, 129, 116, 104, 91, 78, 65, 52]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453341673586257/20.jpg", "run_time": 0.359 }
81 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 603, 592, 581, 569, 558, 547, 536, 525, 514, 503, 492, 481, 469, 458, 447, 436, 425, 414, 403, 392, 381, 370, 358, 347, 336, 325, 314, 303, 292, 281, 270, 258, 247, 236, 225, 214, 203, 192, 181, 170, 158, 147, 136, 125, 114, 103, 92, 81], [-2, -2, -2, -2, -2, -2, -2, -2, 537, 508, 479, 450, 421, 392, 363, 334, 305, 276, 247, 218, 189, 160, 131, 102, 73, 44, 14, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 637, 647, 658, 669, 680, 690, 701, 712, 722, 733, 744, 755, 765, 776, 787, 797, 808, 819, 830, 840, 851, 862, 873, 883, 894, 905, 915, 926, 937, 948, 958, 969, 980, 991, 1001, 1012, 1023, 1033, 1044, 1055, 1066, 1076, 1087, 1098, 1108, 1119, 1130, 1141], [-2, -2, -2, -2, -2, -2, -2, -2, 670, 704, 739, 774, 809, 844, 879, 914, 949, 983, 1018, 1053, 1088, 1123, 1158, 1193, 1228, 1262, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453401646638002/20.jpg", "run_time": 0.399 }
82 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 526, 516, 506, 496, 486, 476, 466, 456, 446, 436, 426, 416, 406, 396, 386, 376, 366, 356, 346, 336, 326, 316, 306, 296, 286, 276, 266, 256, 246, 236, 226, 216, 206, 196, 186, 176, 166, 156, 146, 136, 126, 116, 106, 96, 86, 76, 66, 56], [-2, -2, -2, -2, -2, -2, -2, -2, 609, 647, 684, 721, 759, 796, 833, 871, 908, 945, 982, 1020, 1057, 1094, 1132, 1169, 1206, 1244, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 651, 661, 671, 681, 691, 701, 711, 721, 731, 741, 751, 761, 771, 781, 791, 801, 811, 821, 831, 841, 851, 861, 871, 881, 891, 901, 911, 921, 931, 941, 951, 961, 971, 981, 991, 1001, 1011, 1021, 1031, 1041, 1051, 1061, 1071, 1081, 1091, 1101, 1111, 1121], [-2, -2, -2, -2, -2, -2, -2, -2, 528, 499, 470, 441, 412, 383, 354, 325, 296, 267, 238, 209, 180, 150, 121, 92, 63, 34, 5, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453409643085329/20.jpg", "run_time": 0.437 }
83 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 649, 660, 671, 682, 693, 704, 715, 726, 737, 749, 760, 771, 782, 793, 804, 815, 826, 837, 849, 860, 871, 882, 893, 904, 915, 926, 937, 948, 960, 971, 982, 993, 1004, 1015, 1026, 1037, 1048, 1060, 1071, 1082, 1093, 1104, 1115, 1126, 1137, 1148, 1160, 1171], [-2, -2, -2, -2, -2, -2, -2, -2, 615, 605, 595, 585, 575, 565, 555, 545, 535, 525, 515, 505, 495, 485, 475, 465, 455, 445, 435, 425, 415, 405, 395, 385, 375, 365, 355, 345, 335, 325, 315, 305, 295, 285, 275, 265, 255, 245, 235, 225, 215, 205, 195, 185, 175, 165, 155, 145], [-2, -2, -2, -2, -2, -2, -2, -2, 571, 541, 510, 479, 448, 418, 387, 356, 325, 294, 264, 233, 202, 171, 141, 110, 79, 48, 17, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 730, 762, 795, 828, 861, 893, 926, 959, 991, 1024, 1057, 1090, 1122, 1155, 1188, 1220, 1253, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453427635226083/20.jpg", "run_time": 0.421 }
84 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 783, 820, 858, 895, 932, 970, 1007, 1044, 1082, 1119, 1156, 1194, 1231, 1268, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 571, 544, 516, 489, 461, 434, 406, 379, 351, 324, 296, 269, 241, 214, 186, 159, 131, 104, 76, 49, 22, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 606, 596, 587, 577, 567, 558, 548, 538, 529, 519, 509, 500, 490, 480, 471, 461, 451, 442, 432, 423, 413, 403, 394, 384, 374, 365, 355, 345, 336, 326, 316, 307, 297, 287, 278, 268, 258, 249, 239, 229, 220, 210, 200, 191, 181, 171, 162, 152], [-2, -2, -2, -2, -2, -2, -2, -2, 614, 626, 638, 651, 663, 675, 688, 700, 712, 725, 737, 750, 762, 774, 787, 799, 811, 824, 836, 848, 861, 873, 885, 898, 910, 922, 935, 947, 959, 972, 984, 996, 1009, 1021, 1034, 1046, 1058, 1071, 1083, 1095, 1108, 1120, 1132, 1145, 1157, 1169, 1182, 1194]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453467617697485/20.jpg", "run_time": 0.41 }
85 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 620, 610, 601, 591, 581, 572, 562, 552, 543, 533, 523, 514, 504, 494, 485, 475, 465, 456, 446, 436, 427, 417, 407, 398, 388, 378, 369, 359, 350, 340, 330, 321, 311, 301, 292, 282, 272, 263, 253, 243, 234, 224, 214, 205, 195, 185, 176, 166], [-2, -2, -2, -2, -2, -2, -2, -2, 530, 503, 477, 451, 425, 399, 373, 347, 321, 295, 269, 243, 217, 191, 165, 139, 113, 87, 61, 35, 8, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 640, 652, 664, 676, 688, 700, 712, 724, 736, 747, 759, 771, 783, 795, 807, 819, 831, 843, 855, 867, 879, 890, 902, 914, 926, 938, 950, 962, 974, 986, 998, 1010, 1022, 1034, 1045, 1057, 1069, 1081, 1093, 1105, 1117, 1129, 1141, 1153, 1165, 1177, 1188, 1200], [-2, -2, -2, -2, -2, -2, -2, -2, 617, 654, 692, 729, 766, 804, 841, 878, 916, 953, 990, 1028, 1065, 1102, 1139, 1177, 1214, 1251, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453481611650216/20.jpg", "run_time": 0.416 }
86 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 551, 526, 501, 476, 452, 427, 402, 377, 353, 328, 303, 278, 254, 229, 204, 179, 155, 130, 105, 80, 56, 31, 6, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 639, 630, 622, 614, 605, 597, 588, 580, 572, 563, 555, 546, 538, 530, 521, 513, 505, 496, 488, 479, 471, 463, 454, 446, 437, 429, 421, 412, 404, 395, 387, 379, 370, 362, 354, 345, 337, 328, 320, 312, 303, 295, 286, 278, 270, 261, 253, 244], [-2, -2, -2, -2, -2, -2, -2, -2, 709, 742, 775, 807, 840, 873, 906, 938, 971, 1004, 1036, 1069, 1102, 1134, 1167, 1200, 1233, 1265, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 688, 701, 714, 727, 740, 752, 765, 778, 791, 804, 816, 829, 842, 855, 868, 880, 893, 906, 919, 932, 944, 957, 970, 983, 996, 1008, 1021, 1034, 1047, 1060, 1072, 1085, 1098, 1111, 1124, 1136, 1149, 1162, 1175, 1188, 1200, 1213, 1226, 1239, 1252, 1264, 1277, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453511598429183/20.jpg", "run_time": 0.407 }
87 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 611, 603, 595, 586, 578, 569, 561, 553, 544, 536, 527, 519, 511, 502, 494, 486, 477, 469, 460, 452, 444, 435, 427, 418, 410, 402, 393, 385, 376, 368, 360, 351, 343, 334, 326, 318, 309, 301, 293, 284, 276, 267, 259, 251, 242, 234, 225, 217], [-2, -2, -2, -2, -2, -2, -2, -2, 1250, 1228, 1205, 1183, 1160, 1138, 1116, 1093, 1071, 1048, 1026, 1003, 981, 958, 936, 913, 891, 868, 846, 824, 801, 779, 756, 734, 711, 689, 666, 644, 621, 599, 576, 554, 532, 509, 487, 464, 442, 419, 397, 374, 352, 329, 307, 285, 262, 240, 217, 195], [-2, -2, -2, -2, -2, -2, -2, -2, 650, 664, 677, 690, 703, 717, 730, 743, 756, 770, 783, 796, 810, 823, 836, 849, 863, 876, 889, 902, 916, 929, 942, 956, 969, 982, 995, 1009, 1022, 1035, 1048, 1062, 1075, 1088, 1102, 1115, 1128, 1141, 1155, 1168, 1181, 1194, 1208, 1221, 1234, 1247, 1261, 1274], [-2, -2, -2, -2, -2, -2, -2, -2, 648, 685, 723, 760, 797, 835, 872, 909, 946, 984, 1021, 1058, 1096, 1133, 1170, 1208, 1245, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453553580016137/20.jpg", "run_time": 0.412 }
88 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 530, 503, 477, 451, 425, 399, 373, 347, 321, 295, 269, 243, 217, 191, 165, 139, 113, 87, 61, 35, 8, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 779, 817, 854, 891, 929, 966, 1003, 1041, 1078, 1115, 1152, 1190, 1227, 1264, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 616, 606, 596, 587, 577, 567, 558, 548, 538, 529, 519, 510, 500, 490, 481, 471, 461, 452, 442, 432, 423, 413, 403, 394, 384, 374, 365, 355, 345, 336, 326, 316, 307, 297, 287, 278, 268, 258, 249, 239, 229, 220, 210, 200, 191, 181, 172, 162], [-2, -2, -2, -2, -2, -2, -2, -2, 643, 655, 667, 679, 691, 703, 715, 727, 739, 751, 763, 774, 786, 798, 810, 822, 834, 846, 858, 870, 882, 894, 906, 917, 929, 941, 953, 965, 977, 989, 1001, 1013, 1025, 1037, 1049, 1060, 1072, 1084, 1096, 1108, 1120, 1132, 1144, 1156, 1168, 1180, 1192, 1203]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453561576544114/20.jpg", "run_time": 0.437 }
89 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 583, 575, 566, 557, 548, 540, 531, 522, 514, 505, 496, 488, 479, 470, 462, 453, 444, 435, 427, 418, 409, 401, 392, 383, 375, 366, 357, 349, 340, 331, 322, 314, 305, 296, 288, 279, 270, 262, 253, 244, 236, 227, 218, 209, 201, 192, 183, 175], [-2, -2, -2, -2, -2, -2, -2, -2, 600, 614, 628, 642, 655, 669, 683, 697, 710, 724, 738, 752, 766, 779, 793, 807, 821, 834, 848, 862, 876, 889, 903, 917, 931, 944, 958, 972, 986, 999, 1013, 1027, 1041, 1055, 1068, 1082, 1096, 1110, 1123, 1137, 1151, 1165, 1178, 1192, 1206, 1220, 1233, 1247], [-2, -2, -2, -2, -2, -2, -2, -2, 656, 693, 730, 768, 805, 842, 880, 917, 954, 992, 1029, 1066, 1103, 1141, 1178, 1215, 1253, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 624, 601, 577, 553, 530, 506, 483, 459, 436, 412, 389, 365, 341, 318, 294, 271, 247, 224, 200, 177, 153, 129, 106, 82, 59, 35, 12, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453583566932856/20.jpg", "run_time": 0.41 }
90 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 636, 628, 619, 611, 603, 594, 586, 577, 569, 561, 552, 544, 535, 527, 519, 510, 502, 494, 485, 477, 468, 460, 452, 443, 435, 426, 418, 410, 401, 393, 384, 376, 368, 359, 351, 343, 334, 326, 317, 309, 301, 292, 284, 275, 267, 259, 250, 242], [-2, -2, -2, -2, -2, -2, -2, -2, 515, 496, 478, 459, 440, 421, 402, 384, 365, 346, 327, 308, 289, 271, 252, 233, 214, 195, 177, 158, 139, 120, 101, 83, 64, 45, 26, 7, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 636, 674, 711, 748, 786, 823, 860, 898, 935, 972, 1010, 1047, 1084, 1121, 1159, 1196, 1233, 1271, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 648, 662, 676, 689, 703, 717, 731, 744, 758, 772, 786, 799, 813, 827, 841, 854, 868, 882, 896, 909, 923, 937, 951, 965, 978, 992, 1006, 1020, 1033, 1047, 1061, 1075, 1088, 1102, 1116, 1130, 1143, 1157, 1171, 1185, 1199, 1212, 1226, 1240, 1254, 1267, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453589564231638/20.jpg", "run_time": 0.423 }
91 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 616, 607, 598, 589, 580, 571, 562, 553, 544, 535, 526, 517, 508, 499, 490, 481, 472, 463, 454, 445, 436, 427, 418, 409, 400, 391, 382, 373, 364, 355, 346, 337, 328, 319, 310, 301, 292, 283, 274, 265, 256, 247, 238, 229, 220, 211, 202, 193], [-2, -2, -2, -2, -2, -2, -2, -2, 583, 555, 528, 500, 473, 445, 418, 390, 363, 335, 308, 280, 253, 226, 198, 171, 143, 116, 88, 61, 33, 6, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 640, 654, 667, 680, 693, 707, 720, 733, 747, 760, 773, 786, 800, 813, 826, 839, 853, 866, 879, 892, 906, 919, 932, 946, 959, 972, 985, 999, 1012, 1025, 1038, 1052, 1065, 1078, 1092, 1105, 1118, 1131, 1145, 1158, 1171, 1184, 1198, 1211, 1224, 1238, 1251, 1264], [-2, -2, -2, -2, -2, -2, -2, -2, 663, 701, 738, 775, 813, 850, 887, 925, 962, 999, 1037, 1074, 1111, 1149, 1186, 1223, 1260, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453607556426762/20.jpg", "run_time": 0.406 }
92 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 605, 592, 578, 565, 552, 539, 525, 512, 499, 485, 472, 459, 446, 432, 419, 406, 393, 379, 366, 353, 339, 326, 313, 300, 286, 273, 260, 247, 233, 220, 207, 193, 180, 167, 154, 140, 127, 114, 101, 87, 74, 61, 48, 34, 21, 8, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 677, 683, 689, 695, 700, 706, 712, 718, 723, 729, 735, 741, 747, 752, 758, 764, 770, 775, 781, 787, 793, 799, 804, 810, 816, 822, 827, 833, 839, 845, 851, 856, 862, 868, 874, 879, 885, 891, 897, 902, 908, 914, 920, 926, 931, 937, 943, 949], [-2, -2, -2, -2, -2, -2, -2, -2, 667, 698, 729, 759, 790, 821, 852, 882, 913, 944, 975, 1005, 1036, 1067, 1098, 1129, 1159, 1190, 1221, 1252, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453621551554547/20.jpg", "run_time": 0.425 }
93 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 601, 594, 588, 581, 574, 567, 561, 554, 547, 540, 534, 527, 520, 513, 507, 500, 493, 486, 480, 473, 466, 460, 453, 446, 439, 433, 426, 419, 412, 406, 399, 392, 385, 379, 372, 365, 358, 352, 345, 338, 331, 325, 318, 311, 304, 298, 291, 284], [-2, -2, -2, -2, -2, -2, -2, -2, 575, 612, 649, 686, 724, 761, 798, 836, 873, 910, 948, 985, 1022, 1060, 1097, 1134, 1172, 1209, 1246, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 653, 667, 681, 694, 708, 722, 736, 749, 763, 777, 791, 804, 818, 832, 846, 860, 873, 887, 901, 915, 928, 942, 956, 970, 983, 997, 1011, 1025, 1038, 1052, 1066, 1080, 1094, 1107, 1121, 1135, 1149, 1162, 1176, 1190, 1204, 1217, 1231, 1245, 1259, 1272, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453643540652356/20.jpg", "run_time": 0.331 }
94 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 623, 614, 605, 596, 587, 578, 569, 560, 551, 542, 533, 524, 515, 506, 497, 488, 479, 470, 461, 452, 443, 434, 425, 416, 407, 398, 389, 380, 371, 362, 353, 344, 335, 326, 317, 308, 299, 290, 281, 272, 263, 254, 245, 236, 227, 218, 209, 200], [-2, -2, -2, -2, -2, -2, -2, -2, 615, 621, 628, 634, 640, 646, 653, 659, 665, 671, 678, 684, 690, 696, 703, 709, 715, 721, 728, 734, 740, 746, 753, 759, 765, 771, 778, 784, 790, 796, 803, 809, 815, 821, 828, 834, 840, 846, 853, 859, 865, 871, 878, 884, 890, 896, 903, 909], [-2, -2, -2, -2, -2, -2, -2, -2, 644, 657, 670, 683, 697, 710, 723, 737, 750, 763, 776, 790, 803, 816, 829, 843, 856, 869, 883, 896, 909, 922, 936, 949, 962, 975, 989, 1002, 1015, 1029, 1042, 1055, 1068, 1082, 1095, 1108, 1121, 1135, 1148, 1161, 1174, 1188, 1201, 1214, 1228, 1241, 1254, 1267], [-2, -2, -2, -2, -2, -2, -2, -2, 648, 683, 718, 752, 787, 822, 857, 892, 927, 962, 997, 1031, 1066, 1101, 1136, 1171, 1206, 1241, 1276, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453657537147475/20.jpg", "run_time": 0.39 }
95 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 632, 622, 612, 602, 592, 582, 572, 562, 552, 542, 532, 522, 512, 502, 492, 482, 472, 462, 452, 442, 432, 422, 412, 402, 392, 382, 372, 362, 352, 342, 332, 322, 312, 302, 292, 282, 272, 262, 252, 242, 232, 222, 212, 202, 192, 182, 172, 162], [-2, -2, -2, -2, -2, -2, -2, -2, 636, 674, 711, 748, 786, 823, 860, 898, 935, 972, 1010, 1047, 1084, 1121, 1159, 1196, 1233, 1271, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 656, 668, 680, 692, 703, 715, 727, 739, 751, 763, 775, 787, 799, 811, 823, 835, 846, 858, 870, 882, 894, 906, 918, 930, 942, 954, 966, 978, 989, 1001, 1013, 1025, 1037, 1049, 1061, 1073, 1085, 1097, 1109, 1121, 1132, 1144, 1156, 1168, 1180, 1192, 1204, 1216], [-2, -2, -2, -2, -2, -2, -2, -2, 843, 815, 788, 761, 733, 706, 678, 651, 623, 596, 568, 541, 513, 486, 458, 431, 403, 376, 348, 321, 293, 266, 238, 211, 184, 156, 129, 101, 74, 46, 19, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453713511948219/20.jpg", "run_time": 0.409 }
96 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 687, 724, 761, 799, 836, 873, 910, 948, 985, 1022, 1060, 1097, 1134, 1172, 1209, 1246, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 655, 647, 640, 633, 625, 618, 611, 604, 596, 589, 582, 575, 567, 560, 553, 546, 538, 531, 524, 516, 509, 502, 495, 487, 480, 473, 466, 458, 451, 444, 437, 429, 422, 415, 408, 400, 393, 386, 378, 371, 364, 357, 349, 342, 335, 328, 320, 313], [-2, -2, -2, -2, -2, -2, -2, -2, 701, 714, 728, 742, 756, 770, 783, 797, 811, 825, 838, 852, 866, 880, 893, 907, 921, 935, 948, 962, 976, 990, 1004, 1017, 1031, 1045, 1059, 1072, 1086, 1100, 1114, 1127, 1141, 1155, 1169, 1182, 1196, 1210, 1224, 1238, 1251, 1265, 1279, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453731502184768/20.jpg", "run_time": 0.469 }
97 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 616, 609, 602, 594, 587, 580, 573, 565, 558, 551, 544, 536, 529, 522, 514, 507, 500, 493, 485, 478, 471, 464, 456, 449, 442, 435, 427, 420, 413, 406, 398, 391, 384, 376, 369, 362, 355, 347, 340, 333, 326, 318, 311, 304, 297, 289, 282, 275], [-2, -2, -2, -2, -2, -2, -2, -2, 652, 689, 726, 764, 801, 838, 876, 913, 950, 988, 1025, 1062, 1100, 1137, 1174, 1212, 1249, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 665, 679, 693, 706, 720, 734, 748, 761, 775, 789, 803, 816, 830, 844, 858, 871, 885, 899, 913, 927, 940, 954, 968, 982, 995, 1009, 1023, 1037, 1050, 1064, 1078, 1092, 1105, 1119, 1133, 1147, 1160, 1174, 1188, 1202, 1216, 1229, 1243, 1257, 1271, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 642, 626, 610, 594, 578, 562, 546, 530, 514, 498, 482, 466, 450, 434, 418, 402, 386, 370, 354, 338, 322, 306, 290, 274, 258, 242, 226, 210, 194, 178, 162, 146, 130, 114, 98, 82, 66, 50, 34, 18, 2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453753492316007/20.jpg", "run_time": 0.344 }
98 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 624, 617, 610, 603, 596, 589, 582, 575, 568, 561, 554, 547, 540, 533, 526, 519, 512, 505, 498, 491, 484, 477, 470, 463, 456, 449, 442, 435, 428, 421, 414, 407, 400, 393, 386, 379, 372, 365, 358, 351, 344, 337, 330, 323, 316, 309, 302, 295], [-2, -2, -2, -2, -2, -2, -2, -2, 644, 681, 719, 756, 793, 831, 868, 905, 943, 980, 1017, 1055, 1092, 1129, 1167, 1204, 1241, 1279, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 662, 675, 689, 703, 717, 730, 744, 758, 772, 785, 799, 813, 827, 841, 854, 868, 882, 896, 909, 923, 937, 951, 964, 978, 992, 1006, 1019, 1033, 1047, 1061, 1075, 1088, 1102, 1116, 1130, 1143, 1157, 1171, 1185, 1198, 1212, 1226, 1240, 1253, 1267, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 620, 588, 555, 522, 489, 457, 424, 391, 359, 326, 293, 260, 228, 195, 162, 130, 97, 64, 31, 0, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453761488899826/20.jpg", "run_time": 0.361 }
99 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 623, 615, 606, 598, 590, 581, 573, 564, 556, 548, 539, 531, 522, 514, 506, 497, 489, 480, 472, 464, 455, 447, 439, 430, 422, 413, 405, 397, 388, 380, 371, 363, 355, 346, 338, 329, 321, 313, 304, 296, 287, 279, 271, 262, 254, 246, 237, 229], [-2, -2, -2, -2, -2, -2, -2, -2, 625, 607, 589, 571, 553, 534, 516, 498, 480, 462, 444, 426, 408, 390, 372, 354, 336, 318, 300, 282, 264, 246, 228, 210, 192, 174, 156, 138, 120, 102, 83, 65, 47, 29, 11, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 673, 708, 743, 778, 813, 848, 882, 917, 952, 987, 1022, 1057, 1092, 1127, 1161, 1196, 1231, 1266, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 645, 659, 672, 685, 698, 712, 725, 738, 751, 765, 778, 791, 805, 818, 831, 844, 858, 871, 884, 897, 911, 924, 937, 951, 964, 977, 990, 1004, 1017, 1030, 1043, 1057, 1070, 1083, 1097, 1110, 1123, 1136, 1150, 1163, 1176, 1189, 1203, 1216, 1229, 1243, 1256, 1269]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453785478375673/20.jpg", "run_time": 0.343 }
100 | {"lanes": [[-2, -2, -2, -2, -2, -2, -2, -2, 640, 633, 626, 620, 613, 606, 599, 593, 586, 579, 572, 566, 559, 552, 545, 539, 532, 525, 518, 512, 505, 498, 491, 485, 478, 471, 464, 458, 451, 444, 437, 431, 424, 417, 410, 404, 397, 390, 383, 377, 370, 363, 356, 350, 343, 336, 329, 323], [-2, -2, -2, -2, -2, -2, -2, -2, 694, 732, 769, 806, 844, 881, 918, 956, 993, 1030, 1067, 1105, 1142, 1179, 1217, 1254, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 633, 618, 603, 588, 573, 558, 544, 529, 514, 499, 484, 470, 455, 440, 425, 410, 395, 381, 366, 351, 336, 321, 306, 292, 277, 262, 247, 232, 217, 203, 188, 173, 158, 143, 129, 114, 99, 84, 69, 54, 40, 25, 10, -2, -2, -2, -2, -2], [-2, -2, -2, -2, -2, -2, -2, -2, 696, 709, 723, 737, 751, 764, 778, 792, 806, 819, 833, 847, 861, 875, 888, 902, 916, 930, 943, 957, 971, 985, 998, 1012, 1026, 1040, 1053, 1067, 1081, 1095, 1109, 1122, 1136, 1150, 1164, 1177, 1191, 1205, 1219, 1232, 1246, 1260, 1274, -2, -2, -2, -2, -2]], "h_samples": [160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710], "raw_file": "clips/0601/1494453809467806176/20.jpg", "run_time": 0.331 }
101 |
--------------------------------------------------------------------------------
/source/Edge.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by xuzf on 2021/2/6.
3 | //
4 |
5 | #include "../include/Edge.h"
6 | #include
7 | #include
8 |
9 | /* 阈值分割,得到二值图像 */
10 | void TurnBinary(Img &src, double weight)
11 | {
12 | std::vector vec;
13 | // 高阈值取灰度分布图中 weight 对应的灰度值
14 | for (int i = 160; i < src.rows; ++i)
15 | {
16 | for (int j = 0; j < src.cols; ++j)
17 | {
18 | vec.push_back(src[i][j]);
19 | }
20 | }
21 | std::sort(vec.begin(), vec.end());
22 | int threshold = vec[(src.rows - 160)* src.cols * weight];
23 | for (int i = 0; i < src.rows; ++i)
24 | {
25 | for (int j = 0; j < src.cols; ++j)
26 | {
27 | if (src[i][j] > threshold && i >= 160)
28 | src[i][j] = 255;
29 | else
30 | src[i][j] = 0;
31 | }
32 | }
33 | }
34 |
35 | /* 形态学:膨胀运算 */
36 | void Dilation(const Img &src, Img &dst, int kernel_size)
37 | {
38 | for (int i = kernel_size; i < src.rows - kernel_size; ++i)
39 | {
40 | for (int j = kernel_size; j < src.cols - kernel_size; ++j)
41 | {
42 | if (src[i][j] == 255)
43 | {
44 | for (int x = -kernel_size; x <= kernel_size; ++x)
45 | {
46 | for (int y = -kernel_size; y <= kernel_size; ++y)
47 | {
48 | dst[i + x][j + y] = 255;
49 | }
50 | }
51 | }
52 | else
53 | dst[i][j] = 0;
54 | }
55 | }
56 | }
57 |
58 | /* 形态学: 腐蚀运算 */
59 | void Erosion(const Img &src, Img &dst, int kernel_size)
60 | {
61 | bool is_kept;
62 | for (int i = kernel_size; i < src.rows - kernel_size; ++i)
63 | {
64 | for (int j = kernel_size; j < src.cols - kernel_size; ++j)
65 | {
66 | is_kept = true;
67 | for (int x = -kernel_size; x <= kernel_size; ++x)
68 | {
69 | if (!is_kept)
70 | break;
71 | for (int y = -kernel_size; y <= kernel_size; ++y)
72 | {
73 | if (src[i + x][j + y] != 255)
74 | {
75 | is_kept = false;
76 | break;
77 | }
78 | }
79 | }
80 | dst[i][j] = is_kept ? 255 : 0;
81 | }
82 | }
83 | }
84 |
85 | /* 遮盖无效部分 */
86 | void RoiMask(Img &src)
87 | {
88 | // 梯形 ROI 区域进行 mask (400, 0) (220, 420) (200, 860), (400, 1280)
89 | for (int i = 0; i < src.rows; ++i)
90 | {
91 | for (int j = 0; j < src.cols; ++j)
92 | {
93 | if (i <= 200)
94 | src[i][j] = 0;
95 | else if (i > 400)
96 | continue;
97 | else if (2.1 * (400 - i) > j || j > 1280 - 2.1 * (400 - i))
98 | src[i][j] = 0;
99 | }
100 | }
101 | }
102 |
103 | /* Sobel 算子:计算图像梯度 */
104 | void Sobel(const Img &src, Img &dst, Img &theta)
105 | {
106 | assert(src.rows == dst.rows);
107 | assert(src.cols == dst.cols);
108 |
109 | const double sobelX_arr[3][3] = {
110 | {-1, 0, 1},
111 | {-2, 0, 2},
112 | {-1, 0, 1}
113 | };
114 | const double sobelY_arr[3][3] = {
115 | {1, 2, 1},
116 | {0, 0, 0},
117 | {-1, -2, -1}
118 | };
119 | Kernel sobelX(3);
120 | Kernel sobelY(3);
121 | for (int i = 0; i < 3; ++i)
122 | {
123 | for (int j = 0; j < 3; ++j)
124 | {
125 | sobelX[i][j] = sobelX_arr[i][j];
126 | sobelY[i][j] = sobelY_arr[i][j];
127 | }
128 | }
129 | Img imgGradX(src.rows, src.cols);
130 | Img imgGradY(src.rows, src.cols);
131 | sobelX.convolve(src, imgGradX, false);
132 | sobelY.convolve(src, imgGradY, false);
133 | for (int i = 0; i < src.rows; ++i)
134 | {
135 | for (int j = 0; j < src.cols; ++j)
136 | {
137 | dst[i][j] = sqrt(imgGradX[i][j] * imgGradX[i][j] + imgGradY[i][j] * imgGradY[i][j]);
138 | if (fabs(imgGradX[i][j]) < 1e-10) // 防止除以0,导致溢出
139 | imgGradX[i][j] = 1e-10;
140 | theta[i][j] = atan((double) imgGradY[i][j] / imgGradX[i][j]);
141 | }
142 | }
143 | }
144 |
145 | /* 非极大值抑制 */
146 | void NonMaxSuppression(const Img &src, Img &dst, const Img &theta)
147 | {
148 | assert(src.rows == dst.rows);
149 | assert(src.cols == dst.cols);
150 |
151 | // 将 src 的值拷贝到 dst 中
152 | dst = src;
153 |
154 | uchar local[3][3];
155 | uchar temp1, temp2;
156 | double weight;
157 | const double PI_2 = PI / 2;
158 | const double PI_4 = PI / 4;
159 |
160 | for (int i = 1; i < src.rows - 1; ++i)
161 | {
162 | for (int j = 1; j < src.cols - 1; ++j)
163 | {
164 | // 记录考察点的局部值
165 | for (int x = 0; x < 3; ++x)
166 | {
167 | for (int y = 0; y < 3; ++y)
168 | {
169 | local[x][y] = src[i - 1 + x][j - 1 + y];
170 | }
171 | }
172 | if (theta[i][j] > -PI_2 && theta[i][j] <= -PI_4)
173 | {
174 | weight = fabs(1 / tan(theta[i][j]));
175 | temp1 = uchar(weight * local[2][2] + (1 - weight) * local[2][1]);
176 | temp2 = uchar(weight * local[0][0] + (1 - weight) * local[0][1]);
177 | if (local[1][1] <= temp1 || local[1][1] <= temp2)
178 | dst[i][j] = 0;
179 |
180 | } else if (theta[i][j] > -PI_4 && theta[i][j] <= 0)
181 | {
182 | weight = fabs(tan(theta[i][j]));
183 | temp1 = uchar(weight * local[2][2] + (1 - weight) * local[1][2]);
184 | temp2 = uchar(weight * local[0][0] + (1 - weight) * local[1][0]);
185 | if (local[1][1] <= temp1 || local[1][1] <= temp2)
186 | dst[i][j] = 0;
187 | } else if (theta[i][j] > 0 && theta[i][j] <= PI_4)
188 | {
189 | weight = tan(theta[i][j]);
190 | temp1 = uchar(weight * local[0][2] + (1 - weight) * local[1][2]);
191 | temp2 = uchar(weight * local[2][0] + (1 - weight) * local[1][0]);
192 | if (local[1][1] <= temp1 || local[1][1] <= temp2)
193 | dst[i][j] = 0;
194 | } else if (theta[i][j] > PI_4 && theta[i][j] < PI_2)
195 | {
196 | weight = 1 / tan(theta[i][j]);
197 | temp1 = uchar(weight * local[0][2] + (1 - weight) * local[0][1]);
198 | temp2 = uchar(weight * local[2][0] + (1 - weight) * local[2][1]);
199 | if (local[1][1] <= temp1 || local[1][1] <= temp2)
200 | dst[i][j] = 0;
201 | }
202 | }
203 | }
204 | }
205 |
206 | /* 双阈值检测 & 连接边缘 */
207 | void DoubleThreshold(Img &image, const double weight)
208 | {
209 | double highThreshold;
210 | double lowThreshold;
211 | bool flag = false;
212 | std::vector vec;
213 |
214 | // 高阈值取灰度分布图中 weight 对应的灰度值
215 | for (int i = 0; i < image.rows; ++i)
216 | {
217 | for (int j = 0; j < image.cols; ++j)
218 | vec.push_back(image[i][j]);
219 | }
220 | std::sort(vec.begin(), vec.end());
221 | highThreshold = vec[weight * image.rows * image.cols];
222 | // 低阈值为高阈值的 2/3
223 | lowThreshold = highThreshold / 1.5;
224 |
225 | for (int i = 1; i < image.rows - 1; ++i)
226 | {
227 | for (int j = 1; j < image.cols - 1; ++j)
228 | {
229 | if (image[i][j] < lowThreshold) // 检测低阈值
230 | image[i][j] = 0;
231 | else if (image[i][j] > highThreshold) // 检测高阈值
232 | image[i][j] = 255;
233 | else // 介于双阈值之间,连接边缘
234 | {
235 | // 检查邻域中是否有高于阈值点(排除孤立的局部极大值点)
236 | for (int x = -1; x < 2; ++x)
237 | {
238 | if (flag) break;
239 | for (int y = -1; y < 2; ++y)
240 | {
241 | if (image[i + x][j + y] > highThreshold)
242 | {
243 | image[i][j] = 255;
244 | flag = true;
245 | break;
246 | }
247 | }
248 | }
249 | if (!flag)
250 | image[i][j] = 0;
251 | }
252 | }
253 | }
254 | }
255 |
256 | /* Canny 边缘检测 */
257 | void Canny(Img &image, const double weight)
258 | {
259 | Img theta(image.rows, image.cols);
260 | Img grad(image.rows, image.cols);
261 |
262 | Sobel(image, grad, theta);
263 | NonMaxSuppression(grad, image, theta);
264 | DoubleThreshold(image, weight);
265 | }
266 |
--------------------------------------------------------------------------------
/source/Hough.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by xuzf on 2021/2/8.
3 | //
4 |
5 | #include "../include/Hough.h"
6 | #include
7 |
8 | bool is_similar(pair &l1, pair &l2)
9 | {
10 | /*double theta1 = l1.first * PI / 180;
11 | double theta2 = l2.first * PI / 180;
12 | double delta_k = abs(tan(theta1) - tan(theta2));
13 | double delta_b = abs(l1.second * (tan(theta1) * sin(theta1) + cos(theta1)) -
14 | l2.second * (tan(theta2) * sin(theta2) + cos(theta2)));*/
15 | int delta_angle = abs(l1.first - l2.first);
16 | int delta_r = abs(l1.second - l2.second);
17 | // 一般相似直线
18 | if (delta_angle <= 20 || abs(delta_angle - 180) <= 20)
19 | return true;
20 | // if (delta_angle <= 20 && delta_r <= 70)
21 | // return true;
22 | return false;
23 | }
24 |
25 | void update_cluster(pair &line, pair, int> &cluster)
26 | {
27 | // 更新簇大小
28 | cluster.second++;
29 | // 更新中心点
30 | cluster.first.first =
31 | (cluster.first.first * (cluster.second - 1) + line.first) / cluster.second;
32 | cluster.first.second =
33 | (cluster.first.second * (cluster.second - 1) + line.second) / cluster.second;
34 | }
35 |
36 | bool cmp(const pair, int> &g1, const pair, int> &g2)
37 | {
38 | return g1.second > g2.second;
39 | }
40 |
41 | void lines_cluster(vector> &lines)
42 | {
43 | if (lines.empty())
44 | return;
45 | // 检测结果聚类
46 | vector, int> > clusters;
47 | clusters.emplace_back(lines[0], 1);
48 |
49 | // 是否创建新的簇
50 | bool flag;
51 |
52 | // 聚类
53 | for (int i = 1; i < lines.size(); ++i)
54 | {
55 | flag = true;
56 | for (auto &cluster : clusters)
57 | {
58 | // 当前数据点与某簇的中心点相似,则将其添加到簇中
59 | if (is_similar(lines[i], cluster.first))
60 | {
61 | // 更新簇
62 | // update_cluster(lines[i], cluster);
63 | cluster.second++;
64 | flag = false;
65 | break;
66 | }
67 | }
68 | if (flag) // 创建新的簇
69 | clusters.emplace_back(lines[i], 1);
70 | }
71 |
72 |
73 | // 合并相似参数
74 | for (int i = 0; i < clusters.size(); ++i)
75 | {
76 | if (clusters[i].second < 0)
77 | {
78 | continue;
79 | }
80 | for (int j = i + 1; j < clusters.size(); ++j)
81 | {
82 | if (clusters[j].second < 0)
83 | {
84 | continue;
85 | }
86 | if (is_similar(clusters[i].first, clusters[j].first))
87 | {
88 | clusters[i].first.first = (clusters[i].first.first * clusters[i].second +
89 | clusters[j].first.first * clusters[j].second) /
90 | (clusters[i].second + clusters[j].second);
91 | clusters[i].first.second = (clusters[i].first.second * clusters[i].second +
92 | clusters[j].first.second * clusters[j].second) /
93 | (clusters[i].second + clusters[j].second);
94 | clusters[i].second += clusters[j].second;
95 | clusters[j].second = -1;
96 | }
97 | }
98 | }
99 | auto iter = clusters.begin();
100 | while (iter != clusters.end())
101 | {
102 | if ((*iter).second < 0)
103 | iter = clusters.erase(iter);
104 | else
105 | iter++;
106 | }
107 |
108 | // 按照簇的大小进行排序
109 | sort(clusters.begin(), clusters.end(), cmp);
110 |
111 | // 打印簇
112 | // cout << endl << "num of clusters: " << clusters.size() << " " << endl;
113 | // for (const auto &cluster : clusters)
114 | // {
115 | // cout << "num: " << cluster.second;
116 | // cout << '(' << cluster.first.first << ", " << cluster.first.second << ") ";
117 | // cout << endl;
118 | // }
119 | // cout << endl;
120 |
121 | lines.clear();
122 |
123 | // 取最大的前四个簇的中心点(均值点)
124 | for (int i = 0; i < clusters.size(); ++i)
125 | {
126 | lines.push_back(clusters[i].first);
127 | cout << "final center " << lines[i].first << " " << lines[i].second << endl;
128 | }
129 | cout << endl;
130 | }
131 |
132 | void HoughTransform(Img &src, vector> &lines, int threshold)
133 | {
134 | // 参数空间的计数矩阵
135 | int **count;
136 |
137 | // 计数器初始化
138 | int rows = src.rows;
139 | int cols = src.cols;
140 | int r_max = 2 * (int) sqrt(rows * rows + cols * cols) + 1;
141 | count = new int *[181];
142 | for (int i = 0; i < 181; ++i)
143 | {
144 | count[i] = new int[r_max];
145 | memset(count[i], 0, r_max * sizeof(int));
146 | }
147 |
148 | // 参数空间变量
149 | int theta, r;
150 |
151 | // 遍历图像为每组参数投票
152 | for (int row = 0; row < rows - 2; ++row)
153 | {
154 | for (int col = 2; col < cols - 2; ++col)
155 | {
156 | // 对边缘点进行统计
157 | if (src[row][col] == 255)
158 | {
159 | for (theta = 0; theta < 181; ++theta)
160 | {
161 | r = int(row * sin(theta * PI / 180.0) + col * cos(theta * PI / 180.0) + r_max / 2.0);
162 | count[theta][r]++;
163 | }
164 | }
165 | }
166 | }
167 |
168 | // 遍历计数矩阵,选出超出阈值的参数
169 | for (theta = 0; theta < 181; ++theta)
170 | {
171 | for (r = 0; r < r_max; ++r)
172 | {
173 | if (count[theta][r] >= threshold && abs(theta - 90) >= 15 && abs(theta) > 10 && 180 - theta > 10)
174 | // if (count[theta][r] >= threshold)
175 | {
176 | if (theta > 90 && (r - r_max / 2) < 0)
177 | lines.emplace_back(theta - 180, r_max / 2 - r);
178 | else
179 | lines.emplace_back(theta, r - r_max / 2);
180 | }
181 | }
182 | }
183 |
184 | // 直线参数聚类
185 | lines_cluster(lines);
186 |
187 | for (int i = 0; i < 181; ++i)
188 | {
189 | delete[] count[i];
190 | }
191 | delete[] count;
192 | }
--------------------------------------------------------------------------------
/source/Kernel.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by xuzf on 2021/2/5.
3 | //
4 | #include "../include/Kernel.h"
5 | #include
6 | #include
7 |
8 | /*********************************************************
9 | * Kernel 类定义
10 | ********************************************************/
11 |
12 | /* 构造空的滤波核 */
13 | Kernel::Kernel(int size)
14 | {
15 | assert(size % 2 != 0);
16 | this->size = size;
17 | data = new double *[size];
18 | for (int i = 0; i < size; ++i)
19 | {
20 | data[i] = new double[size];
21 | memset(data[i], 0, sizeof(double) * size);
22 | }
23 | }
24 |
25 | /* 拷贝构造函数 */
26 | Kernel::Kernel(Kernel &cp)
27 | {
28 | size = cp.size;
29 | data = new double *[size];
30 | for (int i = 0; i < size; ++i)
31 | {
32 | data[i] = new double[size];
33 | for (int j = 0; j < size; ++j)
34 | {
35 | data[i][j] = cp[i][j];
36 | }
37 | }
38 | }
39 |
40 | /* 析构函数 */
41 | Kernel::~Kernel()
42 | {
43 | for (int i = 0; i < size; ++i)
44 | {
45 | delete[] data[i];
46 | }
47 | delete[] data;
48 | }
49 |
50 | /* 访问指定行 */
51 | double *Kernel::operator[](const int idx) const
52 | {
53 | return data[idx];
54 | }
55 |
56 | /*********************************************************
57 | * GaussianKernel 类定义
58 | ********************************************************/
59 |
60 | /* 高斯 Kernel 的构造函数 */
61 | GaussianKernel::GaussianKernel(const int size, const double sigma) : Kernel(size), sigma(sigma)
62 | {
63 | int center = size / 2;
64 | double sum = 0;
65 |
66 | for (int i = 0; i < size; i++)
67 | {
68 | for (int j = 0; j < size; j++)
69 | {
70 | data[i][j] = (1 / (2 * PI * pow(sigma, 2)) *
71 | exp(-(pow(i - center, 2) + pow(j - center, 2)) / (2 * pow(sigma, 2))));
72 | sum += data[i][j];
73 | }
74 | }
75 | // 归一化
76 | for (int i = 0; i < size; i++)
77 | {
78 | for (int j = 0; j < size; j++)
79 | {
80 | data[i][j] /= sum;
81 | }
82 | }
83 | }
84 |
85 | /* 高斯 Kernel 的拷贝构造函数 */
86 | GaussianKernel::GaussianKernel(GaussianKernel &cp) : Kernel(cp)
87 | {
88 | sigma = cp.sigma;
89 | }
90 |
--------------------------------------------------------------------------------
/source/SaveResult.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by xuzf on 2021/2/11.
3 | //
4 |
5 | #include "../include/SaveResult.h"
6 |
7 | void GetLanes(Img &src, vector> ¶ms, vector> &lanes)
8 | {
9 | double sin_val, cos_val, tan_val, r;
10 | int val;
11 | bool is_empty;
12 | for (auto & param : params)
13 | {
14 | vector lane;
15 | sin_val = sin(param.first * PI / 180);
16 | cos_val = cos(param.first * PI / 180);
17 | tan_val = sin_val / cos_val;
18 | r = param.second;
19 | is_empty = true;
20 |
21 | for (double h_sample : h_samples)
22 | {
23 | val = int((r * sin_val - h_sample) * tan_val + r * cos_val);
24 | if (val < 0 || val >= src.cols || h_sample <= 230)
25 | val = -2;
26 | lane.push_back(val);
27 | if (val != -2 && is_empty)
28 | is_empty = false;
29 | }
30 | if (!is_empty)
31 | lanes.push_back(lane);
32 | lane.clear();
33 | }
34 | }
35 |
36 | void WriteJson(string &raw_file, vector > &lanes, double run_time, ofstream &of)
37 | {
38 | // 打印 lanes
39 | of << R"({"lanes": [)";
40 | for (int i = 0; i < lanes.size() && i < 4; ++i)
41 | {
42 | of << "[";
43 | for (int j = 0; j < 55; ++j)
44 | {
45 | of << lanes[i][j] << ", ";
46 | }
47 | of << lanes[i][55] << "]";
48 | if (i != lanes.size() - 1 && i != 3)
49 | of << ", ";
50 | }
51 | of << "], ";
52 |
53 | // 打印 h_samples
54 | of << R"("h_samples": [)";
55 | for (int j = 0; j < 55; ++j)
56 | {
57 | of << h_samples[j] << ", ";
58 | }
59 | of << h_samples[55] << "], ";
60 |
61 | // 打印 raw_file
62 | of << R"("raw_file": ")" << raw_file << R"(", )";
63 |
64 | // 打印 run_time
65 | of << R"("run_time": )" << run_time << " }" << endl;
66 | }
67 |
68 | void polyLanes(const string &path, vector> &lanes, vector> ¶ms, int delay)
69 | {
70 | cv::Mat src_mat = cv::imread(path);
71 | cv::Mat show_img;
72 | cv::Point2d last_point(-2, -2);
73 | cv::Point2d current_point;
74 | int k = 0;
75 | for (auto &lane : lanes)
76 | {
77 | if (k >= 4)
78 | break;
79 | k++;
80 | last_point.y = -2;
81 | last_point.x = -2;
82 | for (int j = 0; j < 56; ++j)
83 | {
84 | if (lane[j] < 0)
85 | continue;
86 | if (last_point.y < 0)
87 | {
88 | last_point.y = h_samples[j];
89 | last_point.x = lane[j];
90 | continue;
91 | }
92 | current_point.y = h_samples[j];
93 | current_point.x = lane[j];
94 | cv::line(src_mat, last_point, current_point, cv::Scalar(0, 255, 0), 2);
95 | last_point.x = current_point.x;
96 | last_point.y = current_point.y;
97 | }
98 | }
99 | // cv::Point2d pt1, pt2;
100 | // for (auto param : params)
101 | // {
102 | // // 极坐标中的r长度
103 | // float rho = param.second;
104 | // // 极坐标中的角度
105 | // float theta = param.first * PI / 180;
106 | // double a = cos(theta), b = sin(theta);
107 | // double x0 = a*rho, y0 = b*rho;
108 | // // 转换为平面坐标的四个点
109 | // pt1.x = cvRound(x0 + 2000 * (-b));
110 | // pt1.y = cvRound(y0 + 2000 * (a));
111 | // pt2.x = cvRound(x0 - 2000 * (-b));
112 | // pt2.y = cvRound(y0 - 2000 * (a));
113 | // line(src_mat, pt1, pt2, cv::Scalar(0, 0, 255), 2);
114 | // }
115 | // 缩放图片
116 | // cv::resize(src_mat, show_img, cv::Size(src_mat.cols / 2.0, src_mat.rows / 2.0), 0, 0, cv::INTER_LINEAR);
117 | cv::imshow("lines", src_mat);
118 | cv::waitKey(delay);
119 | }
120 |
--------------------------------------------------------------------------------