VisionX V4 | VHOUGHC | VisionX V4 |
vhoughc − circle Hough transform |
vhoughc if=infile of=outfile [de=D] [th=T] r=R [-i] |
Vhoughc computes both the circle Hough transform and the inverse Hough transform of infile. To perform the circle Hough transform, infile has to be a two channel byte image. The first channel is interpreted as edge strength, the second as edge direction (which is given as an angle). The sobel edge detector, if invoked with the −d option, generates an appropriate file. The Hough space has the common Euclidean (x, y) coordinate system. An edge element (x, y; d) at position (x, y) in infile and with direction d gets mapped into the two points |
(x + R * cos(d), y + R * sin(d)) and (x - R * cos(d), y - R * sin(d)) |
If a delta-d D is specified, each edge element gets mapped into two arcs, which contain the above two points and have length R * D. If a threshold T is specified, only edge elements with strength >= T are mapped to outfile. T defaults to 1. To perform the inverse circle Hough transform, using the -i flage, infile has to be created by the circle Hough transform. For each nonzero pixle (x, y) in infile a cirlce with radius R and cerner (x, y) and intensity 255 is drawn into outfile. To "draw a circle into outfile" means, that the value of each pixel on the circle is incremented by one, unless it is already 255. Infile and outfile are byte images and outfile has the same size as infile. Moreover, it hardly makes sense to apply the inverse to any file which has not been created by the circle Hough transform . If a threshold T is specified, only those pixels of infile with value >= T are mapped to outfile. T defaults to 1. |
vhoughg, vhoughl |
Arcs are approximated by two straight lines, therefore only small values of D should be used (like D <= 15). |