Financial incentives for improving HoughLines for OpenCV 3.0
Being one of the fundamental types of global image features (straight lines), HoughLines is perhaps one of the most heavily used features of OpenCV.
However, the OpenCV implementation of HoughLines suffer from many shortcomings. A lot of research has been published, and some of these enhancements are even mentioned in the Wikipedia article for Hough Transform.
Most notably, two of the easiest to implement (and therefore the best return-on-investment for efforts) enhancements are:
- Make use of the gradient orientation measured at each edge pixel
- Make use of the gradient magnitude measured at each edge pixel
- The Hough-Space curve corresponding to the edge pixel will have its intensity (vote strength) scaled according to the gradient magnitude of the edge pixel.
As a researcher in document image analysis, I have several years of experience in implementing and fine-tuning my own implementation of the Hough Transform for line detection. I can attest that the two enhancements mentioned above will tremendously improve the accuracy of Hough Line Detection and its ability to reject random noise (isolated edge pixels or short edge fragments).
I understand the many reasons that the HoughLines implementation in OpenCV did not keep up with the latest research:
- The current HoughLines implementation is highly valued for its speed;
- It has been adapted to many different computational architectures (including a GPU version);
- Backwards compatibility in behavior, to avoid invalidating the fine-tuning efforts of previously written algorithms that make use of HoughLines;
- The huge effort needed to make a high-quality, robust, and generic implementation of the improvements of HoughLines
I also understand that it is being neglected:
- Hough Transform has been known for decades, so people tend to think that much of the innovations had been incorporated into OpenCV;
- Being a well-known algorithm (instead of a newly-discovered algorithm), it does not have enough glamour to attract GSoC candidates;
- Knowing that it will be unable to gain any attractions from GSoC candidates, neither Google nor OpenCV had enough incentive to sponsor additional work on HoughLines or on its successor version.
Thus, I am pondering if there is enough interests from the commercial users of OpenCV to sponsor or provide financial incentives for the improvements on HoughLines.
To address the concerns about modifying the existing HoughLines, it is certainly the case that:
- The new implementation will be given a new name, say,
HoughLines3
, which will exist side-by-side with the currentHoughLines
implementation.
(The nameHoughLines2
was already picked up by the C and Python API.)
Seeing that you have implemented and finetuned HoughLines, why not make a pull request and try to get it merged as houghlines3? The base of OpenCV is spare time developers creating the functionality, not being payed by whoever wants it to. So try and head on the problem yourself?
@StevenPuttemans I would like to help, but because my only work experience is with Visual C++, my coding style is not compatible with the cross-platform requirements of OpenCV. I have read the article OpenCV - How to contribute and will consider what I can do within my means. Thank you.
Also, my code is not generic; it is hardcoded to process CV_8UC3 (color images) and incorporated another algorithm to get edges from color images (without squashing the color images into grayscale). OpenCV's current trend is to adopt more C++ template programming.
Might be a good idea to wait for the 3.0 release. The contribution branch of openCV will then be extensively used, giving people the chance to add own created functionality which works together with the library in a seperate package/module!