Finding Lane Lines on the Road

The goals / steps of this project are the following:

  • Make a pipeline that finds lane lines on the road
  • Reflect on your work in a written report

Reflection

1. Describe your pipeline. As part of the description, explain how you modified the draw_lines() function.

My pipeline consisted of 5 steps. First, I got a image-copy and converted the images to grayscale:

Then I used gauss blur to reduce the noise point

At first ,the kernel size I’v been used was 5,but there was still have some noise point so I turned it to 7.

The next step is to get the region of interest I used function as blew

Then I use houg_lines function to find lines , and combine two image together.

In order to draw segmented or solid line I change the hough_lines function , adding a parameter flag like the code blew. When the flag eques 1 , the function use the draw_lines2() which is I modified the draw_lines().

In the draw_lines2() function ,I use slope to distinguish between left and right. If the slope was greater than 0.5 it might be the right line. And if it less than -0.5 I consider it belongs to left. The slope in the [-0.5,0.5] , for example slope == 0, are wrong numbers .

Knowing slope and bias can I calculate x for any y that I know, and with the two point which are at the beginning and the end of the line I can draw a single line segment. So , at first, the average of slope and bias was used . but in some frame it might not work well . The other problem is the line shook in the videos. Then I use the np.ployfit() to find the slope and bias in draw_lines2 function.

It works well in the single frame ,but it still shook as if they were been struck by an earthquake! I’m very upset…….T^T

But life goes on.

Finally I got two ideas. I write them in function find_top_and bottom_point()

In this function I use two ways to make the bias and slope robust. One way is using two global queues with max-length of 5 to save the past 4 frames' bias and slope and bias. The current slope is the average of the past 4 and 1 current frames. The current bias is the same

Other way is to use the old and new slopes combining to generate the slope. The Formula is globlas_slope * 0.4 + slope * 0.6 .The globlas_slope was the one in the previous fram.

globals_slope_r and globlas_bias_r are lists used to record the slope and bias of adjacent 5 frames. globals_slope_l and globals_bias_l are float parameters to use the formula. Both of them work well.

The right was using formula and the left line using the queue. I think using queue is better than using formula . It was more robust.

2. Identify potential shortcomings with your current pipeline

I think there are many shortcomings in my curruet pipeline.

First of all, the worst one is that can not work well with the challenge! There are many noise point in the challenge. So when I use hough_lines() function to find the line it show many short line that are’t the lane line.The solution I will talk in next part.

Another potential shortcoming would be that many parameters were fixed. This will cause the program to fail in many case: the lane Line region  changed, the illumination changed ,the road may white also ,there is a car in the font and so on……..

3. Suggest possible improvements to your pipeline

A possible improvement would be to use color_select. In challenge , only few objects were in the white or yellow. If I use it, I think it may reduce many noise points.

I think I can use contours to reduce some miss-finding. The line area size may in an interval of one scense.

 

Finding Lane Lines on the Road的更多相关文章

  1. Road Construction

    King Mercer is the king of ACM kingdom. There are one capital and some cities in his kingdom. Amazin ...

  2. when|nobody|hazard|lane|circuit|

    How can I help them  they won't listen to me? 题目解析 考查从句.此句意为:如果他们要是不听我的话,我怎么帮助他们?此处,when引导的状语从句表示假设事 ...

  3. MDX函数(官方顺序,带示例)

    MDX函数(官方顺序) 1.  AddCalculatedMembers (MDX) 返回通过将计算成员添加到指定集而生成的集. 语法: AddCalculatedMembers(Set_Expres ...

  4. poj 1724:ROADS(DFS + 剪枝)

    ROADS Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10777   Accepted: 3961 Descriptio ...

  5. Codeforces Round #212 (Div. 2) D. Fools and Foolproof Roads 并查集+优先队列

    D. Fools and Foolproof Roads   You must have heard all about the Foolland on your Geography lessons. ...

  6. openjudge ROADS

    726:ROADS 总时间限制: 1000ms 内存限制: 65536kB 描述 N cities named with numbers 1 ... N are connected with one- ...

  7. 深搜+剪枝 POJ 1724 ROADS

    POJ 1724 ROADS Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12766   Accepted: 4722 D ...

  8. 多次访问节点的DFS POJ 3411 Paid Roads

    POJ 3411 Paid Roads Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6553   Accepted: 24 ...

  9. ROADS

    ROADS Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11977 Accepted: 4429 Description N ...

随机推荐

  1. 【转帖】Linux上搭建Samba,实现windows与Linux文件数据同步

    Linux上搭建Samba,实现windows与Linux文件数据同步 2018年06月09日 :: m_nanle_xiaobudiu 阅读数 15812更多 分类专栏: Linux Samba 版 ...

  2. [转帖]Vim全键盘操作

    https://www.cnblogs.com/pzqu/p/11416436.html Vim脱离鼠标第一步 平时不可缺少的会用到vim,但是避免不了鼠标,事实上,省略鼠标是完全可以的,没有想像中那 ...

  3. SQL SERVER CONVERT函数

    定义: CONVERT函数返回 转换了数据类型的数据. 语法: CONVERT(target_type,expression,date_style smallint) 参数: ①target_type ...

  4. 什么是文件存储NAS

    阿里云文件存储(Network Attached Storage,简称 NAS)是面向阿里云 ECS 实例.E-HPC 和容器服务等计算节点的文件存储服务. 定义 阿里云文件存储 NAS 是一个可共享 ...

  5. Scala当中什么是Transformation和 Action,以及它们俩的区别是什么?

    [学习笔记] 一个完整的RDD任务由两部分组成:Transformation和 Action.Transformation用于对RDD的创建,还可以把老的RDD通过Transformation来生成新 ...

  6. eclipse scala Could not reserve enough space for object heap

    [学习笔记] 防盗版实名手机尾号:73203 Could not reserve enough space for object heap 解决方法:下面的缩写中:一个是memory max(Xmx) ...

  7. 【2019NOIP复习计划】

    (其实不应该这么叫的,应该是CSP-S了现在..) 重点关注的板子: 不知道为什么特别受出题人青睐的LCA(板子点这里) 配套练习:(紫题请自便)  (这题蓝的应该可以试试)  (对的这题也紫它还是道 ...

  8. S02_CH06_XADC实验

    S02_CH06_XADC实验 6.1实验概述 这次借助zynq的内嵌的XADC来采集zynq内部的一些参数: •VCCINT:内部PL核心电压 •VCCAUX:辅助PL电压 •VREFP:XADC正 ...

  9. 贝叶斯优化 Bayesian Optimization

    贝叶斯优化 Bayesian Optimization 2018年07月02日 22:28:06 余生最年轻 阅读数 4821更多 分类专栏: 机器学习   版权声明:本文为博主原创文章,遵循CC 4 ...

  10. Django rest-framework框架-版本控制

    第一版: from rest_framework.versioning import BaseVersioning class ParamVersion(object): def determine_ ...