21
GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY SHAPES D. H. Ballard Pattern Recognition Vol. 13 No. 2 1981

GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY SHAPESweb.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_3.pdf · GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY

  • Upload
    hamien

  • View
    215

  • Download
    2

Embed Size (px)

Citation preview

Page 1: GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY SHAPESweb.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_3.pdf · GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY

GENERALIZING THE HOUGH TRANSFORM TO

DETECT ARBITRARY SHAPES

D. H. Ballard

Pattern Recognition Vol. 13 No. 2

1981

Page 2: GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY SHAPESweb.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_3.pdf · GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY

What is the generalized Hough (Huff)

transform used for?

Hough transform is a way of encoding and detecting an arbitrary shape for later recall.

Used specifically for object matching.

Hough transform is invariant to scale changes, rotations, and foreground/background reversals.

Hough transform can handle reasonably small occlusions.

Hough transform can be easily composed form complex image recognition.

Page 3: GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY SHAPESweb.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_3.pdf · GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY

What is the procedure for a Hough

transform?

Transform

Threshold image to get a binary shape image.

Extract just the edge pixels of the shape image.

Create an R-Table of edge gradients that maps gradients to

parameter space in parameter space.

Create and fill an accumulator with values from the shape.

Recognition

Perform Hough transform for test shape and compare it’s

accumulator to the set of possible accumulators.

Page 4: GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY SHAPESweb.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_3.pdf · GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY

Original Hough Transform

(lines and circles)

Quick method to determine all of the lines in an edge image.

Change general equation of a line or circle into a parametric model

Create a parameter space accumulator.

For each point on the edge parameterize and add a vote to the histogram.

Page 6: GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY SHAPESweb.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_3.pdf · GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY

Another Example

Page 7: GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY SHAPESweb.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_3.pdf · GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY

General Hough Process

Page 8: GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY SHAPESweb.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_3.pdf · GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY

An analytic curve: f(a,x) = 0, a is parameter vector, x is pixel position

Let’s let φ(x) be the direction of the gradient.

Let’s also say that changes around the pixel in the x direction are so small we don’t care about them (i.e. df/dx=0 ) since we know the gradient we also know that dy/dx = tan(φ(x) - π/2).

Our algorithm for finding the shape histogram in parameter is space becomes:

For each x:

Find a such that, f(a,x) = 0, and df/dx=0

Add 1 to a’s entry in the accumulator (A[a]++).

Now that we have lines, let’s do an analytic

curve

Page 9: GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY SHAPESweb.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_3.pdf · GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY

So let’s show an example for an

analytic curve ( the ellipse )

For every edge element calculate

get edge dx and dy

b

a

(x0 y0)θ

Calculate gradient

Get x0 and y0 and

update accumulator

A[a]++

For every element in the

parameter space (a,b,θ)

Page 10: GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY SHAPESweb.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_3.pdf · GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY

So what about sample noise?

Ballard essentially shows that smoothing the

accumulator is compensates for small changes in

the parameter space.

Page 11: GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY SHAPESweb.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_3.pdf · GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY

Speed of Hough

But how long does this take? If we have m

parameters, each of which has M values, we

have Mm-1 entries in our accumulator.

However, if we have the gradient direction we

can reduce the parameter space so it only

takes O(Mm-2) for m ≥ 2!

Page 12: GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY SHAPESweb.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_3.pdf · GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY

Now for a non-analytic curve

(i.e. an arbitrary shape)

Let a = (y,s,θ) where y is a reference point, s is a scale factor, θ is

a rotation factor.

y = (xc yc)

φr

ß

r = √((x- xc)2+(y-yc)

2)

β = atan((y-yc)/(x-xc))

xc = x+rcos(β)

yc = y+rsin(β)x = (x,y)

This is slightly different than Ballard but is more intuitive.

Page 13: GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY SHAPESweb.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_3.pdf · GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY

0Δφ = 0˚ (r, β)

1Δφ = 10˚ (r, β)

2Δφ = 20˚ (r, β) (r, β)

… (r, β) (r, β)

(k-1)Δφ =170˚ (r, β) (r, β)

kΔφ =180˚ (r, β)

Computing R-Tables:

Associating edge gradient to reference point

Associate gradient direction with a set of parameters

Page 14: GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY SHAPESweb.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_3.pdf · GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY

Generalized Hough Transform

Build the R-Table

Build a 4 dimensional accumulator over (xc,yc,s,θ) (A[xc][yc][θ][s])

For each edge point (x,y) calculate the surface normal φ.

Lookup R table value for φ

For each pair of (r, β) in the R-Table at φ

Convert (r, β) to potential (xc,yc)

For each value of s’ between smax and smin in A

For each value of θ’ between θmax and θmin in A

Rotate and scale (xc,yc) to form (xc,yc)’

Add one to A[xc’][yc’][θ’][s’] = A[a]++

Local maxima in the accumulator represent the shape of the object!

Page 15: GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY SHAPESweb.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_3.pdf · GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY

Fun Facts about the Accumulator

It can detect shapes that have radial symmetry like donuts!

Page 16: GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY SHAPESweb.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_3.pdf · GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY

Hough Transform for Composite Shapes

Composite shape S with reference y

S2 with y2 S1 with y1

S is a shape

Rs(φ) is the R table of shape S

y is the reference point

let r1 = y – y1

let r2 = y – y2

We can also define shape as the difference of R tables:

Page 17: GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY SHAPESweb.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_3.pdf · GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY

When R Table approaches Break

Close Reference, Small Error

Far Reference, Large Error

Point is reference point

Shaded area is error.

Page 18: GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY SHAPESweb.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_3.pdf · GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY

Another approach: smoothing template

Hi(yi)= Smoothing template for a reference point

1. Construct smoothing template:

2. Make R table or each point, for each value of s, for each value of θ

3. Increment each entry in the parameter histogram A

4. Our new accumulator is As = A*H

Page 19: GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY SHAPESweb.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_3.pdf · GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY

Creating the H matrix

Page 20: GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY SHAPESweb.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_3.pdf · GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY

Accumulator Addition Strategies

A[a] = A[a] + c

Our regular approach

A[a] = A[a] + g(x)

Where g(x) is a function of the gradient magnitude.

A[a] = A[a] + g(x) + c

Similar to above

A[a] = A[a] + K

Where K is a value for local curvature. (We have a locally good fit)

Page 21: GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY SHAPESweb.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_3.pdf · GENERALIZING THE HOUGH TRANSFORM TO DETECT ARBITRARY

Improving Performance

Weight connected segments more

heavily than single pixels this

weight can be based on the

length of the edge from a pixel.

Weight more interesting sections

of the image