Since understanding your specific needs is key to what constitutes the best algorithm, I would suggest you start with a review article such as
http://ijarcce.com/upload/2015/july-1...
paying particular attention to references.
Then, identify the environment, sensors, processor, etc. Then some one can provide what is best, but then again, you probably will have already discovered it.
For example, if you have the view of all lanes from the top, you have a simpler algorithm than if you have to view it from the side or lanes are obscured. Perhaps you could ask yourself if accuracy is what you want or is reliability and minimum costs.
can you take a look at the faq , and try to improve your question ?