Transcript Lecture 3
The University of
CS 4487/9587
Algorithms for Image Analysis
Image Processing Basics
Lecture 3
Lena Gorelick, substituting for Yuri Boykov
Acknowledgements: slides from Steven Seitz, Aleosha
Efros, David Forsyth, and Gonzalez & Woods
Ontario
The University of
CS 4487/9587 Algorithms for Image Analysis
Image Processing Basics
Ontario
Image Processing
• Domain Transformation
– Resize, Rotate etc.
• Range Transformation
– Point Processing
•
•
•
gamma correction
window-center correction
histogram equalization
Pixel location
g ( x , y ) f ( t x ( x , y ), t y ( x , y ))
g ( x, y ) f ( x, N y )
Pixel Intensity
g ( x , y ) t x , y ( f ( x , y ))
g ( x, y ) f ( x, y ) / 2
Window = 800
Center = 1160
The University of
CS 4487/9587 Algorithms for Image Analysis
Image Processing Basics
Ontario
Image Processing
• Domain Transformation
– Resize, Rotate etc.
• Range Transformation
– Point Processing
•
•
•
gamma correction
window-center correction
histogram equalization
g ( x , y ) f ( t x ( x , y ), t y ( x , y ))
g ( x , y ) f ( 2 x ,2 y )
g ( x , y ) t x , y ( f ( x , y ))
g ( x, y ) f ( x, y ) / 2
– Neighborhood Processing (Filtering)
The University of
Neighborhood Processing (or filtering)
What is wrong with this image?
Courtesy of Carlo Tomasi
Courtesy of Neel Joshi
How can we remove noise?
• Look spatially around each pixel - neighborhood
Can we use Point Processing?
Readings: Forsyth & Ponce, chapters 8.1-8.2
Ontario
The University of
Neighborhood Processing (or filtering)
Lets reshuffle all pixels within the image
Has Spatial Information
Looks noisy
Point Processing will have the same effect
• Gets intensity of a single pixel as an input
• Unaware of spatial information
Neighborhood Processing
• Takes “spatial information” into account
• Images contain “spatial information”
Readings: Forsyth & Ponce, chapters 8.1-8.2
Ontario
The University of
Neighborhood Processing (filtering)
Linear image transforms
Assume 1D function
f [i ]
Ontario
0
1
0
0
M
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
1
0
0
1
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
1
g M f ?
g [i ]
M [i , j ] f [ j ]
j
0
0
0
0
0
0
0
0
The University of
Neighborhood Processing (filtering)
Linear image transforms
Ontario
2
1
0
0
f [i ] M 1 / 2
0
0
0
0
Assume 1D function
0
0
0
0
0
0
1
0
0
0
0
0
1
1
0
0
0
0
0
0
1
0
1
1
0
1
0
0
0
0
0
0
0
1
1
0
0
0
0
0
1
1
0
0
0
0
0
1
g M f ?
g [i ]
M [i , j ] f [ j ]
j
0
0
0
0
0
0
0
1
The University of
Neighborhood Processing (filtering)
Linear shift-invariant filters
Ontario
matrix M
A commonly used pattern
Represented by a kernel
(or a mask) h [ a b c ]
*
a
0
0
M
0
0
0
0
*
0
0
0
0
0
b
c
0
0
0
0
a
b
c
0
0
0
0
0
a
0
b
a
c
b
0
c
0
0
0
0
0
a
b
c
0
0
0
0
a
b
0
0
0
0
0
*
0
0
0
0
0
0
0
*
(i - 1) i (i + 1)
For 2k+1 size kernel
g M f
k
g [i ]
uk
h [u ] f [i u ]
The University of
Neighborhood Processing (filtering)
2D filtering
Ontario
A 2D function f [ i , j ]
Can be filtered by a 2D filter (kernel)
To get a new image
k
g [i , j ]
h[ u , v ]
k
h [u , v ] f [i u , j v ]
uk vk
This is called a cross-correlation operation
Or a sliding dot-product
g h f
The University of
Neighborhood Processing (filtering)
2D filtering
Ontario
Cross-correlation in which the filter is flipped
horizontally and vertically is called convolution
g h* f
k
k
g [i , j ]
h[ u , v ] f [ i u , j v ]
uk vk
k
k
uk vk
h [u , v ] f [i u , j v ]
The University of
Neighborhood Processing (filtering)
Convolution vs. Cross-Correlation
If the kernel is symmetric
h (u , v ) h ( u , v )
convolution = cross-correlation
Ontario
Neighborhood Processing
2D filtering
Noise
Types of noise:
• Salt and pepper noise
• Impulse noise
• Gaussian noise
Due to
•
•
•
•
transmission errors
dead CCD pixels
specks on lens
can be specific to a sensor
The University of
Ontario
The University of
Neighborhood Processing
Practical Noise Reduction
How can we
remove noise?
Replace each pixel with
the average of a
kxk window around it
Ontario
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 100 130 110 120 110 0
0
0
0
0 110 90 100 90 100 0
0
0
0
0 130 100 104
90 130 110 0
0
0
0
0 120 100 130 110 120 0
0
0
0
0 90 110 80 120 100 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
The University of
Neighborhood Processing (filtering)
Mean filtering
Ontario
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 90 90 90 90 90 0
0
0
0
0 90 90 90 90 90 0
0
0
0
0 90 90 90 90 90 0
0
0
0
0 90 0 90 90 90 0
0
0
0
0 90 90 90 90 90 0
0
0
0
0
0
0
0
0
0
0
0
0
0 90 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
f [ x, y ]
g[ x, y ]
The University of
Neighborhood Processing (filtering)
Mean filtering
Ontario
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 10 20 30 30 30 20 10
0
0
0 90 90 90 90 90 0
0
0 20 40 60 60 60 40 20
0
0
0 90 90 90 90 90 0
0
0 30 60 90 90 90 60 30
0
0
0 90 90 90 90 90 0
0
0 30 50 80 80 90 60 30
0
0
0 90 0 90 90 90 0
0
0 30 50 80 80 90 60 30
0
0
0 90 90 90 90 90 0
0
0 20 30 50 50 60 40 20
0
0
0
0
0
0
0
0
0
0
10 20 30 30 30 30 20 10
0
0 90 0
0
0
0
0
0
0
10 10 10 0
0
0
0
0
0
0
0
0
0
0
f [ x, y ]
0
g[ x, y ]
0
0
0
The University of
Neighborhood Processing (filtering)
Effect of mean filters
Gaussian noise
Salt & Pepper noise
3x3
Side effect - blur
Ontario
5x5
7x7
The University of
Neighborhood Processing (filtering)
Mean kernel
Ontario
What’s the kernel for a 3x3 mean filter?
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 90 90 90 90 90 0
0
0
0
0 90 90 90 90 90 0
0
0
0
0 90 90 90 90 90 0
0
0
0
0 90 0 90 90 90 0
0
0
0
0 90 90 90 90 90 0
0
0
0
0
0
0
0
0
0
0
0
0
0 90 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
f [ x, y ]
h[ u , v ]
The University of
Neighborhood Processing (filtering)
Mean kernel
Ontario
What’s the kernel for a 3x3 mean filter?
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 90 90 90 90 90 0
0
0
0
0 90 90 90 90 90 0
0
1/9 1/9 1/9
0
0
0 90 90 90 90 90 0
0
1/9 1/9 1/9
0
0
0 90 0 90 90 90 0
0
1/9 1/9 1/9
0
0
0 90 90 90 90 90 0
0
h[ u , v ]
0
0
0
0
0
0
0
0
0
0
0
0 90 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
f [ x, y ]
The University of
Neighborhood Processing (filtering)
Mean kernel
Ontario
What’s the kernel for a 3x3 mean filter?
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 90 90 90 90 90 0
0
0
0
0 90 90 90 90 90 0
0
0
0
0 90 90 90 90 90 0
0
0
0
0 90 0 90 90 90 0
0
1 1 1
0
0
0 90 90 90 90 90 0
0
h[ u , v ]
0
0
0
0
0
0
0
0
0
0
0
0 90 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
f [ x, y ]
1 1 1
1/9
1 1 1
Equal weight to all pixels
within the neighborhood
The University of
Neighborhood Processing (filtering)
Gaussian Filtering
Ontario
A Gaussian kernel gives less weight to pixels
0 0 0 0 0 0 0 0 0 0 further from the center
0 0 0 0 0 0 0 0 0 0 of the window
0
0
0 90 90 90 90 90 0
0
0
0
0 90 90 90 90 90 0
0
0
0
0 90 90 90 90 90 0
0
0
0
0 90 0 90 90 90 0
0
1 2 1
0
0
0 90 90 90 90 90 0
0
h[ u , v ]
0
0
0
0
0
0
0
0
0
0
0
0 90 0
0
0
0
0
0
0
is a discrete approximation
of a Gaussian function:
0
0
0
0
0
0
0
0
0
0
f [ x, y ]
1 2 1
1
16
2
4 2
The University of
Neighborhood Processing (filtering)
Mean vs. Gaussian filtering
Ontario
Input image
Mean Filtering
Mean filter, 20x20
Gaussian filtering
Gaussian filter, 20x20, σ = 5
The University of
Neighborhood Processing (filtering)
Mean vs. Gaussian filtering
Ontario
The University of
Neighborhood Processing (filtering)
Gaussian Filtering
Ontario
Low-pass filter
Smooth color variation (low
frequency) is preserved
Sharp edges (high frequency) are
removed
The University of
Neighborhood Processing (filtering)
Median filters
Ontario
A Median Filter operates over a window by
selecting the median intensity in the window.
Image credit: Wikipedia – page
on Median Filter
The University of
Neighborhood Processing (filtering)
Median filters
Ontario
Is a median filter a kind of convolution?
No, median filter is an example of non-linear
filtering
Median ( f 1 ( x ) f 2 ( x )) Median ( f 1 ( x )) Median ( f 2 ( x ))
1
1 Median ( 1
1
1
1
Median ( 0
1
0
3
1
1
0
1
1
1 ) Median ( 0
1
1
1
0
0 ) Median ( 1
0
1
0
1
0
1
2
1
1 0
0 1
1 0
1
2
1
0
1 )
0
0
1 ) 11 2
0
The University of
Salt&Pepper
Noise
Ontario
The University of
Gaussian
noise
Ontario
The University of
Neighborhood Processing (filtering)
Median filters
What advantage does a median filter have
over a mean filter?
Better at removing Salt & Pepper noise
Disadvantage:
Slow
Ontario
The University of
Neighborhood Processing (filtering)
Derivatives and Convolution
Image Derivatives and Gradients
• Used for Edge/Corner Detection
• Computed with Finite Differences Filters
Laplacian of Gaussians (LoG) Filter
• Used for Edge/Blob Detection and
Image Enhancement
• Approximated using Difference of Gaussians
Ontario
The University of
Reading: Forsyth & Ponce, 8.1-8.2
First Derivative
Ontario
Recall Sharp changes in gray level of the input
image correspond to “peaks or valleys” of the
first-derivative of the input signal.
http://www.cse.psu.edu/~rcollins/CSE486/lecture11_6pp.pdf
The University of
Reading: Forsyth & Ponce, 8.1-8.2
First Derivative and convolution
x
f ( x h, y ) f ( x, y )
f lim
h 0
h
How can we approximate it
for a discrete function?
Is this operation shift-invariant?
Is it linear?
?
?
?
?
?
?
?
?
?
x [u , v ]
Ontario
The University of
Reading: Forsyth & Ponce, 8.1-8.2
First Derivative and convolution
Finite Difference
Ontario
f ( x a) f ( x b)
x
h[ f ]
h
f ( x h) f ( x)
h
h
f ' ( x )
0
x-h
x-h/2
x+h
x
x
x+h/2
Slide credit: Wikipedia
The University of
Reading: Forsyth & Ponce, 8.1-8.2
First Derivative and convolution
Ontario
Finite Difference – The order of an error
can be derived using Taylor Theorem
Slide credit: Wikipedia
The University of
Reading: Forsyth & Ponce, 8.1-8.2
First Derivative and convolution
Ontario
Pixel Size x h
Using Finite Central Difference
x
f
f ( x x, y ) f ( x x, y )
We need a kernel
x
2 x
x
such that
0 0 0
1
f x f
2x
1 0 -1
0 0 0
x [u , v ]
The University of
Neighborhood Processing (filtering)
Finite differences – responds to edges
Dark = negative
White = positive
Gray = 0
x f
Ontario
The University of
Neighborhood Processing (filtering)
Finite differences - responding to noise
x f
x f
Increasing noise ->
(this is zero mean additive gaussian noise)
Ontario
x f
The University of
Neighborhood Processing (filtering)
Finite differences and noise
Ontario
Finite difference filters respond strongly to noise
• Noisy pixels look very different from their neighbours
• The larger the noise the stronger is the response
How can we eliminate the response to noise?
• Most pixels in images look similar to their neighbours (even at an edge)
• Smooth the image (mean/gaussian filtering)
The University of
Neighborhood Processing (filtering)
Smoothing and Differentiation
Smoothing before differentiation = two convolutions
x (H f )
Convolution is associative
x ( H f ) ( x H ) f
( x H )
( y H )
Ontario
The University of
Neighborhood Processing (filtering)
Smoothing and Differentiation
Ontario
( x H ) f
1 pixel
3 pixels
7 pixels
The scale of the smoothing filter affects derivative estimates, and also
the semantics of the edges recovered.
The University of
Neighborhood Processing (filtering)
Sobel kernels
Ontario
Yet another approximation frequently used
x
f
1 0 -1
1
8 x
y
2 0 -2
1
8 y
f
1 2 1
0 0 0
1 0 -1
-1 -2 -1
x [u , v ]
y [u , v ]
The University of
Neighborhood Processing (filtering)
Image Gradients
Ontario
Recall for a function of two variables f ( x , y )
The gradient at a point (x,y)
fx
x
f f
y
y
Gradient Magnitude
|| f ||
f
f
f
f
x
y
f
y
f
( x ) ( y )
2
2
( x f ) ( y f )
2
x
2
Gradient Orientation
• direction of the “steepest ascend”
• orthogonal to object boundaries in the image
small image
gradients in low
textured areas
The University of
Neighborhood Processing (filtering)
Image Gradient for Edge Detection
Ontario
Typical application where image gradients are used
is image edge detection
• find points with large image gradients
Canny edge detector suppresses
non-extrema Gradient points
The University of
Reading: Forsyth & Ponce, 8.1-8.2
Second derivatives and convolution
Ontario
Peaks or valleys of the first-derivative of the input
signal, correspond to “zero-crossings” of the
second-derivative of the input signal.
http://www.cse.psu.edu/~rcollins/CSE486/lecture11_6pp.pdf
The University of
Neighborhood Processing (filtering)
Second derivatives and convolution
Ontario
http://www.cse.psu.edu/~rcollins/CSE486/lecture11_6pp.pdf
The University of
Neighborhood Processing (filtering)
Second derivatives and convolution
Ontario
Better localized edges
But more sensitive to
noise
http://www.cse.psu.edu/~rcollins/CSE486/lecture11_6pp.pdf
The University of
Neighborhood Processing (filtering)
Second derivatives and convolution
Ontario
http://www.cse.psu.edu/~rcollins/CSE486/lecture11_6pp.pdf
The University of
Neighborhood Processing (filtering)
Second Image Derivatives
f f f
2
Laplace operator
f
2
f
x
2
f
2
y
2
Ontario
[ x
x
] f f
y
y
“divergence
of gradient”
rotationally invariant
second derivative for 2D functions
0 0 0
-1 2 -1
0 -1 0
0 2 0
0 0 0
0 -1 0
Finite Difference
Second Order
Derivative in x
Finite Difference
Second Order
Derivative in y
0 -1 0
-1 4 -1
0 -1 0
The University of
Neighborhood Processing (filtering)
Second Image Derivatives
Ontario
f
2
f
2
Laplacian Zero Crossing f
Used for edge detection
(alternative to computing Gradient extrema)
x
2
y
2
image f
intensity
magnitude of ||
image gradient
http://homepages.inf.ed.ac.uk/rbf/HIPR2/zeros.htm
Laplacian
(2nd derivative)
of the image
f ||
f
The University of
Neighborhood Processing (filtering)
Laplacian Filtering
Ontario
-Zero on uniform regions
-Positive on one side of an edge
-Negative on the other side
-Zero at some point in between
on the edge itself
band-pass filter (Suppresses both high and low frequencies)
http://www.cse.psu.edu/~rcollins/CSE486/lecture11_6pp.pdf
The University of
Neighborhood Processing (filtering)
Laplacian of a Gaussian (LoG)
Smooth before differentiation
(remember associative property of convolution)
LoG ( x , y )
1
x y
1
e
2
2
2
4
2
2
x y
2
Ontario
G LoG
2
2
http://www.cse.psu.edu/~rcollins/CSE486/lecture11_6pp.pdf
The University of
Neighborhood Processing (filtering)
Laplacian of a Gaussian (LoG)
Ontario
Suppresses both high and low frequencies
http://www.cse.psu.edu/~rcollins/CSE486/lecture11_6pp.pdf
The University of
Neighborhood Processing (filtering)
Laplacian of a Gaussian (LoG)
Ontario
http://www.cse.psu.edu/~rcollins/CSE486/lecture11_6pp.pdf
The University of
Neighborhood Processing (filtering)
Laplacian of a Gaussian (LoG)
Ontario
http://www.cse.psu.edu/~rcollins/CSE486/lecture11_6pp.pdf
The University of
Neighborhood Processing (filtering)
Laplacian of a Gaussian (LoG)
Ontario
Can be approximated by a difference of two
Gaussians (DoG)
http://www.cse.psu.edu/~rcollins/CSE486/lecture11_6pp.pdf
The University of
Neighborhood Processing (filtering)
DoG vs. LoG
Ontario
Separable (product decomposition) more efficient
Can explain band-pass filter since Gaussian is a lowpass filter.
http://www.cse.psu.edu/~rcollins/CSE486/lecture11_6pp.pdf
The University of
Neighborhood Processing (filtering)
LoG for Blob Detection
Ontario
Cross correlation with a filter can be viewed as
comparing a little “picture” of what you want to find
against all local regions in the image.
Scale of blob (size ; radius in pixels)
is determined by the sigma parameter
of the LoG filter.
http://www.cse.psu.edu/~rcollins/CSE486/lecture11_6pp.pdf
The University of
Neighborhood Processing (filtering)
LoG for Blob Detection
Ontario
http://www.cse.psu.edu/~rcollins/CSE486/lecture11_6pp.pdf
The University of
Reading: Forsyth & Ponce ch.7.5
Filters and Templates
Ontario
Recall: filtering = cross-correlation = dot-product
f(x,y)
(x,y)
h* f
g(x,y)
(x,y)
Correlation
Filter Mask
Input Image
f w f w ( x, y )
arccos
h fw
|| h |||| f w ||
Output Image
g ( x , y ) cos( )
Measures the angle between two vectors:
the filter and the image window
Measures visual similarity
The University of
Neighborhood Processing (filtering)
Template Matching
Ontario
Since we divide by the norm
Normalized cross-correlation
f w f w ( x, y )
arccos
h fw
|| h |||| f w ||
Bring the template and the image to a uniform scale:
subtract the mean and divide by the variance
h( x, y )
f ( x, y )
http://scien.stanford.edu/pages/labsite/2008/psych221/projects/08/MariaJabon/index.htm
The University of
Neighborhood Processing (filtering)
Template Matching
Normalized cross-correlation
Ontario
f w f w ( x, y )
arccos
h fw
|| h |||| f w ||
Extremely time consuming due to sliding window
g cos( )
f
| g | 1
h
Slide credit: Matlab manual
The University of
Neighborhood Processing (filtering)
Template Matching
Ontario
g cos( )
h
f
Slide credit: OpenCV manual