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 ...
随机推荐
- springboot @vaule注解失效解决办法
在Controller类里面通过@Value将参数注入进来,最后的确成功了.因此基于此经验,我便在其他使用的类里面也采用这样的方式注入参数,但是发现去失效了,报错为NULL,说明参数并没有我们料想的被 ...
- fastdfs 集群搭建
1.部署FastDFS及Nginx (本套FastDFS为简化版安装部署,只需解压至普通用户家目录下或者任意目录,解压后修改脚本,执行脚本后即可使用.) 说明:FastDFS分为tracker(默认端 ...
- AlertManager 部署及使用
熟悉了 Grafana 的报警功能,但是 Grafana 的报警功能目前还比较弱,只支持 Graph 的图表的报警.今天来给大家介绍一个功能更加强大的报警工具:AlertManager. 简介 之前我 ...
- Python 正则表达模块详解
Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...
- 怎样获取所有style节点
通过 document.styleSheets 获取所有的样式表节点. document.styleSheets instanceof StyleSheetList; // true 注意: 1. 返 ...
- Python取值的灵活性用法
samp_string = "Whatever you are, be a good one." for i in samp_string: print(i) ,len(samp_ ...
- Django中 auto_now_add 和 auto_now 的区别
auto_now_add = True #创建时添加的时间 修改数据时,不会发生改变 auto_now = True #修改数据的时间,每次修改都会有变动 ........
- ssh下known_hosts的作用
原文地址:http://blog.csdn.net/yasaken/article/details/7348441 在平时工作中,有时候需要SSH登陆到别的Linux主机上去,但有时候SSH登陆会被禁 ...
- Linux下mysql不区分大小写设置
Linux环境下的MySQL数据库的表名默认是区分大小写的 Windows环境下的MySQL数据库的表名默认是不区分大小写的 所以Linux下想mysql不区分下大写可以查看/etc/my.cnf文件 ...
- 如何提高后台服务应用问题的排查效率?日志 VS 远程调试
转眼间,距离Jerry最近一篇文章推送已经过去了一个多月的时间了. 公众号更新的频率降低,不是因为Jerry偷懒,而是由于从春节过后,我所在的SAP成都研究院数字创新空间整个团队,一直在忙一个5月份需 ...