What's this? It isn't on any book... well, in fact, in this context, by "Circular Hough Transform" we are referring to a specially optimized "Generalized Hough Transform" for detecting circular shapes. The most important differences are these:
These considerations mean that the "Circular Hough Transform" is just a variation of the "standard" Hough Transform parametrized for circle, and that "generality" has been lost.
This isn't necessarily a flaw, as it performs practically identically with the "true" GHT (which, in this program, also lacks orientation checks, because circles are symmetrical.
In practice, this approach translates into slightly less memory, no need to build a separate R-Table for each circle diameter we're interested, and a slightly easier handling of radius and boundary thickness related errors, compared to an R-Table. Otherwise, it performs very much the same way, and yields similar detection results.
Like the GHT, the CHT also performs better on edge detection images, rather than on thin outlines. Practical tests have shown that detection is generally enhanced (but false detections increase, too) if we allow for some "fuzziness" when comparing R-Tables or parametric circles to our binary image.
This can be achieved by either:
|
|
The original, crisp binary image. Looks simple and easy to the eye...but not to the GHT/CHT. |
The fuzzy edge detection image, after applying a Prewitt mask. It is more desirable to operate on such images. |
![]() |
![]() |