




Next:Segmentation:
Thresholding
Up:Lectures
Previous:Segmentation:
Edge Linking and Boundary Detection
Last updated on Friday, October 27, 1995 at 9:00 AM.
The technique we'll be talkinga about today, called the Hough Transform, doesn't require connected or even nearby edge points.
--there
could be an infinite number of lines that could pass through this point.
Each of these lines can be characterized as the solution to some particular
equation. The simplest form in which to express a line is the slope-intercept
form:
where m is the slope of the line and b is the y-intercept (the y value of the line when it crosses the y axis). Any line can be characterized by these two parameters m and b.
We can characterize each of the possible lines that pass through point
as having coordinates
in some slope-intercept space. In fact, for all the lines that pass through
a given point, there is a unique value of b for m:
The set of
values corresponding to the lines passing through point
form a line in
space.
Every point in image space
corresponds to a line in parameter space
and each point in
space corresponds to a line in image space
.
vote in
space
for each possible line passing through it. These votes are totalled in
an accumulator.
Suppose that a particular
has one vote--this means that there is a feature point through which this
line passes. What if it has two votes? That would mean that two feature
points lie on that line. If a position
in the accumulator has n votes, this means that n feature
points lie on that line.
For finding lines, each feature point casts a line of votes in the accumulator.
Another way of expressing a line is in
form:
One way of interpreting this is to drop a perpendicular from the origin
to the line.
is the
angle that the perpendicular makes with the x-axis and
is the length of the perpendicular.
is bounded by
and
is bounded
by the diagonal of the image.
Instead of making lines in the accumulator, each feature point votes for a sinusoid of points in the accumulator. Where these sinusoids cross, there are higher accumulator values. Finding maxima in the accumulator still equates to finding the lines.
.
Think of each feature (edge) point on the circle as saying, "if I'm on the circle, the center must be in one of these places". It turns out that the locus of these votes is itself a circle.
But what about circles of unknown size? In this case, we need a third
parameter: the radius of the circle. So, we can parameterize circles of
arbitrary size by
.
Instead of casting votes in a circular pattern into a two-dimensional accumulator,
we cast votes in circles of successively larger size in a three-dimensional
accumulator.
Suppose that we make a table that contains all of the edge pixels for
our target shape. We can store for each of the pixels its position relative
to some reference point for the shape. We can then feature point "think"
as follows: "if I'm pixel i on the boundary, the reference ooint
must be at
."
This is called the Generalized Hough Transform and can be expressed as follows:
If you don't use an orientation parameter, you will only be able to find matches in a specific orientation.
If you do include an orientation parameter, you'll have a larger-dimensional accumulator, but you'll be able to find matches in various orientations (as many as you want to discretely parameterize).
This casting of votes for nearby possibilities can be done directly during the voting phase of the transform or afterwards through a post-processing blurring of the accumulator. The way in which you blur the accumulator depends on what nearby possibilities you want to allow.
As a further test, you may want to threshold the maxima that you find by the number of points that voted for it. Relative maxima with few votes probably aren't real matches.
You'll find that this part is the real trick of getting the Hough transform to work.
A way to deal with this is to do a second voting phase. In this phase, each point examines the locus of points in the accumulator that it voted for and finds the maximum. It then casts a single vote into a second accumulator only for this maximum. In other words, it sees where there is agreement with its neighbors and then goes along with the crowd. Gerig (1987) has shown that this removes this unnecessary clutter and leadsto only a few isolated points in the accumulator.
As another approach, suppose that after we find the global maximum we remove all votes cast by feature points on or near the corresponding match in the image space. We can then continue the process by looking for the next largest global maximum, remembering it, and removing the votes from it's points.





Next:Segmentation:
Thresholding
Up:Lectures
Previous:Segmentation:
Edge Linking and Boundary Detection