In comparison with HT, RHT takes advantage of the fact that some
analytical curves can be fully determined by a certain number of points on the curve. For example, a straight line can be determined by two points, and an
ellipse (or a circle) can be determined by three points. The case of ellipse detection can be used to illustrate the basic idea of RHT. The whole process generally consists of three steps: • Fit ellipses with randomly selected points. • Update the accumulator array and corresponding scores. • Output the ellipses with scores higher than some predefined threshold.
Ellipse fitting One general equation for defining
ellipses is: a (x - p)^2+ 2b (x-p) (y-q) + c (y-q)^2 = 1 with restriction: ac-b^2>0 However, an ellipse can be fully determined if one knows three points on it and the
tangents in these points. RHT starts by randomly selecting three points on the ellipse. Let them be X_1, X_2 and X_3. The first step is to find the tangents of these three points. They can be found by fitting a straight line using
least squares technique for a small window of neighboring pixels. The next step is to find the intersection points of the tangent lines. This can be easily done by solving the line equations found in the previous step. Then let the intersection points be T_{12} and T_{23}, the midpoints of line segments X_1X_2 and X_2X_3 be M_{12} and M_{23}. Then the center of the ellipse will lie in the intersection of T_{12}M_{12} and T_{23}M_{23}. Again, the coordinates of the intersected point can be determined by solving line equations and the detailed process is skipped here for conciseness. Let the coordinates of ellipse center found in previous step be (x_0, y_0). Then the center can be translated to the origin with x' = x-x_0 and y' = y-y_0 so that the ellipse equation can be simplified to: ax'^2+2bx'y'+cy'^2=1 Now we can solve for the rest of ellipse parameters: a, b and c by substituting the coordinates of X_1, X_2 and X_3 into the equation above.
Accumulating With the ellipse parameters determined from previous stage, the
accumulator array can be updated correspondingly. Different from classical Hough transform, RHT does not keep "grid of buckets" as the accumulator array. Rather, it first calculates the similarities between the newly detected ellipse and the ones already stored in accumulator array. Different metrics can be used to calculate the similarity. As long as the similarity exceeds some predefined threshold, replace the one in the accumulator with the average of both ellipses and add 1 to its score. Otherwise, initialize this ellipse to an empty position in the accumulator and assign a score of 1.
Termination Once the score of one candidate ellipse exceeds the threshold, it is determined as existing in the image (in other words, this ellipse is detected), and should be removed from the image and accumulator array so that the algorithm can detect other potential ellipses faster. The algorithm terminates when the number of iterations reaches a maximum limit or all the ellipses have been detected. Pseudo code for RHT:
while (we find ellipses AND not reached the maximum epoch) {
for (a fixed number of iterations) { Find a potential ellipse.
if (the ellipse is similar to an ellipse in the accumulator)
then Replace the one in the accumulator with the average of two ellipses and add 1 to the score;
else Insert the ellipse into an empty position in the accumulator with a score of 1; } Select the ellipse with the best score and save it in a best ellipse table; Eliminate the pixels of the best ellipse from the image; Empty the accumulator; } ==References==