Giter VIP home page Giter VIP logo

mfkiwl / road-line-detection Goto Github PK

View Code? Open in Web Editor NEW

This project forked from rmcqueen/road-line-detection

0.0 1.0 0.0 16.09 MB

Identify road boundaries, and estimates the lane divider markings

License: GNU Lesser General Public License v3.0

MATLAB 18.62% C++ 2.69% C 62.11% Makefile 2.99% HTML 6.90% CSS 1.42% Python 3.33% Clean 0.29% TeX 0.30% Shell 0.08% Roff 0.48% Objective-C 0.80%

road-line-detection's Introduction

Description

This project takes an input video of a car driving down a road, computes the road boundaries, and estimates lane divider markings regardless of whether or not there is a strong edge present.

Assumptions

  1. Driving on the right side of a two-lane road (see the video for an example)

  2. Driving during daylight; due to limitations on a sufficient quality video, night time conditions were not tested.

  3. Speed limit signs are on the right side of the road

  4. One way street signs are in the upper third of a frame

Algorithm

  1. Edge Detection (Canny Used)

    • The edges in the sample video are rather weak due to the illumination, and amount of noise caused by vehicles, the degraded road, and faded paint.
    • A low threshold was needed in order to preserve important edges.
  2. Otsu's Method (Not Included due to improper usage)

    • Needed to segment regions in order to emphasize the road lines to allow for easier detection. The regions segmented were in the lower quadrants of frames due to that being the area of concern.
  3. Dilation

    • To improve the detection of the Kernel Hough Transformation, dilation was used in order to increase the sizes of the edges.
    • An undesired effect of using dilation was the edges from shadows were also emphasized, however, this did not effect the detection.
  4. Kernel Hough Transformation

    • Involves detecting the road boundary edges
    • A faster version of the classic Hough Transformation, and enables detection in real-time, however, due to the hardware constraints, the framerate of the source video was reduced heavily.
    • Please see the paper by Leandro A. F. Fernandes, and Manuel M. Oliveira titled, Real-time line detection through an improved Hough transform voting scheme
  5. Lane Markings Estimation

    • TODO
  6. Traffic Sign Recognition

    • Segment frames to look in the areas outlined in Assumptions to improve classification accuracy
    • Extract feature points of the speed limit signs, and one way street signs by using a training/testing dataset
    • Scale Invariant Feature Transform to locate the feature points in the frames

Example of line detection

Line Detection

Example of sign recognition

Traffic Sign Recognition

Retrospective

  • Otsu's Method should have been implemented using a local thresholding approach, as opposed to global thresholding. Global thresholding resulted in a heavy emphasis on areas with illumination corruption, and skewed the threshold value by a large margin.

  • SIFT is very slow for a video feed, and an alternative approach should have been used. Perhaps a support vector machine (SVM) would produce better results.

  • The frame rate of the video is extremely poor, and should be able to produce these results in near real-time. Further exploration into how to improve the framerate without sacrificing prediction quality should have been done.

road-line-detection's People

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.