Giter Site home page Giter Site logo

akshitagupta15june / lane_detection_opencv Goto Github PK

View Code? Open in Web Editor NEW
38.0 4.0 36.0 117.56 MB

The main emphasis of this project is to find the further ways which can be used further to improve the result of lane detection algorithms. Join Discord channel for discussion.

Home Page: https://discord.gg/CWqgNWbNye

License: MIT License

Python 0.41% Jupyter Notebook 99.59%
opencv python3 open-source

lane_detection_opencv's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

lane_detection_opencv's Issues

Homography to get birds eye view of lane.

A Homography is a transformation ( a 3×3 matrix ) that maps the points in one image to the corresponding points in the other image. Figure 1 : Two images of a 3D plane ( top of the book ) are related by a Homography.

image

Adding Environment details in ISSUE_TEMPLATE.md

Is your feature request related to a problem? Please describe.
Without knowing the exact environment details it is hard to reproduce the error to rectify it.

Describe the solution you'd like
To add an environment Section in the ISSUE_TEMPLATE.md

Describe alternatives you've considered

Approach to be followed (optional)
Adding the environment section in which the user has to provide:
OS details
pip version
python version

Additional context

Visualization on video

Goal : The lane is visualized as two green/red/any color, linearly fitted polynomials which will be overlayed on our input frame.

Updating README with Probabilistic Hough Transform information

Describe the bug
The README describes the usage of hough transform in the lane detection module.However, the optimised version of hough transform called probabilistic hough transform is used. There is lot of diference between the two algorithms.

To Reproduce
Steps to reproduce the behavior:

  1. Adding information about probabilistic hough transform in readme
  2. explaining in short why using this version instead of normal hough transform
  3. using 2 diagrams to compare the behaviour of the two algorithms
  4. explaning the importance of values of minLineLength and maxLineGap in the HoughLinesP() function which basically differs it from normal HoughLines() opencv function

Apply hough transforms on video

The task is to apply hough transform on each frame of the video.
Goal: To identify two straight lines — which will be our left and right lane boundaries.

Improve README

I would like to improve the README by adding NWoC banner under

ORGANIZATIONS IN WHICH THIS PROJECT WAS A PART OF:

Also, I would like to add some coder badges and beautify it!

Advanced Lane Finding

Environment:

  • python version
  • pip version
  • OS details

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is.

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Approach to be followed (optional)
A clear and concise description of approach to be followed.

Additional context
Add any other context or screenshots about the feature request here.

Select Region of Interest.

Define Region of Interest.
This helps in weeding out unwanted edges detected by canny edge detector.

Even after applying Canny Edge Detection, there are still many edges that are detected which are not lanes. Region of Interest is a polygon that defines area in the image, from where edges we are interested.
Note that , the co-ordinate origin in the image is top-left corner of image. rows co-ordinates increase top-down and column co-ordinates increase left-right.
Assumption here is camera remains in constant place and lanes are flat, so that we can “guess” region of interest.

One library for read and write.

use one uniform library to read and write images. This is because the matplotlib library works on BGR colorspace and the OpenCV library works with RGB colorspace. Using one of those to perform read and write operations on images would prevent any confusion

Remove unnecessary data from readme

Environment:

  • python version
  • pip version
  • OS details

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is.

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Approach to be followed (optional)
A clear and concise description of approach to be followed.

Additional context
Add any other context or screenshots about the feature request here.

Applying Hough Transforms

To the point, we now do not need to solve for a line that intersects all nearby edge pixels. Instead, we can simply solve for the intersections between lines in Hough Space, and transform that intersection point back into Image Space to obtain a line which intersects enough edge pixels. Fortunately for us, OpenCV ships with a function for generating Hough lines from an image containing edge pixels.

The task is to use hough transorms to detect lines and render the detected hough lines as an overlay. 🙌

Adding "How to use" and files structure In Readme.md

Is your feature request related to a problem? Please describe.
There are lots of files present in our repo, we add a section that will be explaining the major files on which we have to work on.

Describe the solution you'd like
Add a section Usage which will contain the folder structure in this way :
(sample)
image

It will clear for all the contributor where to start from and what are the major files to be worked on.

Describe alternatives you've considered

Approach to be followed (optional)

Additional context

Guidelines for NJACK NW'oC Participants.

Issues have been raised with labels {"nwoc","beginner","Intermediate","hard"}

If you are familiar with the issue and you can solve it then you can comment there for assigning it to you.

For further queries and discussion please join the discord link mentioned in this repository readme.

Focus of open source programs are to help you learn, grow and develop, please make use of this opportunity.

Very Excited for your Contributions.
Happy Coding!

Adding Environment details in Bug_request.md

Is your feature request related to a problem? Please describe.
Without knowing the exact environment details it is hard to reproduce the error to rectify it.

Describe the solution you'd like
To add an environment Section in the Bug_request.md

Approach to be followed (optional)
Adding the environment section in which the user has to provide:
OS details
pip version
python version

Additional context

Make the region of interest dynamic.

Firstly, create the polygon and the region of interest dynamic.

More specifically, the polygon should keep changing with the lane width and the road ahead as they are not always constant.

Making a dynamically changing polygon would make the algorithm work on different sized roads.

Add Issue template

Can I make issue templates to enhance the workflow of the repository?

find objects like car, person in lane

Environment:

  • python version
  • pip version
  • OS details

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is.

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Approach to be followed (optional)
A clear and concise description of approach to be followed.

Additional context
Add any other context or screenshots about the feature request here.

Edge detection in the image

As main aim of the project is to detect lane from the input image .So in this edge detection is very popular technique to detect edges in the input image. So in this issue you should work on detecting edges.
You have to liberty to choose b/w different edge detection techniques available which best suits and give best results. Following are the things you can work on:-

  • CannyEdge detection
  • Image gradients (Sobel operator)
  • any other that you can find

in ipython notebook you can try out different techniques and make PR for the same. while combining different components in the project we can take best one but for learning you should know the all the techniques.

Curve Lines Implementation on lanes.

change the draw_lines() function to draw curved lines instead of straight lines. This can be achieved by substituting the y = mx + c formula with a partial ellipse, hyperbola, parabola or a partial circle. This would enable the algorithm to work on curved lanes, which would be hugely important.

Creating a Single Left and Right Lane Line

Task : create only one line for each of the groups of lines we found after applying hough transforms. This can be done by fitting a simple linear model to the various endpoints of the line segments in each group, then rendering a single overlay line on that linear model.

About Section

In the About Section, there are a few grammatical errors. I know it is a very trivial issue so it's ok if the owner does not pay much heed to the issue.

Corrected Version---
The lane detection has proved to be an efficient technique to prevent accidents in Intelligent Transportation Systems. The review on lane detection has shown that most of the researchers have neglected the problem of the fog and noise in images. Thus noise and fog may reduce the accuracy of the existing systems.

Camera calibration and distortion calculation

Task: Compute the camera calibration matrix and distortion coefficients given a set of chessboard images/curved road lane images.

hint: OpenCV provide some really helpful built-in functions for the task on camera calibration. First of all, to detect the calibration pattern in the calibration images, we can use the function cv2.findChessboardCorners(image, pattern_size).

Once we have stored the correspondeces between 3D world and 2D image points for a bunch of images, we can proceed to actually calibrate the camera through cv2.calibrateCamera(). Among other things, this function returns both the camera matrix and the distortion coefficients, which we can use to undistort the frames.

Fill The area b/w lanes

Hi everyone,
Here is a new task. I hope all of you are done with lane detection. Now the task is to fill the area b/w the detected lane lines with some other color. So as to make it a little more interesting.

Everyone can work on this issue everyone will be evaluated. No specific assignment to any participant will be done for this issue.

Display lane lines

Display the detected lane lines as an overlay on the original image of the road.

Lane detection on video

Hi everyone,
Here is a new task for you, all of you can work on this task. I this take a do lane detection on the video of road.
you can use any python package or technique to do that.Some of the possible solutions are ,
moviepy python package
basic opencv by taking each frame and processing it.

I added an input video file in the repo for you to work on https://github.com/akshitagupta15june/lane_detection_opencv/blob/master/solidWhiteRight.mp4
you are free to use any other also if you want too.

keep contributing to the project.

convert read images into different color spaces

Use openCv to convert input image to various color spaces and show that.
Possible color spaces can be:-

  • RGB
  • HSV
  • HLS
  • Grayscale
    Also see what features of the image is better in different color spaces.

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.