prof. dr. anderson rocharocha/teaching/2013s1/mc851/aulas/20… · aula #4. pixels and image...
TRANSCRIPT
Prof. Dr. Anderson Rocha
Microsoft Research Faculty Fellow Affiliate Member, Brazilian Academy of Sciences
Reasoning for Complex Data (Recod) Lab. Institute of Computing, University of Campinas (Unicamp)
Campinas, SP, Brazil
[email protected] http://www.ic.unicamp.br/~rocha
MC851 - Projetos em Computação Visão Computacional
Aula #4
Pixels and Image Filters This lecture slides were made based on slides of several researchers such as James Hayes, Derek Hoiem, Alexei Efros, Steve Seitz, David Forsyth and many others. Many thanks to all of these authors.
Reading: Szeliski, Chapter 3, Secs. 3.2
Filtering
• Image filters in spa0al domain – Filter is a mathema0cal opera0on of a grid of numbers
– Smoothing, sharpening, measuring texture
• Templates and Image Pyramids – Filtering is a way to match a template to the image
– Detec0on, coarse-‐to-‐fine registra0on
Image filtering
• Image filtering: compute func0on of local neighborhood at each posi0on
• Really important! – Enhance images
• Denoise, resize, increase contrast, etc. – Extract informa0on from images
• Texture, edges, dis0nc0ve points, etc. – Detect paHerns
• Template matching
1 1 1
1 1 1
1 1 1
Slide credit: David Lowe (UBC)
],[g ⋅⋅
Example: box 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
0
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
Credit: S. Seitz
],[],[],[,
lnkmflkgnmhlk
++=∑
[.,.]h[.,.]f
Image filtering 1 1 1
1 1 1
1 1 1
],[g ⋅⋅
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
0 10
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
[.,.]h[.,.]f
Image filtering 1 1 1
1 1 1
1 1 1
],[g ⋅⋅
Credit: S. Seitz
],[],[],[,
lnkmflkgnmhlk
++=∑
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
0 10 20
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
[.,.]h[.,.]f
Image filtering 1 1 1
1 1 1
1 1 1
],[g ⋅⋅
Credit: S. Seitz
],[],[],[,
lnkmflkgnmhlk
++=∑
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
0 10 20 30
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
[.,.]h[.,.]f
Image filtering 1 1 1
1 1 1
1 1 1
],[g ⋅⋅
Credit: S. Seitz
],[],[],[,
lnkmflkgnmhlk
++=∑
0 10 20 30 30
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
[.,.]h[.,.]f
Image filtering 1 1 1
1 1 1
1 1 1
],[g ⋅⋅
Credit: S. Seitz
],[],[],[,
lnkmflkgnmhlk
++=∑
0 10 20 30 30
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
[.,.]h[.,.]f
Image filtering 1 1 1
1 1 1
1 1 1
],[g ⋅⋅
Credit: S. Seitz
?
],[],[],[,
lnkmflkgnmhlk
++=∑
0 10 20 30 30
50
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
[.,.]h[.,.]f
Image filtering 1 1 1
1 1 1
1 1 1
],[g ⋅⋅
Credit: S. Seitz
?
],[],[],[,
lnkmflkgnmhlk
++=∑
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
0 10 20 30 30 30 20 10
0 20 40 60 60 60 40 20
0 30 60 90 90 90 60 30
0 30 50 80 80 90 60 30
0 30 50 80 80 90 60 30
0 20 30 50 50 60 40 20
10 20 30 30 30 30 20 10
10 10 10 0 0 0 0 0
[.,.]h[.,.]f
Image filtering 1 1 1 1 1 1 1 1 1 ],[g ⋅⋅
Credit: S. Seitz
],[],[],[,
lnkmflkgnmhlk
++=∑
What does it do? • Replaces each pixel with
an average of its neighborhood
• Achieve smoothing effect (remove sharp features)
1 1 1
1 1 1
1 1 1
Slide credit: David Lowe (UBC)
],[g ⋅⋅
Box Filter
Smoothing with box filter
One more on board…
Prac0ce with linear filters
0 0 0
0 1 0
0 0 0
Original
?
Source: D. Lowe
Prac0ce with linear filters
0 0 0
0 1 0
0 0 0
Original Filtered (no change)
Source: D. Lowe
Prac0ce with linear filters
0 0 0
1 0 0
0 0 0
Original
?
Source: D. Lowe
Prac0ce with linear filters
0 0 0
1 0 0
0 0 0
Original Shifted left By 1 pixel
Source: D. Lowe
Prac0ce with linear filters
Original
1 1 1 1 1 1 1 1 1
0 0 0 0 2 0 0 0 0 - ?
(Note that filter sums to 1)
Source: D. Lowe
Prac0ce with linear filters
Original
1 1 1 1 1 1 1 1 1
0 0 0 0 2 0 0 0 0 -
Sharpening filter - Accentuates differences with local average
Source: D. Lowe
Sharpening
Source: D. Lowe
Other filters
-1 0 1
-2 0 2
-1 0 1
Vertical Edge (absolute value)
Sobel
Other filters
-1 -2 -1
0 0 0
1 2 1
Horizontal Edge (absolute value)
Sobel
• Weight contribu0ons of neighboring pixels by nearness
0.003 0.013 0.022 0.013 0.003 0.013 0.059 0.097 0.059 0.013 0.022 0.097 0.159 0.097 0.022 0.013 0.059 0.097 0.059 0.013 0.003 0.013 0.022 0.013 0.003
5 x 5, σ = 1
Slide credit: Christopher Rasmussen
Important filter: Gaussian
Smoothing with Gaussian filter
Smoothing with box filter
Gaussian filters • Remove “high-‐frequency” components from the image (low-‐pass filter) – Images become smoother
• Convolu0on with self is another Gaussian – So can smooth with small-‐width kernel, repeat, and get same result as larger-‐width kernel would have
– Convolving two 0mes with Gaussian kernel of width σ is same as convolving once with kernel of width
• Separable kernel – Factors into product of two 1D Gaussians
Source: K. Grauman
�p2
How big should the filter be? • Values at edges should be near zero • Rule of thumb for Gaussian: set filter half-‐width to about 3 σ
Prac0cal maHers
Prac0cal maHers • What about near the edge?
– the filter window falls off the edge of the image – need to extrapolate – methods:
• clip filter (black) • wrap around • copy edge • reflect across edge
Source: S. Marschner
Prac0cal maHers
– methods (MATLAB): • clip filter (black): imfilter(f, g, 0) • wrap around: imfilter(f, g, ‘circular’) • copy edge: imfilter(f, g, ‘replicate’) • reflect across edge: imfilter(f, g, ‘symmetric’)
Source: S. Marschner
Q?
Prac0cal maHers • What is the size of the output? • MATLAB: filter2(g, f, shape)
– shape = ‘full’: output size is sum of sizes of f and g – shape = ‘same’: output size is same as f – shape = ‘valid’: output size is difference of sizes of f and g
f
g g
g g
f
g g
g g
f
g g
g g
full same valid
Source: S. Lazebnik
Class Implementa0on Gaussian Filter!
Laplacian Filter!
A. Oliva, A. Torralba, P.G. Schyns, “Hybrid Images,” SIGGRAPH 2006
Gaussian unit impulse Laplacian of Gaussian
Take-‐home messages • Image is a matrix of numbers
• Linear filtering is sum of dot product at each posi0on – Can smooth, sharpen, translate (among many other uses)
• Be aware of details for filter size, extrapola0on, cropping
1 1 1
1 1 1
1 1 1
0.92 0.93 0.94 0.97 0.62 0.37 0.85 0.97 0.93 0.92 0.99
0.95 0.89 0.82 0.89 0.56 0.31 0.75 0.92 0.81 0.95 0.91
0.89 0.72 0.51 0.55 0.51 0.42 0.57 0.41 0.49 0.91 0.92
0.96 0.95 0.88 0.94 0.56 0.46 0.91 0.87 0.90 0.97 0.95
0.71 0.81 0.81 0.87 0.57 0.37 0.80 0.88 0.89 0.79 0.85
0.49 0.62 0.60 0.58 0.50 0.60 0.58 0.50 0.61 0.45 0.33
0.86 0.84 0.74 0.58 0.51 0.39 0.73 0.92 0.91 0.49 0.74
0.96 0.67 0.54 0.85 0.48 0.37 0.88 0.90 0.94 0.82 0.93
0.69 0.49 0.56 0.66 0.43 0.42 0.77 0.73 0.71 0.90 0.99
0.79 0.73 0.90 0.67 0.33 0.61 0.69 0.79 0.73 0.93 0.97
0.91 0.94 0.89 0.49 0.41 0.78 0.78 0.77 0.89 0.99 0.93
=