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. IDEA操作之test case coverage的方法

    作用:  用于自动化测试,检查单元测试的覆盖率情况. 安装: 1.点击 Run * with coverage 或者右键已经定义为test source的package选择(单个test class同 ...

  2. Elasticsearch使用小结之冷热分离

    Elasticsearch使用小结之冷热分离 索引迁移 索引setting中的index.routing.allocation.exclude和index.routing.allocation.inc ...

  3. mysql 组合两张表

    select P.FirstName,P.Lastname,A.City,A.State from Person P left join Address A on P.PersonId = A.Per ...

  4. 序列化,os,sys,hashlib,collections

    序列化,os,sys,hashlib,collections 1.序列化 什么是序列化?序列化的本质就是将一种数据结构(如字典,列表)等转换成一个特殊的序列(字符串或者bytes)的过程就叫做序列化. ...

  5. python基础(十三)--os和sys模块

    os模块 os.getpwd():获取当前工作目录(windows下没有) os.listdir(path):列出目录下的文件 os.remove(path):删出文件 (不能是目录,即文件夹) os ...

  6. 初识机器学习——概念介绍(imooc笔记)

    前言 imooc的机器学习一个最基本的介绍类课程,http://www.imooc.com/learn/717 ,不怎么涉及具体的算法或实现,只是讲了讲一些理论概念. 概述 机器学习: 利用计算机从历 ...

  7. MySQL 聚合函数(三)MySQL对GROUP BY的处理

    原文来自MySQL 5.7 官方手册:12.20.3 MySQL Handling of GROUP BY SQL-92和更早版本不允许SELECT列表,HAVING条件或ORDER BY列表引用未在 ...

  8. django管理系统代码优化-分组(二)

    django管理系统代码优化-分组(二) 后续进行代码更新,优化 一优化的内容 优化前代码:https://www.cnblogs.com/pythonywy/p/11345626.html 路由进行 ...

  9. luogu1005矩阵取数游戏题解--区间DP

    题目链接 https://www.luogu.org/problemnew/show/P1005 分析 忽然发现这篇题解好像并没有什么意义...因为跟奶牛零食那道题一模一样,博主比较懒如果您想看题解的 ...

  10. 关于Mybatis的几件小事(二)

    一.MyBatis缓存机制 1.简介 Mybatis包含了一个非常强大的查询缓存的特性,它可以非常方便地配置和定制. 缓存key极大提高查询效率 MyBatis系统中默认定义了两次缓存 默认情况下,只 ...