video thumbnail 36:10
Convolutions in image processing | Week 1 | MIT 18.S191 Fall 2020 | Grant Sanderson

2020-09-03

[public] 293K views, 16.7K likes, 45.0 dislikes audio only

channel thumb3Blue1Brown

The basics of convolutions in the context of image processing.

For full course information, visit https://github.com/mitmath/computational-thinking/tree/Fall20

Course website: https://computationalthinking.mit.edu/Fall20/

To learn more about Julia, head to https://julialang.org

Next lecture: https://www.youtube.com/watch?v=rpB6zQNsbQU

Contents

00:00 Introduction

01:12 Box blur as an average

03:00 Dealing with the edges

04:31 Gaussian blur

05:30 Visualizing gaussian blur

06:04 Convolution

06:40 Kernels and the gaussian kernel

07:26 Looking at the convolution in Julia

08:45 Julia: `ImageFiltering` package and Kernels

09:08 Julia: `OffsetArray` with different indices

10:15 Visualizing a kernel

11:25 Computational complexity

12:00 Julia: `prod` function for a product

13:00 Example of a non-blurring kernel

16:00 Sharpening edges in an image

17:13 Edge detection with Sobel filters

21:25 Relation to polynomial multiplication

25:00 Convolution in polynomial multiplication

26:08 Relation to Fourier transforms

28:50 Fourier transform of an image

31:50 Convolution via Fourier transform is faster

34:00 Final thoughts

Want to help add timestamps to our YouTube videos to help with discoverability? Find out more here: https://github.com/JuliaCommunity/YouTubeVideoTimestamps

Interested in improving the auto generated captions? Get involved here: https://github.com/JuliaCommunity/YouTubeVideoSubtitles


Convolution
/youtube/video/8rrHTtUzyZA?t=364
Introduction
/youtube/video/8rrHTtUzyZA?t=0
Box blur as an average
/youtube/video/8rrHTtUzyZA?t=72
Dealing with the edges
/youtube/video/8rrHTtUzyZA?t=180
Gaussian blur
/youtube/video/8rrHTtUzyZA?t=271
Visualizing gaussian blur
/youtube/video/8rrHTtUzyZA?t=330
Kernels and the gaussian kernel
/youtube/video/8rrHTtUzyZA?t=400
Looking at the convolution in Julia
/youtube/video/8rrHTtUzyZA?t=446
Julia: `ImageFiltering` package and Kernels
/youtube/video/8rrHTtUzyZA?t=525
Julia: `OffsetArray` with different indices
/youtube/video/8rrHTtUzyZA?t=548
Visualizing a kernel
/youtube/video/8rrHTtUzyZA?t=615
Computational complexity
/youtube/video/8rrHTtUzyZA?t=685
Julia: `prod` function for a product
/youtube/video/8rrHTtUzyZA?t=720
Example of a non-blurring kernel
/youtube/video/8rrHTtUzyZA?t=780
Sharpening edges in an image
/youtube/video/8rrHTtUzyZA?t=960
Edge detection with Sobel filters
/youtube/video/8rrHTtUzyZA?t=1033
Relation to polynomial multiplication
/youtube/video/8rrHTtUzyZA?t=1285
Convolution in polynomial multiplication
/youtube/video/8rrHTtUzyZA?t=1500
Relation to Fourier transforms
/youtube/video/8rrHTtUzyZA?t=1568
Fourier transform of an image
/youtube/video/8rrHTtUzyZA?t=1730
Convolution via Fourier transform is faster
/youtube/video/8rrHTtUzyZA?t=1910
Final thoughts
/youtube/video/8rrHTtUzyZA?t=2040