Inheritance diagram for prapi::transforms::CircularHough< T, U >:
The circular Hough transform detects circles in images. Circles are parametrized with their center pixel (R,C) and radius (r), resulting in a three-dimensional transform domain. The transformation method however returns a two-dimensional matrix. The third dimension is "virtualized" by copying two-dimensional domains on top of each other as shown in the following example:
Two-dimensional transform domain: +------> C | | | V R Three-dimensional domain: +------> C | r=1 | | ... | r=N | | V R
The circular Hough transform takes two forms. In the default form, input images are represented as gradient magnitude (edge) images. The transformation cannot be guided by gradient direction, which results in inaccurate and somewhat slow operation. If the U template parameter is of type Point<double>, each pixel in the image is treated as a gradient angle-magnitude pair. This kind of images can be obtained for example from DifferentialEdgeDetector. Given the gradient information, the transform can be optimized quite a lot.
|CircularHough (T magnitudeThreshold, int startRadius=1, int endRadius=-1, double radiusStep=1)|
|Create an instance of the circular Hough transform. |
|void||setThreshold (T threshold)|
|Set the threshold.|
|T||getThreshold () const|
|Get the current threshold.|
|void||setRadii (int start, int end, double step)|
|Set the radii that the transform looks for, and the sampling step.|
|Get the start radius.|
|Get the end radius.|
|Get the sampling step.|
|util::Matrix< T >||getTransformedImage (const util::Matrix< U > &mat) throw (ImageTransformException&)|
|Transform a gradient image.|
Create an instance of the circular Hough transform.
The transform detects circles with a number of different radii, specified with the start/endRadius parameters and radiusStep. The total number of 2-D transformation domains stacked on each other is (endRadius - startRadius)/radiusStep.