edge detection
DESCRIPTION
Edge Detection. CSEP 576 Ali Farhadi. Edge. Attneave's Cat (1954) . Origin of edges. surface normal discontinuity. depth discontinuity. surface color discontinuity. illumination discontinuity. Edges are caused by a variety of factors. intensity function (along horizontal scanline). - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/1.jpg)
Edge Detection
CSEP 576Ali Farhadi
![Page 2: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/2.jpg)
Edge
Attneave's Cat (1954)
![Page 3: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/3.jpg)
Edges are caused by a variety of factors
depth discontinuity
surface color discontinuity
illumination discontinuity
surface normal discontinuity
Origin of edges
![Page 4: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/4.jpg)
Characterizing edges• An edge is a place of rapid change in the
image intensity function
imageintensity function
(along horizontal scanline) first derivative
edges correspond toextrema of derivative
![Page 5: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/5.jpg)
• The gradient of an image:
• The gradient points in the direction of most rapid change in intensity
Image gradient
![Page 6: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/6.jpg)
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”)
![Page 7: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/7.jpg)
The gradient direction is given by:
How does this relate to the direction of the edge?
The edge strength is given by the gradient magnitude
Image gradient
How would you implement this as a filter?
![Page 8: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/8.jpg)
Sobel operator
-1 0 1
-2 0 2
-1 0 1
-1 -2 -1
0 0 0
1 2 1
Magnitude:
Orientation:
In practice, it is common to use:
![Page 9: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/9.jpg)
Sobel operator
Original OrientationMagnitude
![Page 10: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/10.jpg)
Effects of noise• Consider a single row or column of the image
– Plotting intensity as a function of position gives a signal
Where is the edge?
![Page 11: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/11.jpg)
Effects of noise
• Difference filters respond strongly to noise– Image noise results in pixels that look very
different from their neighbors– Generally, the larger the noise the stronger the
response• What can we do about it?
Source: D. Forsyth
![Page 12: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/12.jpg)
Where is the edge?
Solution: smooth first
Look for peaks in
![Page 13: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/13.jpg)
• Differentiation is convolution, and convolution is associative:
• This saves us one operation:
gdxdfgf
dxd
)(
Derivative theorem of convolution
gdxdf
f
gdxd
Source: S. SeitzHow can we find (local) maxima of a function?
![Page 14: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/14.jpg)
Remember:Derivative of Gaussian filter
x-direction y-direction
![Page 15: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/15.jpg)
Laplacian of Gaussian• Consider
Laplacian of Gaussianoperator
Where is the edge? Zero-crossings of bottom graph
![Page 16: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/16.jpg)
2D edge detection filters
is the Laplacian operator:
Laplacian of Gaussian
Gaussian derivative of Gaussian
![Page 17: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/17.jpg)
Edge detection by subtraction
original
![Page 18: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/18.jpg)
Edge detection by subtraction
smoothed (5x5 Gaussian)
![Page 19: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/19.jpg)
Edge detection by subtraction
smoothed – original(scaled by 4, offset +128)
Why doesthis work?
![Page 20: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/20.jpg)
Gaussian - image filter
Laplacian of Gaussian
Gaussian delta function
![Page 21: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/21.jpg)
Canny edge detector
• This is probably the most widely used edge detector in computer vision
J. Canny, A Computational Approach To Edge Detection, IEEE Trans. Pattern Analysis and Machine Intelligence, 8:679-714, 1986.
Source: L. Fei-Fei
![Page 22: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/22.jpg)
The Canny edge detector
• original image (Lena)
![Page 23: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/23.jpg)
The Canny edge detector
norm of the gradient
![Page 24: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/24.jpg)
The Canny edge detector
thresholding
![Page 25: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/25.jpg)
Get Orientation at Each Pixel
theta = atan2(-gy, gx)
![Page 26: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/26.jpg)
The Canny edge detector
![Page 27: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/27.jpg)
Non-maximum suppression
• Check if pixel is local maximum along gradient direction
Picture from Prem K Kalra
![Page 28: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/28.jpg)
Canny Edges
![Page 29: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/29.jpg)
Effect of (Gaussian kernel spread/size)
Canny with Canny with original
The choice of depends on desired behavior• large detects large scale edges• small detects fine features
![Page 30: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/30.jpg)
An edge is not a line...
How can we detect lines ?
![Page 31: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/31.jpg)
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
![Page 32: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/32.jpg)
• 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
x
y
m
b
m0
b0
image space Hough space
Finding lines in an image
![Page 33: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/33.jpg)
• 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?
x
y
m
b
image space Hough space
– A: the solutions of b = -x0m + y0
– this is a line in Hough space
x0
y0
Finding lines in an image
![Page 34: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/34.jpg)
Hough transform algorithm• Typically use a different parameterization
– d is the perpendicular distance from the line to the origin
– is the angle
![Page 35: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/35.jpg)
Hough transform algorithm• Basic Hough transform algorithm
1. Initialize H[d, ]=02. for each edge point I[x,y] in the image
for = 0 to 180
H[d, ] += 1
3. Find the value(s) of (d, ) where H[d, ] is maximum4. The detected line in the image is given by
• What’s the running time (measured in # votes)?
![Page 36: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/36.jpg)
Hough transform algorithm
http://www.cs.utah.edu/~vpegorar/courses/cs7966/
![Page 37: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/37.jpg)
Hough transform algorithm
http://www.cs.utah.edu/~vpegorar/courses/cs7966/
![Page 38: Edge Detection](https://reader036.vdocuments.us/reader036/viewer/2022081604/56816348550346895dd3d73a/html5/thumbnails/38.jpg)
Extensions• Extension 1: Use the image gradient
1. same2. for each edge point I[x,y] in the image
compute unique (d, ) based on image gradient at (x,y) H[d, ] += 1
3. same4. same
• What’s the running time measured in votes?
• Extension 2– give more votes for stronger edges
• Extension 3– change the sampling of (d, ) to give more/less resolution
• Extension 4– The same procedure can be used with circles, squares, or any other
shape, How?