The Hough transform was successfully used in this project to detect straight
lines in images. Additional techniques to remove or smooth out noise in the
image were not required. Furthermore, it was not required to implement the
Hough transform only on feature points. However for images with a large number
of pixels, the Hough transform can be computationally 'expensive'. Thus further
techniques are required to reduce the number of computations needed. One
technique employed in this project was to calculate and store the values of
and
for
in an array. Thus these functions did not have to be evaluated for each pixel in the image, rather their values could be retrieved from the array. This improvement significantly reduced the run-time of the program.
It was mentioned previously that negative r values were set to zero. This is because a line with parameters
can equivalently be described by parameters
.
The program however would be more efficient if negative r values were recorded. Then it would only be required to run the transform through a range of
.
To reduce the number of computations, one may also want to consider using the randomized Hough transform as discussed earlier or a reverse transform.
A further point to be made is that the Hough transform locates infinite lines, not line segments. However, once an infinite line is located, the end points can be found by dividing the image into smaller sections, and applying the Hough transform to each individual section separately. Hence the Hough transform can be used to detect shapes which consist of a finite number of straight lines.