Edge Detection
|
|
|
|
Today’s reading |
|
Forsyth, chapters 8, 15.1 |
Edge detection
|
|
|
|
Convert a 2D image into a set of curves |
|
Extracts salient features of the scene |
|
More compact than pixels |
Origin of Edges
|
|
|
Edges are caused by a variety of
factors |
Edge detection
|
|
|
How can you tell that a pixel is on an
edge? |
Image gradient
|
|
|
The gradient of an image: |
|
|
|
|
|
The gradient points in the direction of
most rapid change in intensity |
The discrete gradient
|
|
|
|
How can we differentiate a digital
image f[x,y]? |
|
Option 1: reconstruct a continuous image, then take
gradient |
|
Option 2: take discrete derivative (finite
difference) |
The Sobel operator
|
|
|
|
Better approximations of the
derivatives exist |
|
The Sobel operators below are very
commonly used |
Effects of noise
|
|
|
|
Consider a single row or column of the
image |
|
Plotting intensity as a function of
position gives a signal |
Solution: smooth first
Derivative theorem of
convolution
|
|
|
This saves us one operation: |
Laplacian of Gaussian
2D edge detection filters
|
|
|
is the Laplacian operator: |
The Canny edge detector
The Canny edge detector
The Canny edge detector
Non-maximum suppression
|
|
|
|
Check if pixel is local maximum along
gradient direction |
|
requires checking interpolated pixels p
and r |
The Canny edge detector
Effect of s (Gaussian kernel size)
Scale space (Witkin 83)
|
|
|
|
Properties of scale space (w/ Gaussian
smoothing) |
|
edge position may shift with increasing
scale (s) |
|
two edges may merge with increasing
scale |
|
an edge may not split into two with
increasing scale |
Edge detection by
subtraction
Edge detection by
subtraction
Edge detection by
subtraction
Gaussian - image filter
An edge is not a line...
Finding lines in an image
|
|
|
|
Option 1: |
|
Search for the line at every possible
position/orientation |
|
What is the cost of this operation? |
|
|
|
Option 2: |
|
Use a voting scheme: Hough transform |
Finding lines in an image
|
|
|
|
|
Connection between image (x,y) and
Hough (m,b) spaces |
|
A line in the image corresponds to a
point in Hough space |
|
To go from image space to Hough space: |
|
given a set of points (x,y), find all
(m,b) such that y = mx + b |
Finding lines in an image
|
|
|
|
|
Connection between image (x,y) and
Hough (m,b) spaces |
|
A line in the image corresponds to a
point in Hough space |
|
To go from image space to Hough space: |
|
given a set of points (x,y), find all
(m,b) such that y = mx + b |
|
What does a point (x0, y0)
in the image space map to? |
Hough transform algorithm
|
|
|
|
Typically use a different
parameterization |
|
|
|
d is the perpendicular distance from
the line to the origin |
|
q is the angle this perpendicular makes with the x axis |
|
Why? |
Hough transform algorithm
|
|
|
|
|
|
Typically use a different
parameterization |
|
|
|
d is the perpendicular distance from
the line to the origin |
|
q is the angle this perpendicular makes with the x axis |
|
Why? |
|
Basic Hough transform algorithm |
|
Initialize H[d, q]=0 |
|
for each edge point I[x,y] in the image |
|
for q =
0 to 180 |
|
|
|
H[d, q]
+= 1 |
|
Find the value(s) of (d, q) where H[d, q] is maximum |
|
The detected line in the image is given
by |
|
What’s the running time (measured in #
votes)? |
Extensions
|
|
|
|
|
|
Extension 1: Use the image gradient |
|
same |
|
for each edge point I[x,y] in the image |
|
compute unique (d, q) based on image gradient at (x,y) |
|
H[d, q]
+= 1 |
|
same |
|
same |
|
What’s the running time measured in
votes? |
|
|
|
Extension 2 |
|
give more votes for stronger edges |
|
Extension 3 |
|
change the sampling of (d, q) to give more/less
resolution |
|
Extension 4 |
|
The same procedure can be used with
circles, squares, or any other shape |
Extensions
|
|
|
|
|
|
Extension 1: Use the image gradient |
|
same |
|
for each edge point I[x,y] in the image |
|
compute unique (d, q) based on image gradient at (x,y) |
|
H[d, q]
+= 1 |
|
same |
|
same |
|
What’s the running time measured in
votes? |
|
|
|
Extension 2 |
|
give more votes for stronger edges |
|
Extension 3 |
|
change the sampling of (d, q) to give more/less
resolution |
|
Extension 4 |
|
The same procedure can be used with
circles, squares, or any other shape |