Finding Lane Lines on the Road
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的更多相关文章
- Road Construction
King Mercer is the king of ACM kingdom. There are one capital and some cities in his kingdom. Amazin ...
- when|nobody|hazard|lane|circuit|
How can I help them they won't listen to me? 题目解析 考查从句.此句意为:如果他们要是不听我的话,我怎么帮助他们?此处,when引导的状语从句表示假设事 ...
- MDX函数(官方顺序,带示例)
MDX函数(官方顺序) 1. AddCalculatedMembers (MDX) 返回通过将计算成员添加到指定集而生成的集. 语法: AddCalculatedMembers(Set_Expres ...
- poj 1724:ROADS(DFS + 剪枝)
ROADS Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10777 Accepted: 3961 Descriptio ...
- 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. ...
- openjudge ROADS
726:ROADS 总时间限制: 1000ms 内存限制: 65536kB 描述 N cities named with numbers 1 ... N are connected with one- ...
- 深搜+剪枝 POJ 1724 ROADS
POJ 1724 ROADS Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12766 Accepted: 4722 D ...
- 多次访问节点的DFS POJ 3411 Paid Roads
POJ 3411 Paid Roads Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6553 Accepted: 24 ...
- ROADS
ROADS Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11977 Accepted: 4429 Description N ...
随机推荐
- [转帖]Kafka 原理和实战
Kafka 原理和实战 https://segmentfault.com/a/1190000020120043 两个小时读完... 实在是看不完... 1.2k 次阅读 · 读完需要 101 分钟 ...
- 【AtCoder】ARC063
ARC063 C - 一次元リバーシ / 1D Reversi 不同的颜色段数-1 #include <bits/stdc++.h> #define fi first #define se ...
- [DEBUG] spring boot在eclipse中用maven打包成jar访问templates报500错误
更新:打war包的话只要把html文件放在resources/templates下即可,根本不需要放外面. 配置application.yml和templates放外面这种做法,打war包确实不行. ...
- NOIP2012 借教室 题解 洛谷P1083
一看就是暴力 好吧,其实是线段树或差分+二分,这里用的是差分+二分的做法. 二分部分的代码,套个二分板子就行 ,right=m; while(left<right)//二分 { ; ; else ...
- 连续取数字DP使值最大HDU2697
题意: 有n个数,每个数都有价钱,连续的取可以获得len*len的利益,使利益最大. 思路: 三维DP,1.2.3维分别是第i个,剩余多少钱,从后往前连续的有几个. #define IOS ios_b ...
- react项目中关于img标签的src属性的使用
在一个html文件中,img的src属性赋值为相对路径或绝对路径的字符串即可访问到图片.如下: <img src="../images/photo.png"/> 但在j ...
- 分布式session一致性问题
1.分布式session一致性 :指服务器集群情况下session共享的问题. 2.session的作用:保存服务器(tomcat)与客户端(浏览器)整个通讯的会话基本信息. 3.session应用场 ...
- Jmeter4.0---- jmeter中写入java代码_简单了解(15)
1.说明 BeanShell:是一个小型嵌入式Java源代码解释器,具有对象脚本语言特性,能够动态地执行标准JAVA语法,并利用在JavaScript和Perl中常见的的松散类型.命令.闭包等通用脚本 ...
- javaIO——概述
以前看java书,都将IO作为一个大的章节甚至模块来编写,可见IO在java语言中的重要性. java的流按功能和处理的目标数据不同可以分为字节流和字符流.字符流处理的基本数据单元是字符:字节流处理的 ...
- 【C++】如何提高Cache的命中率,示例
参考链接 https://stackoverflow.com/questions/16699247/what-is-a-cache-friendly-code 只是堆积:缓存不友好与缓存友好代 ...