3. 3
How to filter
2d Correlation
h=filter2(g,f); or h=imfilter(f,g);
2d Convolution
h=conv2(g,f);
],[],[],[
,
lnkmflkgnmh
lk
−−= ∑
f=image
g=filter
],[],[],[
,
lnkmflkgnmh
lk
++= ∑
4. 4
Correlation filtering
Say the averaging window size is 2k+1 x 2k+1:
Loop over all pixels in neighborhood around
image pixel F[i,j]
Attribute uniform
weight to each pixel
Now generalize to allow different weights depending on
neighboring pixel’s relative position:
Non-uniform weights
5. 5
Correlation filtering
Filtering an image: replace each pixel with a linear
combination of its neighbors.
The filter “kernel” or “mask” H[u,v] is the prescription for the
weights in the linear combination.
This is called cross-correlation, denoted
6. 6
Properties of smoothing filters
Smoothing
Values positive
Sum to 1 constant regions same as input
Amount of smoothing proportional to mask size
Remove “high-frequency” components; “low-pass” filter
7. 7
Filtering an impulse signal
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 1 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
a b c
d e f
g h i
What is the result of filtering the impulse signal
(image) F with the arbitrary kernel H?
?
8. 8
Filtering an impulse signal
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 1 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
a b c
d e f
g h i
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 i h g 0 0
0 0 f e d 0 0
0 0 c b a 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
What is the result of filtering the impulse signal
(image) F with the arbitrary kernel H?
15. 15
Gaussian filters
What parameters matter here?
Size of kernel or mask
Note, Gaussian function has infinite support, but discrete
filters use finite kernels
σ = 5 with
10 x 10
kernel
σ = 5 with
30 x 30
kernel
16. 16
Gaussian filters
What parameters matter here?
Variance of Gaussian: determines extent of
smoothing
σ = 2 with
30 x 30
kernel
σ = 5 with
30 x 30
kernel
18. 18
Smoothing with a Gaussian
for sigma=1:3:10
h = fspecial('gaussian‘, fsize, sigma);
out = imfilter(im, h);
imshow(out);
pause;
end
…
Parameter σ is the “scale” / “width” / “spread” of the Gaussian
kernel, and controls the amount of smoothing.
19. 19
Gaussian filters
• Remove “high-frequency” components from the
image (low-pass filter)
Images become more smooth
• Convolution 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 times with Gaussian kernel of width σ
is same as convolving once with kernel of width σ√2
• Separable kernel
–Factors into product of two 1D Gaussians
Source: K. Grauman
21. 21
Separability example
*
*
=
=
2D convolution
(center location only)
Source: K. Grauman
The filter factors
into a product of 1D
filters:
Perform convolution
along rows:
Followed by convolution
along the remaining column:
22. 22
Convolution
Convolution:
Flip the filter in both dimensions (bottom to top, right to left)
Then apply cross-correlation
Notation for
convolution
operator
F
H
24. 24
Key properties of linear filters
Linearity:
filter(f1 + f2) = filter(f1) + filter(f2)
Shift invariance: same behavior
regardless of pixel location
filter(shift(f)) = shift(filter(f))
Any linear, shift-invariant operator can be
represented as a convolution
Source: S. Lazebnik
25. 25
More properties
• Commutative: a * b = b * a
Conceptually no difference between filter and signal
But particular filtering implementations might break this equality
• Associative: a * (b * c) = (a * b) * c
Often apply several filters one after another: (((a * b1) * b2) * b3)
This is equivalent to applying one filter: a * (b1 * b2 * b3)
• Distributes over addition: a * (b + c) = (a * b) + (a * c)
• Scalars factor out: ka * b = a * kb = k (a * b)
• Identity: unit impulse e = [0, 0, 1, 0, 0],
a * e = a Source: S. Lazebnik
31. 31
Practical matters
What happens 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
33. 33
Practical matters
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
gg
gg
f
gg
gg
f
gg
gg
full same valid
34. 34
Median filters
A Median Filter operates over a window by
selecting the median intensity in the window.
What advantage does a median filter have
over a mean filter?
Is a median filter a kind of convolution?
37. 37
Median Filter Example
%%Median
imrgb = imread('peppers.png');
imgray =
im2double(rgb2gray(imrgb));
imnoise = imnoise(imgray,'salt &
pepper',0.1);
imshow(imnoise)
figure
imshow(medfilt2(imnoise))
38. 38
Basic Filters summary
Linear filtering is sum of dot
product at each position
Can smooth, sharpen, translate
(among many other uses)
Be aware of details for filter size,
extrapolation, cropping
111
111
111
Notas del editor
e^0 = 1, e^-1 = .37, e^-2 = .14, etc.
In matlab, conv2 does convolution, filter2 does correlation. Imfilter does either if specified, correlation by default (‘conv’, ‘corr’ option)
Linear vs. quadratic in mask size
f is image
Better at salt’n’pepper noise
Not convolution: try a region with 1’s and a 2, and then 1’s and a 3