+ All Categories
Home > Documents > LAST TIME APPLICATION: EDGE DETECTIONayan/courses/cse559a/PDFs/lec... · 2019-09-05 · BILATERAL...

LAST TIME APPLICATION: EDGE DETECTIONayan/courses/cse559a/PDFs/lec... · 2019-09-05 · BILATERAL...

Date post: 01-Aug-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
21
CSE 559A: Computer Vision Fall 2020: T-R: 11:30-12:50pm @ Wrighton 300 / Zoom Instructor: Ayan Chakrabarti ([email protected]). Course Sta: Adith Boloor, Patrick Williams Sep 24, 2020 http://www.cse.wustl.edu/~ayan/courses/cse559a/ 1 ADMINISTRIVIA ADMINISTRIVIA REMINDER: Oice Hours start this Friday. Zoom link available through Canvas. Received your problem set 0 solutions. Will be giving individual feedback Soon. Meanwhile, a few points: Make sure your write-up is named solution.pdf, and not something else. Make sure you git add the solution.pdf file before commit & push. We need the PDF, not just the .tex. Don’t rename the .py files. Your submitted code should be added in to the original prob?.py files. Be a little careful about googling for answers to specific questions. Problem set 0 was pretty basic, so both were the same. But in problem set 1, don’t google: how to implement histogram equalization! Stack overflow type web-sites can especially get problematic sometimes. Do not use OpenCV! You have to implement everything using numpy / scipy. The point is to know how computer vision algorithms work and are implemented. 2 LAST TIME LAST TIME Talked about point-wise operations. Began talking about eicient implementations in numpy (with parallel elementwise operations, reshapes, and broadcasting). 3 POINTWISE OPERATIONS IN NUMPY POINTWISE OPERATIONS IN NUMPY Images themselves are arrays not matrices. (In numpy, * does element-wise multiply, np.matmul does matrix multiplication). But for such linear operations, we can form matrices by stacking all pixel locations, in some pre-determined order, as rows. Represent as: matrix: color images vector: grayscale images. 4
Transcript
Page 1: LAST TIME APPLICATION: EDGE DETECTIONayan/courses/cse559a/PDFs/lec... · 2019-09-05 · BILATERAL FILTERING 72 BILATERAL FILTERING Guided Bilateral Filter: based on a separate image

CSE 559A: Computer Vision

Fall 2020: T-R: 11:30-12:50pm @ Wrighton 300 / Zoom

Instructor: Ayan Chakrabarti ([email protected]).Course Staff: Adith Boloor, Patrick Williams

Sep 24, 2020

http://www.cse.wustl.edu/~ayan/courses/cse559a/

1

ADMINISTRIVIAADMINISTRIVIAREMINDER: Office Hours start this Friday. Zoom link available through Canvas.

Received your problem set 0 solutions. Will be giving individual feedback Soon.Meanwhile, a few points:

Make sure your write-up is named solution.pdf, and not something else.Make sure you git add the solution.pdf file before commit & push. We need the PDF, not just the .tex.Don’t rename the .py files. Your submitted code should be added in to the original prob?.py files.Be a little careful about googling for answers to specific questions. Problem set 0 was pretty basic, so bothwere the same. But in problem set 1, don’t google: how to implement histogram equalization!

Stack overflow type web-sites can especially get problematic sometimes.Do not use OpenCV! You have to implement everything using numpy / scipy. The point is to know howcomputer vision algorithms work and are implemented.

2

LAST TIMELAST TIMETalked about point-wise operations.Began talking about efficient implementations in numpy (with parallel elementwise operations, reshapes,and broadcasting).

3

POINTWISE OPERATIONS IN NUMPYPOINTWISE OPERATIONS IN NUMPYImages themselves are arrays not matrices. (In numpy, * does element-wise multiply, np.matmul doesmatrix multiplication).But for such linear operations, we can form matrices by stacking all pixel locations, in some pre-determinedorder, as rows. Represent as:

matrix: color images

vector: grayscale images.

X

(HW) × 3

(HW) × 1

Y[n] = C X[n] ⇒ Y =  ?     

4

Page 2: LAST TIME APPLICATION: EDGE DETECTIONayan/courses/cse559a/PDFs/lec... · 2019-09-05 · BILATERAL FILTERING 72 BILATERAL FILTERING Guided Bilateral Filter: based on a separate image

POINTWISE OPERATIONS IN NUMPYPOINTWISE OPERATIONS IN NUMPYImages themselves are arrays not matrices. (In numpy, * does element-wise multiply, np.matmul doesmatrix multiplication).But for such linear operations, we can form matrices by stacking all pixel locations, in some pre-determinedorder, as rows. Represent as:

matrix: color images

vector: grayscale images.

X

(HW) × 3

(HW) × 1

Y[n] = C X[n] ⇒ Y = X CT

# Begin with X as (H,W,3) array

Xflt = np.reshape(X,(-1,3)) # Flatten X to a (H*W, 3) matrix

Yflt = np.matmul(Xflt,C.T) # Post-multiply by C

Y = np.reshape(Yflt,X.shape) # Turn Y back to an image array

5

POINTWISE OPERATIONS IN NUMPYPOINTWISE OPERATIONS IN NUMPYOne last trick: what if your pointwise function is a lookup table (for grayscale images).Assume that you are trying to map all intensities in an array X, which is of type integer (uint8, etc.), and youhave a lookup table as a vector H, where you want to map an intensity f to H[f].So what you want to do is: Y[i,j] = H[X[i,j]]You can do this simply as Y = H[X]. Y will be the same shape as X (and not H).

6

CONVOLUTIONCONVOLUTION

7

CONVOLUTIONCONVOLUTION

8

Page 3: LAST TIME APPLICATION: EDGE DETECTIONayan/courses/cse559a/PDFs/lec... · 2019-09-05 · BILATERAL FILTERING 72 BILATERAL FILTERING Guided Bilateral Filter: based on a separate image

CONVOLUTIONCONVOLUTION

9

CONVOLUTIONCONVOLUTION

10

CONVOLUTIONCONVOLUTION

11

CONVOLUTIONCONVOLUTION

12

Page 4: LAST TIME APPLICATION: EDGE DETECTIONayan/courses/cse559a/PDFs/lec... · 2019-09-05 · BILATERAL FILTERING 72 BILATERAL FILTERING Guided Bilateral Filter: based on a separate image

CONVOLUTIONCONVOLUTION

13

CONVOLUTIONCONVOLUTION

14

CONVOLUTIONCONVOLUTION

15

CONVOLUTIONCONVOLUTION

Double summation over the support / size of the kernel

We assume is scalar vaued.

If is scalar, so is .

If is a color image, each channel convolved with independently.

To go from m to n channels in a “conv layer”: is matrix valued, and is a matrix-vector product.

Notation: Y = X ∗ k

Y[n] = k[ ]  X[n − ]∑n′

n′

n′

Y[ , ] =      k[ ,   ]  X[( − ),  ( − )]nx ny ∑n′x

∑n′y

n′x n′y nx n′x ny n′y

k

k[n] ∈ ℝ

X[n] Y[n]

X k

k[n] ∈ ℝn×mk[ ] X[n − ]n

′n

16

Page 5: LAST TIME APPLICATION: EDGE DETECTIONayan/courses/cse559a/PDFs/lec... · 2019-09-05 · BILATERAL FILTERING 72 BILATERAL FILTERING Guided Bilateral Filter: based on a separate image

CONVOLUTIONCONVOLUTION

17

CONVOLUTIONCONVOLUTION

18

CONVOLUTIONCONVOLUTION

19

CONVOLUTIONCONVOLUTION

20

Page 6: LAST TIME APPLICATION: EDGE DETECTIONayan/courses/cse559a/PDFs/lec... · 2019-09-05 · BILATERAL FILTERING 72 BILATERAL FILTERING Guided Bilateral Filter: based on a separate image

CONVOLUTIONCONVOLUTION

21

CONVOLUTIONCONVOLUTION

22

CONVOLUTIONCONVOLUTION

23

CONVOLUTIONCONVOLUTION

24

Page 7: LAST TIME APPLICATION: EDGE DETECTIONayan/courses/cse559a/PDFs/lec... · 2019-09-05 · BILATERAL FILTERING 72 BILATERAL FILTERING Guided Bilateral Filter: based on a separate image

CONVOLUTIONCONVOLUTION

25

CONVOLUTIONCONVOLUTION

26

CONVOLUTIONCONVOLUTION

27

CONVOLUTIONCONVOLUTION

28

Page 8: LAST TIME APPLICATION: EDGE DETECTIONayan/courses/cse559a/PDFs/lec... · 2019-09-05 · BILATERAL FILTERING 72 BILATERAL FILTERING Guided Bilateral Filter: based on a separate image

CONVOLUTIONCONVOLUTION

29

CONVOLUTIONCONVOLUTION

30

CONVOLUTIONCONVOLUTION

31

CONVOLUTION: PROPERTIESCONVOLUTION: PROPERTIESLet , , and denote full, valid, and same convolution (with zero padding for full and same)

Linear / Distributive: For scalars ;

If , then:

If and , ( , same size):

If and , ( , same size):

X k∗full

X k∗val

X k∗same

α, β

Y = X ∗ k   X ∗ (αk) = (αX) ∗ k = αY

= X ∗Y1 k1 = X ∗Y2 k2 k1 k2   X ∗ (α + β ) = α + βk1 k2 Y1 Y2

= ∗ kY1 X1 = ∗ kY2 X2 X1 X2   (α + β ) ∗ k = α + βX1 X2 Y1 Y2

X ∗ (α + β ) [n] = (α [ ] + β [ ])X[n − ]k1 k2 ∑n′

k1 n′

k2 n′

n′

= α [ ]X[n − ] + β [ ]X[n − ]∑n′

k1 n′

n′

∑n′

k2 n′

n′

32

Page 9: LAST TIME APPLICATION: EDGE DETECTIONayan/courses/cse559a/PDFs/lec... · 2019-09-05 · BILATERAL FILTERING 72 BILATERAL FILTERING Guided Bilateral Filter: based on a separate image

CONVOLUTION: PROPERTIESCONVOLUTION: PROPERTIESLet , , and denote full, valid, and same convolution (with zero padding for full and same)

Linear / Distributive: For scalars ;

If , then:

If and , ( , same size):

If and , ( , same size):

Associative

X k∗full

X k∗val

X k∗same

α, β

Y = X ∗ k   X ∗ (αk) = (αX) ∗ k = αY

= X ∗Y1 k1 = X ∗Y2 k2 k1 k2   X ∗ (α + β ) = α + βk1 k2 Y1 Y2

= ∗ kY1 X1 = ∗ kY2 X2 X1 X2   (α + β ) ∗ k = α + βX1 X2 Y1 Y2

(X ) = X ( )∗fullk1 ∗

fullk2 ∗

fullk1 ∗full

k2

(X ) = X ( )∗valk1 ∗

valk2 ∗

valk1 ∗full

k2

(X ) ≠ X ( )∗samek1 ∗

samek2 ∗

samek1 ∗full

k2

(X )   [n] = [ ](X ∗ )[n − ] = [ ] [ ]X[n − − ]∗fullk1 ∗

fullk2 ∑

n′

k2 n′

k1 n′

∑n′

k2 n′

∑n″

k1 n″

n′

n″

= ( [ ] [( + ) − ])X[n − ( + )]∑+n′ n″∑n′

k2 n′k1 n

′n″

n′

n′

n″

33

CONVOLUTION: PROPERTIESCONVOLUTION: PROPERTIESLet , , and denote full, valid, and same convolution (with zero padding for full and same)

Linear / Distributive: For scalars ;

If , then:

If and , ( , same size):

If and , ( , same size):

Associative

Commutative:

X k∗full

X k∗val

X k∗same

α, β

Y = X ∗ k   X ∗ (αk) = (αX) ∗ k = αY

= X ∗Y1 k1 = X ∗Y2 k2 k1 k2   X ∗ (α + β ) = α + βk1 k2 Y1 Y2

= ∗ kY1 X1 = ∗ kY2 X2 X1 X2   (α + β ) ∗ k = α + βX1 X2 Y1 Y2

(X ) = X ( )∗fullk1 ∗

fullk2 ∗

fullk1 ∗full

k2

(X ) = X ( )∗valk1 ∗

valk2 ∗

valk1 ∗full

k2

(X ) ≠ X ( )∗samek1 ∗

samek2 ∗

samek1 ∗full

k2

    =k1 ∗fullk2 k2 ∗full

k1

(X ) = (X )∗fullk1 ∗

fullk2 ∗

fullk2 ∗

fullk1

(X ) = (X )∗valk1 ∗

valk2 ∗

valk2 ∗

valk1

(X ) ≠ (X )∗samek1 ∗

samek2 ∗

samek2 ∗

samek1

34

CONVOLUTIONCONVOLUTION

35

Page 10: LAST TIME APPLICATION: EDGE DETECTIONayan/courses/cse559a/PDFs/lec... · 2019-09-05 · BILATERAL FILTERING 72 BILATERAL FILTERING Guided Bilateral Filter: based on a separate image

CONVOLUTIONCONVOLUTION

36

CONVOLUTIONCONVOLUTION

37

CONVOLUTIONCONVOLUTION

38

CONVOLUTIONCONVOLUTION

39

Page 11: LAST TIME APPLICATION: EDGE DETECTIONayan/courses/cse559a/PDFs/lec... · 2019-09-05 · BILATERAL FILTERING 72 BILATERAL FILTERING Guided Bilateral Filter: based on a separate image

CONVOLUTIONCONVOLUTION

40

CONVOLUTIONCONVOLUTION

41

CONVOLUTIONCONVOLUTION

42

CONVOLUTIONCONVOLUTION

43

Page 12: LAST TIME APPLICATION: EDGE DETECTIONayan/courses/cse559a/PDFs/lec... · 2019-09-05 · BILATERAL FILTERING 72 BILATERAL FILTERING Guided Bilateral Filter: based on a separate image

CONVOLUTIONCONVOLUTION

44

CONVOLUTIONCONVOLUTION

45

CONVOLUTIONCONVOLUTION

46

CONVOLUTIONCONVOLUTION

47

Page 13: LAST TIME APPLICATION: EDGE DETECTIONayan/courses/cse559a/PDFs/lec... · 2019-09-05 · BILATERAL FILTERING 72 BILATERAL FILTERING Guided Bilateral Filter: based on a separate image

CONVOLUTIONCONVOLUTION

48

CONVOLUTIONCONVOLUTION

49

CONVOLUTIONCONVOLUTION

50

CONVOLUTIONCONVOLUTION

51

Page 14: LAST TIME APPLICATION: EDGE DETECTIONayan/courses/cse559a/PDFs/lec... · 2019-09-05 · BILATERAL FILTERING 72 BILATERAL FILTERING Guided Bilateral Filter: based on a separate image

CONVOLUTIONCONVOLUTION

52

CONVOLUTIONCONVOLUTION

53

CONVOLUTIONCONVOLUTION

54

CONVOLUTIONCONVOLUTION

55

Page 15: LAST TIME APPLICATION: EDGE DETECTIONayan/courses/cse559a/PDFs/lec... · 2019-09-05 · BILATERAL FILTERING 72 BILATERAL FILTERING Guided Bilateral Filter: based on a separate image

CONVOLUTIONCONVOLUTION

56

CONVOLUTIONCONVOLUTION

57

CONVOLUTIONCONVOLUTION

58

CONVOLUTIONCONVOLUTION

59

Page 16: LAST TIME APPLICATION: EDGE DETECTIONayan/courses/cse559a/PDFs/lec... · 2019-09-05 · BILATERAL FILTERING 72 BILATERAL FILTERING Guided Bilateral Filter: based on a separate image

CONVOLUTIONCONVOLUTION

60

APPLICATION: EDGE DETECTIONAPPLICATION: EDGE DETECTION

61

APPLICATION: EDGE DETECTIONAPPLICATION: EDGE DETECTION

62

APPLICATION: EDGE DETECTIONAPPLICATION: EDGE DETECTION

63

Page 17: LAST TIME APPLICATION: EDGE DETECTIONayan/courses/cse559a/PDFs/lec... · 2019-09-05 · BILATERAL FILTERING 72 BILATERAL FILTERING Guided Bilateral Filter: based on a separate image

APPLICATION: EDGE DETECTIONAPPLICATION: EDGE DETECTION

64

APPLICATION: EDGE DETECTIONAPPLICATION: EDGE DETECTION

65

APPLICATION: EDGE DETECTIONAPPLICATION: EDGE DETECTION

66

APPLICATION: EDGE DETECTIONAPPLICATION: EDGE DETECTION

67

Page 18: LAST TIME APPLICATION: EDGE DETECTIONayan/courses/cse559a/PDFs/lec... · 2019-09-05 · BILATERAL FILTERING 72 BILATERAL FILTERING Guided Bilateral Filter: based on a separate image

APPLICATION: EDGE DETECTIONAPPLICATION: EDGE DETECTION

68

APPLICATION: EDGE DETECTIONAPPLICATION: EDGE DETECTION

69

APPLICATION: EDGE DETECTIONAPPLICATION: EDGE DETECTION

70

APPLICATION: EDGE DETECTIONAPPLICATION: EDGE DETECTION

71

Page 19: LAST TIME APPLICATION: EDGE DETECTIONayan/courses/cse559a/PDFs/lec... · 2019-09-05 · BILATERAL FILTERING 72 BILATERAL FILTERING Guided Bilateral Filter: based on a separate image

APPLICATION: EDGE DETECTIONAPPLICATION: EDGE DETECTION

72

APPLICATION: EDGE DETECTIONAPPLICATION: EDGE DETECTION

73

APPLICATION: EDGE DETECTIONAPPLICATION: EDGE DETECTION

74

APPLICATION: EDGE DETECTIONAPPLICATION: EDGE DETECTION

75

Page 20: LAST TIME APPLICATION: EDGE DETECTIONayan/courses/cse559a/PDFs/lec... · 2019-09-05 · BILATERAL FILTERING 72 BILATERAL FILTERING Guided Bilateral Filter: based on a separate image

APPLICATION: EDGE DETECTIONAPPLICATION: EDGE DETECTION

76

APPLICATION: EDGE DETECTIONAPPLICATION: EDGE DETECTION

77

APPLICATION: EDGE DETECTIONAPPLICATION: EDGE DETECTION

78

APPLICATION: EDGE DETECTIONAPPLICATION: EDGE DETECTION

79

Page 21: LAST TIME APPLICATION: EDGE DETECTIONayan/courses/cse559a/PDFs/lec... · 2019-09-05 · BILATERAL FILTERING 72 BILATERAL FILTERING Guided Bilateral Filter: based on a separate image

APPLICATION: EDGE DETECTIONAPPLICATION: EDGE DETECTION

80

APPLICATION: EDGE DETECTIONAPPLICATION: EDGE DETECTION

81


Recommended