├── .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 | image-20210214120515919 17 | 18 | ### 2.1 道路图像处理 19 | 20 | 通过对道路图像进行处理,突出图像中的车道线部分。模型将彩色图像转化成灰度图像进行处理,目的是简化模型的复杂度,提高运行效率。 21 | 22 | #### 2.1.1 高斯平滑 23 | 24 | 由于光照、路面情况、拍摄质量等问题,道路图像上存在很多噪声,通过高斯滤波使图像变得平滑,减弱图像中的噪声对结果的影响,提高车道线检测模型的鲁棒性。 25 | 26 | 高斯平滑就是使用高斯滤波器与原图像进行卷积,得到平滑图像。与均值滤波类似,它们都是取滤波器窗口内像素的加权均值作为输出。高斯滤波器的权值分布满足二维高斯函数。 27 | ![](https://latex.codecogs.com/gif.latex?h(x,y)=e^{-\frac{x^2+y^2}{2\sigma^2}}) 28 | 由于高斯平滑是线性离散滤波,因此离散形式的高斯滤波器为 29 | ![](https://latex.codecogs.com/gif.latex?H_{i,j}&space;=&space;\frac{1}{2&space;\pi&space;\sigma&space;^&space;2}e&space;^{-\frac{(i&space;-&space;k&space;-&space;1)^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 | ![阈值分割效果](./result/image_of_readme/binary.png) 62 | 63 | 可以发现,通过阈值分割有效的过滤掉了大部分背景,如山脉、路面、车辆,这为下面的直线检测去除了一定的干扰。但是由于部分图像存在反光或较亮区域,这导致一些车道线丢失,或特征不再明显,如下图。 64 | 65 | ![阈值分割导致车道线信息丢失](./result/image_of_readme/binary_failure.png) 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 | ![Sobel计算图像梯度](./result/image_of_readme/Sobel.png) 91 | 92 | (2)非极大值抑制 93 | 94 | 分析上图发现,由于图像灰度存在起伏,所以有一些不是边缘的区域也存在较大的梯度。采用非极大值抑制(NMS)的方法,消除梯度图像中非边缘的噪声,并将边缘细化。 95 | 96 | NMS实现的思路如下:计算每个中心像素点沿梯度方向邻域内各点的梯度值,如果该中心像素点的梯度值是以上像素点梯度值的局部极大值,则保留梯度,否则梯度置为零。由于邻域内在梯度方向上的点不一定是在整数坐标位置,因此需要通过插值计算邻域内梯度方向点的梯度值。实现效果如下: 97 | 98 | ![非极大值抑制效果](./result/image_of_readme/nms.png) 99 | 100 | 一些非边缘的噪点得到了一定程度的抑制,边缘也得到细化。 101 | 102 | (3)双阈值检测和边缘连接 103 | 104 | 需要将得到的梯度图像进行阈值分割,得到二值图以便后续进行hough变换。采用双阈值对图像进行阈值分割,实现思路如下: 105 | 106 | * 当梯度值大于高阈值时,将其灰度值取为255。 107 | * 当梯度值小于低阈值时,将其灰度值取为0。 108 | * 当梯度介于两者之间是,如果该点邻域内有高阈值点,则取为255,否则取0。 109 | 110 | 双阈值处理中,高阈值将物体边缘和背景区分开,但是当高阈值较大时,可能导致边缘断断续续;此时低阈值平滑边缘轮廓,能实现较好的分割效果。同时借鉴之前尝试对灰度图做阈值分割的思路,采用整体灰度分布相应比例处的灰度值为高阈值,低阈值取高阈值的 $\frac{2}{3}$,实现效果如下: 111 | 112 | ![双阈值效果](./result/image_of_readme/canny.png) 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 | ![梯形 mask](./result/image_of_readme/mask.png) 150 | 151 | ROI 如下: 152 | 153 | ![梯形 ROI](./result/image_of_readme/roi.png) 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 | ![hough变换效果](./result/image_of_readme/hough.png) 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 | ![聚类方法对比](./result/image_of_readme/update_cmp.png) 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 | ![输出结果](./result/image_of_readme/result.png) 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 | --------------------------------------------------------------------------------