SlideShare a Scribd company logo
Filtering
Let’s Take An Image
Let’s Fix Things
Slide Credit: D. Lowe
• We have noise in our image
• Let’s replace each pixel with a weighted
average of its neighborhood
• Weights are filter kernel
1/9 1/9 1/9
1/9 1/9 1/9
1/9 1/9 1/9
Out
1D Case
1/3 1/3 1/3
Filter/
David
Signal/
Front Row
10 12 9 11 10 11 12
Output 10.33 10.66 10 10.66 11
Applying a Linear Filter
I11 I12 I13
I21 I22 I23
I31 I32 I33
I14 I15 I16
I24 I25 I26
I34 I35 I36
I41 I42 I43
I51 I52 I53
I44 I45 I46
I54 I55 I56
Input
F11 F12 F13
F21 F22 F23
F31 F32 F33
Filter
O11 O12 O13
O21 O22 O23
O31 O32 O33
O14
O24
O34
Output
Applying a Linear Filter
I11 I12 I13
I21 I22 I23
I31 I32 I33
I14 I15 I16
I24 I25 I26
I34 I35 I36
I41 I42 I43
I51 I52 I53
I44 I45 I46
I54 I55 I56
Input & Filter
F11 F12 F13
F21 F22 F23
F31 F32 F33
Output
O11
O11 = I11*F11 + I12*F12 + … + I33*F33
Applying a Linear Filter
I11 I12 I13
I21 I22 I23
I31 I32 I33
I14 I15 I16
I24 I25 I26
I34 I35 I36
I41 I42 I43
I51 I52 I53
I44 I45 I46
I54 I55 I56
Input & Filter
F11 F12 F13
F21 F22 F23
F31 F32 F33
Output
O11
O12 = I12*F11 + I13*F12 + … + I34*F33
O12
Applying a Linear Filter
I11 I12 I13
I21 I22 I23
I31 I32 I33
I14 I15 I16
I24 I25 I26
I34 I35 I36
I41 I42 I43
I51 I52 I53
I44 I45 I46
I54 I55 I56
Input
F11 F12 F13
F21 F22 F23
F31 F32 F33
Filter Output
How many times can we apply a
3x3 filter to a 5x6 image?
Applying a Linear Filter
I11 I12 I13
I21 I22 I23
I31 I32 I33
I14 I15 I16
I24 I25 I26
I34 I35 I36
I41 I42 I43
I51 I52 I53
I44 I45 I46
I54 I55 I56
Input Output
Oij = Iij*F11 + Ii(j+1)*F12 + … + I(i+2)(j+2)*F33
O11 O12 O13
O21 O22 O23
O31 O32 O33
O14
O24
O34
F11 F12 F13
F21 F22 F23
F31 F32 F33
Filter
Painful Details – Edge Cases
f
g
g
g
g
f
g
g
g
g
f
g
g
g
g
full same valid
Convolution doesn’t keep the whole image.
Suppose f is the image and g the filter.
f/g Diagram Credit: D. Lowe
Full – any part of g touches f. Same – same size as f;
Valid – only when filter doesn’t fall off edge.
Painful Details – Edge Cases
What to about the “?” region?
Symm: fold sides over
pad/fill: add value, often 0
f
g
g
g
g
? ? ? ?
Circular/Wrap: wrap around
f/g Diagram Credit: D. Lowe
Painful Details – Does it Matter?
Input
Image
Box Filtered
???
Box Filtered
???
(I’ve applied the filter per-color channel)
Which padding did I use and why?
Note – this is a zoom of the filtered, not a filter of the zoomed
Painful Details – Does it Matter?
Input
Image
Box Filtered
Symm Pad
Box Filtered
Zero Pad
(I’ve applied the filter per-color channel)
Note – this is a zoom of the filtered, not a filter of the zoomed
Practice with Linear Filters
Slide Credit: D. Lowe
Original
?
0 0 0
0 1 0
0 0 0
Practice with Linear Filters
Slide Credit: D. Lowe
Original
0 0 0
0 1 0
0 0 0
The Same!
Practice with Linear Filters
Slide Credit: D. Lowe
Original
?
0 0 0
0 0 1
0 0 0
Practice with Linear Filters
Slide Credit: D. Lowe
Original
0 0 0
0 0 1
0 0 0
Shifted
LEFT
1 pixel
Practice with Linear Filters
Slide Credit: D. Lowe
Original
?
0 1 0
0 0 0
0 0 0
Practice with Linear Filters
Slide Credit: D. Lowe
Original
0 1 0
0 0 0
0 0 0
Shifted
DOWN
1 pixel
Practice with Linear Filters
?
Slide Credit: D. Lowe
Original
1/9 1/9 1/9
1/9 1/9 1/9
1/9 1/9 1/9
Practice with Linear Filters
Slide Credit: D. Lowe
Original
1/9 1/9 1/9
1/9 1/9 1/9
1/9 1/9 1/9
Blur
(Box Filter)
Practice with Linear Filters
?
Slide Credit: D. Lowe
Original
1/9 1/9 1/9
1/9 1/9 1/9
1/9 1/9 1/9
0 0 0
0 2 0
0 0 0
-
Practice with Linear Filters
Slide Credit: D. Lowe
Original
1/9 1/9 1/9
1/9 1/9 1/9
1/9 1/9 1/9
0 0 0
0 2 0
0 0 0
-
Sharpened
(Acccentuates
difference from
local average)
Sharpening
Slide Credit: D. Lowe
Properties – Linear
Assume: I image f1, f2 filters
Linear: apply(I,f1+f2) = apply(I,f1) + apply(I,f2)
I is a white box on black, and f1, f2 are rectangles
Note: I am showing filters un-normalized and blown up. They’re a
smaller box filter (i.e., each entry is 1/(size^2))
=
= +
=A( , )
+
A( , ) =
)+A(
A( , , )
Properties – Shift-Invariant
Assume: I image, f filter
Shift-invariant: shift(apply(I,f)) = apply(shift(I,f))
Intuitively: only depends on filter neighborhood
A( , ) =
A( , ) =
Painful Details – Signal Processing
Often called “convolution”. Actually cross-
correlation.
Cross-Correlation
(Original Orientation)
Convolution
(Flipped in x and y)
Properties of Convolution
• Any shift-invariant, linear operation is a convolution ( )
⁎
• Commutative: f g = g f
⁎ ⁎
• Associative: (f g) h = f (g h)
⁎ ⁎ ⁎ ⁎
• Distributes over +: f (g + h) = f g + f h
⁎ ⁎ ⁎
• Scalars factor out: kf g = f kg = k (f g)
⁎ ⁎ ⁎
• Identity (a single one with all zeros):
Property List: K. Grauman
=
*
Questions?
• Nearly everything onwards is a convolution.
• This is important to get right.
Smoothing With A Box
Intuition: if filter touches it, it gets a contribution.
Input Box Filter
Solution – Weighted Combination
Intuition: weight contributions according to
closeness to center.
𝐹𝑖𝑙𝑡𝑒𝑟𝑖𝑗 ∝1
𝐹𝑖𝑙𝑡𝑒𝑟𝑖𝑗 ∝exp ⁡
(−
𝑥2
+ 𝑦2
2 𝜎
2 )
What’s this?
Recognize the Filter?
𝐹𝑖𝑙𝑡𝑒𝑟𝑖𝑗 ∝
1
2𝜋 𝜎
2
exp⁡
(−
𝑥
2
+𝑦
2
2 𝜎
2 )
It’s a Gaussian!
0.003 0.013 0.022 0.013 0.003
0.013 0.060 0.098 0.060 0.013
0.022 0.098 0.162 0.098 0.022
0.013 0.060 0.098 0.060 0.013
0.003 0.013 0.022 0.013 0.003
Smoothing With A Box & Gauss
Still have some speckles, but it’s not a big box
Input Box Filter Gauss. Filter
Gaussian Filters
σ = 1
filter = 21x21
σ = 2
filter = 21x21
σ = 4
filter = 21x21
σ = 8
filter = 21x21
Note: filter visualizations are independently normalized throughout
the slides so you can see them better
Applying Gaussian Filters
Applying Gaussian Filters
Input Image
(no filter)
Applying Gaussian Filters
σ = 1
Applying Gaussian Filters
σ = 2
Applying Gaussian Filters
σ = 4
Applying Gaussian Filters
σ = 8
Picking a Filter Size
σ = 8, size = 21 σ = 8, size = 43
Too small filter → bad approximation
Want size ≈ 6σ (99.7% of energy)
Left far too small; right slightly too small!
Runtime Complexity
for ImageY in range(N):
for ImageX in range(N):
for FilterY in
range(M):
for FilterX in
range(M):
…
Time: O(N2
M2
)
I11 I12 I13
I21 I22 I23
I31 I32 I33
I14 I15 I16
I24 I25 I26
I34 I35 I36
I41 I42 I43 I44 I45 I46
I51 I52 I53 I54 I55 I56
F11 F12 F13
F21 F22 F23
F31 F32 F33
I61 I62 I63 I64 I65 I66
Image size = NxN = 6x6
Filter size = MxM = 3x3
Separability
Fy1
Fy2
Fy3
Fx1 Fx2 Fx3
⁎ =
Fx1 *
Fy1
Fx1 *
Fy2
Fx1 *
Fy3
Fx2 *
Fy1
Fx2 *
Fy2
Fx2 *
Fy3
Fx3 *
Fy1
Fx3 *
Fy2
Fx3 *
Fy3
Conv(vector, transposed vector) → outer product
Separability
𝐹𝑖𝑙𝑡𝑒𝑟𝑖𝑗 ∝
1
2𝜋 𝜎
2
exp⁡
(−
𝑥
2
+𝑦
2
2 𝜎
2 )
𝐹𝑖𝑙𝑡𝑒𝑟𝑖𝑗 ∝
1
√2𝜋 𝜎
exp(−
𝑥
2
2 𝜎
2 ) 1
√2 𝜋 𝜎
exp ⁡(−
𝑦
2
2 𝜎
2 )
→
Separability
⁎ =
1D Gaussian 1D Gaussian = 2D Gaussian
⁎
Image 2D Gauss = Image (1D Gauss 1D Gauss )
⁎ ⁎ ⁎
= (Image 1D Gauss) 1D Gauss
⁎ ⁎
Runtime Complexity
for ImageY in range(N):
for ImageX in range(N):
for FilterY in
range(M):
…
for ImageY in range(N):
for ImageX in range(N):
for FilterX in
range(M):
I11 I12 I13
I21 I22 I23
I31 I32 I33
I14 I15 I16
I24 I25 I26
I34 I35 I36
I41 I42 I43 I44 I45 I46
I51 I52 I53 I54 I55 I56
I61 I62 I63 I64 I65 I66
Image size = NxN = 6x6
Filter size = Mx1 = 3x1
F1
F2
F3
What are my compute
savings for a 13x13 filter?
Why Gaussian?
Gaussian filtering removes parts of the signal
above a certain frequency. Often noise is high
frequency and signal is low frequency.
Where Gaussian Fails
Applying Gaussian Filters
σ = 1
Why Does This Fail?
0.1 0.8 0.1
Filter
Signal 10 12 9 8 1000 11 10 12
Output 11.5 9.2 107.3 801.9 109.8 10.3
Means can be arbitrarily distorted by outliers
What else is an “average” other than a mean?
Non-linear Filters (2D)
[040, 081, 013, 125, 830, 076, 144, 092, 108]
92
Sort
[013, 040, 076, 081, 092, 108, 125, 144, 830]
[830, 076, 080, 092, 108, 095, 102, 106, 087]
[076, 080, 087, 092, 095, 102, 106, 108, 830]
Sort
95
40 81
125 830
144 92
13
76
108
22
80
95
132 102 106 87
Applying Median Filter
Median
Filter
(size=3)
Applying Median Filter
Median
Filter
(size = 7)
Is Median Filtering Linear?
Example from (I believe): Kristen Grauman
[
1 1 1
1 1 2
2 2 2] [
0 0 0
0 1 0
0 0 0]
+
[
1 1 1
1 2 2
2 2 2]
=
Median Filter
1 0 2
+ =
Some Examples of Filtering
Filtering – Sharpening
-
Image Smoothed
=
Details
Filtering – Sharpening
+α
Image Details
=
“Sharpened” α=1
Filtering – Sharpening
=
+α
Image Details
“Sharpened” α=0
Filtering – Sharpening
=
+α
Image Details
“Sharpened” α=2
Filtering – Sharpening
=
+α
Image Details
“Sharpened” α=0
Filtering – Extreme Sharpening
=
+α
Image Details
“Sharpened” α=10
Filtering
-1 0 1
Dx Dy
-1 0 1
T
What’s this Filter?
Filtering – Derivatives
(Dx2
+ Dy2
)1/2
Filtering – Counting
⁎ =
r=10
Pixels Disk ???
How many “on” pixels have
10+ neighbors within 10 pixels?
Filtering – Counting
How many “on” pixels have
10+ neighbors within 10 pixels?
x =
Pixels Answer
Density
Filtering – Missing Data
Oh no! Missing data!
(and we know where)
Common with many non-normal cameras (e.g., depth cameras)
Filtering – Missing Data
Binary
Mask
Image ⁎
⁎
Per-element /
Filtering – Missing Data
Binary
Mask
Image
Per-element /
Filtering – Missing Data
Before
Filtering – Missing Data
After
Filtering – Missing Data
After (without missing data)

More Related Content

Similar to Filtering in digital signal and image processing (20)

PPTX
Lecture_Spatial_Filters.pptx
mahirazainab
 
PPTX
DSP presentation_latest
Haowei Jiang
 
PPT
Filtering.ppt
Binish Raza
 
PPTX
Notes on image processing
Mohammed Kamel
 
PPT
Image Processing Definition Digital Image
AhmedRAZA493682
 
PPTX
03 image transformations_i
ankit_ppt
 
PDF
Lecture 4
Wael Sharba
 
PPT
Spatial filtering
Sanyam Agarwal
 
PDF
Analysis of Non Linear Filters with Various Density of Impulse Noise for Diff...
IJERA Editor
 
PPTX
SPATIAL FILTER
shalet kochumuttath Shaji
 
PPTX
2. filtering basics
Atul Kumar Jha
 
PPT
Computer Vision - Image Filters
Yoss Cohen
 
PDF
restoration_recon_chap5_GW.pdf
SUBHASHREEBASU5
 
PDF
Lec05 filter
BaliThorat1
 
PDF
PPT s04-machine vision-s2
Binus Online Learning
 
PPTX
Image enhancement techniques - Digital Image Processing
BharaniDharan195623
 
PDF
Edge detection
Edi Supriadi
 
PDF
DS-004-Robust Design
handbook
 
PDF
Dsp book ch15
thuhienptit2003
 
PPTX
Image_filtering (1).pptx
wdwd10
 
Lecture_Spatial_Filters.pptx
mahirazainab
 
DSP presentation_latest
Haowei Jiang
 
Filtering.ppt
Binish Raza
 
Notes on image processing
Mohammed Kamel
 
Image Processing Definition Digital Image
AhmedRAZA493682
 
03 image transformations_i
ankit_ppt
 
Lecture 4
Wael Sharba
 
Spatial filtering
Sanyam Agarwal
 
Analysis of Non Linear Filters with Various Density of Impulse Noise for Diff...
IJERA Editor
 
2. filtering basics
Atul Kumar Jha
 
Computer Vision - Image Filters
Yoss Cohen
 
restoration_recon_chap5_GW.pdf
SUBHASHREEBASU5
 
Lec05 filter
BaliThorat1
 
PPT s04-machine vision-s2
Binus Online Learning
 
Image enhancement techniques - Digital Image Processing
BharaniDharan195623
 
Edge detection
Edi Supriadi
 
DS-004-Robust Design
handbook
 
Dsp book ch15
thuhienptit2003
 
Image_filtering (1).pptx
wdwd10
 

More from Indra Hermawan (20)

PDF
L6 Visual Output LED_7SEGMEN_LEDMATRIX upate.pdf
Indra Hermawan
 
PDF
Organic Light Emitting Diode (OLED) for embedded system
Indra Hermawan
 
PDF
Organic Light Emitting Diode (OLED) in embedded system
Indra Hermawan
 
PDF
L6 Visual Output LED_7SEGMEN_LEDMATRIX upate.pdf
Indra Hermawan
 
PPTX
over or under fitting in neural network.pptx
Indra Hermawan
 
PPTX
transformations2 and fitting on image processing.pptx
Indra Hermawan
 
PPT
zigbee networks using xbee modules for wsn
Indra Hermawan
 
PDF
pengenalan mengnai ai dan machine learning
Indra Hermawan
 
PPTX
Market_Behavior_Analytics_AIoT TMJ 6A.pptx
Indra Hermawan
 
PPTX
7-1-Artificial Neural Network dan multilayer perceptron.pptx
Indra Hermawan
 
PPTX
ZigBee_Presentation sensor and cotrol network
Indra Hermawan
 
PPTX
ZigBee_Comprehensive_Presentation and implementaiton
Indra Hermawan
 
PPTX
Numerical Linear Algebra in digital image processing
Indra Hermawan
 
PPTX
Sistem Pengomposan Cerdas Berbasis IoT untuk Pengelolaan Sampah Organik Berke...
Indra Hermawan
 
PDF
introduction to camera, the operation of camera
Indra Hermawan
 
PDF
lab_linear_regression_hy539 (1)_221109_035050.pdf
Indra Hermawan
 
PPTX
perancangan program kerja KBK perancangan program kerja KBK perancangan progr...
Indra Hermawan
 
PPT
zigbee networks using xbee modules zigbee networks using xbee modules
Indra Hermawan
 
PPTX
lecture_8-wsn.pptx
Indra Hermawan
 
PPT
Trik Pembuatan Surat Lamaran Pekerjaan.ppt
Indra Hermawan
 
L6 Visual Output LED_7SEGMEN_LEDMATRIX upate.pdf
Indra Hermawan
 
Organic Light Emitting Diode (OLED) for embedded system
Indra Hermawan
 
Organic Light Emitting Diode (OLED) in embedded system
Indra Hermawan
 
L6 Visual Output LED_7SEGMEN_LEDMATRIX upate.pdf
Indra Hermawan
 
over or under fitting in neural network.pptx
Indra Hermawan
 
transformations2 and fitting on image processing.pptx
Indra Hermawan
 
zigbee networks using xbee modules for wsn
Indra Hermawan
 
pengenalan mengnai ai dan machine learning
Indra Hermawan
 
Market_Behavior_Analytics_AIoT TMJ 6A.pptx
Indra Hermawan
 
7-1-Artificial Neural Network dan multilayer perceptron.pptx
Indra Hermawan
 
ZigBee_Presentation sensor and cotrol network
Indra Hermawan
 
ZigBee_Comprehensive_Presentation and implementaiton
Indra Hermawan
 
Numerical Linear Algebra in digital image processing
Indra Hermawan
 
Sistem Pengomposan Cerdas Berbasis IoT untuk Pengelolaan Sampah Organik Berke...
Indra Hermawan
 
introduction to camera, the operation of camera
Indra Hermawan
 
lab_linear_regression_hy539 (1)_221109_035050.pdf
Indra Hermawan
 
perancangan program kerja KBK perancangan program kerja KBK perancangan progr...
Indra Hermawan
 
zigbee networks using xbee modules zigbee networks using xbee modules
Indra Hermawan
 
lecture_8-wsn.pptx
Indra Hermawan
 
Trik Pembuatan Surat Lamaran Pekerjaan.ppt
Indra Hermawan
 
Ad

Recently uploaded (20)

PPT
inherently safer design for engineering.ppt
DhavalShah616893
 
PPTX
MPMC_Module-2 xxxxxxxxxxxxxxxxxxxxx.pptx
ShivanshVaidya5
 
PDF
Set Relation Function Practice session 24.05.2025.pdf
DrStephenStrange4
 
DOCX
8th International Conference on Electrical Engineering (ELEN 2025)
elelijjournal653
 
PPTX
MobileComputingMANET2023 MobileComputingMANET2023.pptx
masterfake98765
 
PPTX
265587293-NFPA 101 Life safety code-PPT-1.pptx
chandermwason
 
PPTX
Thermal runway and thermal stability.pptx
godow93766
 
PPTX
原版一样(Acadia毕业证书)加拿大阿卡迪亚大学毕业证办理方法
Taqyea
 
PDF
Unified_Cloud_Comm_Presentation anil singh ppt
anilsingh298751
 
PDF
Water Design_Manual_2005. KENYA FOR WASTER SUPPLY AND SEWERAGE
DancanNgutuku
 
PPTX
EC3551-Transmission lines Demo class .pptx
Mahalakshmiprasannag
 
PDF
BioSensors glucose monitoring, cholestrol
nabeehasahar1
 
PPTX
Hashing Introduction , hash functions and techniques
sailajam21
 
PPT
Oxygen Co2 Transport in the Lungs(Exchange og gases)
SUNDERLINSHIBUD
 
PPTX
The Role of Information Technology in Environmental Protectio....pptx
nallamillisriram
 
PPTX
ISO/IEC JTC 1/WG 9 (MAR) Convenor Report
Kurata Takeshi
 
PDF
Introduction to Productivity and Quality
মোঃ ফুরকান উদ্দিন জুয়েল
 
PPTX
Green Building & Energy Conservation ppt
Sagar Sarangi
 
PPTX
Presentation on Foundation Design for Civil Engineers.pptx
KamalKhan563106
 
PDF
Book.pdf01_Intro.ppt algorithm for preperation stu used
archu26
 
inherently safer design for engineering.ppt
DhavalShah616893
 
MPMC_Module-2 xxxxxxxxxxxxxxxxxxxxx.pptx
ShivanshVaidya5
 
Set Relation Function Practice session 24.05.2025.pdf
DrStephenStrange4
 
8th International Conference on Electrical Engineering (ELEN 2025)
elelijjournal653
 
MobileComputingMANET2023 MobileComputingMANET2023.pptx
masterfake98765
 
265587293-NFPA 101 Life safety code-PPT-1.pptx
chandermwason
 
Thermal runway and thermal stability.pptx
godow93766
 
原版一样(Acadia毕业证书)加拿大阿卡迪亚大学毕业证办理方法
Taqyea
 
Unified_Cloud_Comm_Presentation anil singh ppt
anilsingh298751
 
Water Design_Manual_2005. KENYA FOR WASTER SUPPLY AND SEWERAGE
DancanNgutuku
 
EC3551-Transmission lines Demo class .pptx
Mahalakshmiprasannag
 
BioSensors glucose monitoring, cholestrol
nabeehasahar1
 
Hashing Introduction , hash functions and techniques
sailajam21
 
Oxygen Co2 Transport in the Lungs(Exchange og gases)
SUNDERLINSHIBUD
 
The Role of Information Technology in Environmental Protectio....pptx
nallamillisriram
 
ISO/IEC JTC 1/WG 9 (MAR) Convenor Report
Kurata Takeshi
 
Introduction to Productivity and Quality
মোঃ ফুরকান উদ্দিন জুয়েল
 
Green Building & Energy Conservation ppt
Sagar Sarangi
 
Presentation on Foundation Design for Civil Engineers.pptx
KamalKhan563106
 
Book.pdf01_Intro.ppt algorithm for preperation stu used
archu26
 
Ad

Filtering in digital signal and image processing

  • 3. Let’s Fix Things Slide Credit: D. Lowe • We have noise in our image • Let’s replace each pixel with a weighted average of its neighborhood • Weights are filter kernel 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 Out
  • 4. 1D Case 1/3 1/3 1/3 Filter/ David Signal/ Front Row 10 12 9 11 10 11 12 Output 10.33 10.66 10 10.66 11
  • 5. Applying a Linear Filter I11 I12 I13 I21 I22 I23 I31 I32 I33 I14 I15 I16 I24 I25 I26 I34 I35 I36 I41 I42 I43 I51 I52 I53 I44 I45 I46 I54 I55 I56 Input F11 F12 F13 F21 F22 F23 F31 F32 F33 Filter O11 O12 O13 O21 O22 O23 O31 O32 O33 O14 O24 O34 Output
  • 6. Applying a Linear Filter I11 I12 I13 I21 I22 I23 I31 I32 I33 I14 I15 I16 I24 I25 I26 I34 I35 I36 I41 I42 I43 I51 I52 I53 I44 I45 I46 I54 I55 I56 Input & Filter F11 F12 F13 F21 F22 F23 F31 F32 F33 Output O11 O11 = I11*F11 + I12*F12 + … + I33*F33
  • 7. Applying a Linear Filter I11 I12 I13 I21 I22 I23 I31 I32 I33 I14 I15 I16 I24 I25 I26 I34 I35 I36 I41 I42 I43 I51 I52 I53 I44 I45 I46 I54 I55 I56 Input & Filter F11 F12 F13 F21 F22 F23 F31 F32 F33 Output O11 O12 = I12*F11 + I13*F12 + … + I34*F33 O12
  • 8. Applying a Linear Filter I11 I12 I13 I21 I22 I23 I31 I32 I33 I14 I15 I16 I24 I25 I26 I34 I35 I36 I41 I42 I43 I51 I52 I53 I44 I45 I46 I54 I55 I56 Input F11 F12 F13 F21 F22 F23 F31 F32 F33 Filter Output How many times can we apply a 3x3 filter to a 5x6 image?
  • 9. Applying a Linear Filter I11 I12 I13 I21 I22 I23 I31 I32 I33 I14 I15 I16 I24 I25 I26 I34 I35 I36 I41 I42 I43 I51 I52 I53 I44 I45 I46 I54 I55 I56 Input Output Oij = Iij*F11 + Ii(j+1)*F12 + … + I(i+2)(j+2)*F33 O11 O12 O13 O21 O22 O23 O31 O32 O33 O14 O24 O34 F11 F12 F13 F21 F22 F23 F31 F32 F33 Filter
  • 10. Painful Details – Edge Cases f g g g g f g g g g f g g g g full same valid Convolution doesn’t keep the whole image. Suppose f is the image and g the filter. f/g Diagram Credit: D. Lowe Full – any part of g touches f. Same – same size as f; Valid – only when filter doesn’t fall off edge.
  • 11. Painful Details – Edge Cases What to about the “?” region? Symm: fold sides over pad/fill: add value, often 0 f g g g g ? ? ? ? Circular/Wrap: wrap around f/g Diagram Credit: D. Lowe
  • 12. Painful Details – Does it Matter? Input Image Box Filtered ??? Box Filtered ??? (I’ve applied the filter per-color channel) Which padding did I use and why? Note – this is a zoom of the filtered, not a filter of the zoomed
  • 13. Painful Details – Does it Matter? Input Image Box Filtered Symm Pad Box Filtered Zero Pad (I’ve applied the filter per-color channel) Note – this is a zoom of the filtered, not a filter of the zoomed
  • 14. Practice with Linear Filters Slide Credit: D. Lowe Original ? 0 0 0 0 1 0 0 0 0
  • 15. Practice with Linear Filters Slide Credit: D. Lowe Original 0 0 0 0 1 0 0 0 0 The Same!
  • 16. Practice with Linear Filters Slide Credit: D. Lowe Original ? 0 0 0 0 0 1 0 0 0
  • 17. Practice with Linear Filters Slide Credit: D. Lowe Original 0 0 0 0 0 1 0 0 0 Shifted LEFT 1 pixel
  • 18. Practice with Linear Filters Slide Credit: D. Lowe Original ? 0 1 0 0 0 0 0 0 0
  • 19. Practice with Linear Filters Slide Credit: D. Lowe Original 0 1 0 0 0 0 0 0 0 Shifted DOWN 1 pixel
  • 20. Practice with Linear Filters ? Slide Credit: D. Lowe Original 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9
  • 21. Practice with Linear Filters Slide Credit: D. Lowe Original 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 Blur (Box Filter)
  • 22. Practice with Linear Filters ? Slide Credit: D. Lowe Original 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 0 0 0 0 2 0 0 0 0 -
  • 23. Practice with Linear Filters Slide Credit: D. Lowe Original 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 0 0 0 0 2 0 0 0 0 - Sharpened (Acccentuates difference from local average)
  • 25. Properties – Linear Assume: I image f1, f2 filters Linear: apply(I,f1+f2) = apply(I,f1) + apply(I,f2) I is a white box on black, and f1, f2 are rectangles Note: I am showing filters un-normalized and blown up. They’re a smaller box filter (i.e., each entry is 1/(size^2)) = = + =A( , ) + A( , ) = )+A( A( , , )
  • 26. Properties – Shift-Invariant Assume: I image, f filter Shift-invariant: shift(apply(I,f)) = apply(shift(I,f)) Intuitively: only depends on filter neighborhood A( , ) = A( , ) =
  • 27. Painful Details – Signal Processing Often called “convolution”. Actually cross- correlation. Cross-Correlation (Original Orientation) Convolution (Flipped in x and y)
  • 28. Properties of Convolution • Any shift-invariant, linear operation is a convolution ( ) ⁎ • Commutative: f g = g f ⁎ ⁎ • Associative: (f g) h = f (g h) ⁎ ⁎ ⁎ ⁎ • Distributes over +: f (g + h) = f g + f h ⁎ ⁎ ⁎ • Scalars factor out: kf g = f kg = k (f g) ⁎ ⁎ ⁎ • Identity (a single one with all zeros): Property List: K. Grauman = *
  • 29. Questions? • Nearly everything onwards is a convolution. • This is important to get right.
  • 30. Smoothing With A Box Intuition: if filter touches it, it gets a contribution. Input Box Filter
  • 31. Solution – Weighted Combination Intuition: weight contributions according to closeness to center. 𝐹𝑖𝑙𝑡𝑒𝑟𝑖𝑗 ∝1 𝐹𝑖𝑙𝑡𝑒𝑟𝑖𝑗 ∝exp ⁡ (− 𝑥2 + 𝑦2 2 𝜎 2 ) What’s this?
  • 32. Recognize the Filter? 𝐹𝑖𝑙𝑡𝑒𝑟𝑖𝑗 ∝ 1 2𝜋 𝜎 2 exp⁡ (− 𝑥 2 +𝑦 2 2 𝜎 2 ) It’s a Gaussian! 0.003 0.013 0.022 0.013 0.003 0.013 0.060 0.098 0.060 0.013 0.022 0.098 0.162 0.098 0.022 0.013 0.060 0.098 0.060 0.013 0.003 0.013 0.022 0.013 0.003
  • 33. Smoothing With A Box & Gauss Still have some speckles, but it’s not a big box Input Box Filter Gauss. Filter
  • 34. Gaussian Filters σ = 1 filter = 21x21 σ = 2 filter = 21x21 σ = 4 filter = 21x21 σ = 8 filter = 21x21 Note: filter visualizations are independently normalized throughout the slides so you can see them better
  • 36. Applying Gaussian Filters Input Image (no filter)
  • 41. Picking a Filter Size σ = 8, size = 21 σ = 8, size = 43 Too small filter → bad approximation Want size ≈ 6σ (99.7% of energy) Left far too small; right slightly too small!
  • 42. Runtime Complexity for ImageY in range(N): for ImageX in range(N): for FilterY in range(M): for FilterX in range(M): … Time: O(N2 M2 ) I11 I12 I13 I21 I22 I23 I31 I32 I33 I14 I15 I16 I24 I25 I26 I34 I35 I36 I41 I42 I43 I44 I45 I46 I51 I52 I53 I54 I55 I56 F11 F12 F13 F21 F22 F23 F31 F32 F33 I61 I62 I63 I64 I65 I66 Image size = NxN = 6x6 Filter size = MxM = 3x3
  • 43. Separability Fy1 Fy2 Fy3 Fx1 Fx2 Fx3 ⁎ = Fx1 * Fy1 Fx1 * Fy2 Fx1 * Fy3 Fx2 * Fy1 Fx2 * Fy2 Fx2 * Fy3 Fx3 * Fy1 Fx3 * Fy2 Fx3 * Fy3 Conv(vector, transposed vector) → outer product
  • 44. Separability 𝐹𝑖𝑙𝑡𝑒𝑟𝑖𝑗 ∝ 1 2𝜋 𝜎 2 exp⁡ (− 𝑥 2 +𝑦 2 2 𝜎 2 ) 𝐹𝑖𝑙𝑡𝑒𝑟𝑖𝑗 ∝ 1 √2𝜋 𝜎 exp(− 𝑥 2 2 𝜎 2 ) 1 √2 𝜋 𝜎 exp ⁡(− 𝑦 2 2 𝜎 2 ) →
  • 45. Separability ⁎ = 1D Gaussian 1D Gaussian = 2D Gaussian ⁎ Image 2D Gauss = Image (1D Gauss 1D Gauss ) ⁎ ⁎ ⁎ = (Image 1D Gauss) 1D Gauss ⁎ ⁎
  • 46. Runtime Complexity for ImageY in range(N): for ImageX in range(N): for FilterY in range(M): … for ImageY in range(N): for ImageX in range(N): for FilterX in range(M): I11 I12 I13 I21 I22 I23 I31 I32 I33 I14 I15 I16 I24 I25 I26 I34 I35 I36 I41 I42 I43 I44 I45 I46 I51 I52 I53 I54 I55 I56 I61 I62 I63 I64 I65 I66 Image size = NxN = 6x6 Filter size = Mx1 = 3x1 F1 F2 F3 What are my compute savings for a 13x13 filter?
  • 47. Why Gaussian? Gaussian filtering removes parts of the signal above a certain frequency. Often noise is high frequency and signal is low frequency.
  • 50. Why Does This Fail? 0.1 0.8 0.1 Filter Signal 10 12 9 8 1000 11 10 12 Output 11.5 9.2 107.3 801.9 109.8 10.3 Means can be arbitrarily distorted by outliers What else is an “average” other than a mean?
  • 51. Non-linear Filters (2D) [040, 081, 013, 125, 830, 076, 144, 092, 108] 92 Sort [013, 040, 076, 081, 092, 108, 125, 144, 830] [830, 076, 080, 092, 108, 095, 102, 106, 087] [076, 080, 087, 092, 095, 102, 106, 108, 830] Sort 95 40 81 125 830 144 92 13 76 108 22 80 95 132 102 106 87
  • 54. Is Median Filtering Linear? Example from (I believe): Kristen Grauman [ 1 1 1 1 1 2 2 2 2] [ 0 0 0 0 1 0 0 0 0] + [ 1 1 1 1 2 2 2 2 2] = Median Filter 1 0 2 + =
  • 55. Some Examples of Filtering
  • 56. Filtering – Sharpening - Image Smoothed = Details
  • 57. Filtering – Sharpening +α Image Details = “Sharpened” α=1
  • 58. Filtering – Sharpening = +α Image Details “Sharpened” α=0
  • 59. Filtering – Sharpening = +α Image Details “Sharpened” α=2
  • 60. Filtering – Sharpening = +α Image Details “Sharpened” α=0
  • 61. Filtering – Extreme Sharpening = +α Image Details “Sharpened” α=10
  • 62. Filtering -1 0 1 Dx Dy -1 0 1 T What’s this Filter?
  • 64. Filtering – Counting ⁎ = r=10 Pixels Disk ??? How many “on” pixels have 10+ neighbors within 10 pixels?
  • 65. Filtering – Counting How many “on” pixels have 10+ neighbors within 10 pixels? x = Pixels Answer Density
  • 66. Filtering – Missing Data Oh no! Missing data! (and we know where) Common with many non-normal cameras (e.g., depth cameras)
  • 67. Filtering – Missing Data Binary Mask Image ⁎ ⁎ Per-element /
  • 68. Filtering – Missing Data Binary Mask Image Per-element /
  • 69. Filtering – Missing Data Before
  • 70. Filtering – Missing Data After
  • 71. Filtering – Missing Data After (without missing data)