Description
1. [2.5 points] Write your own function that implements the correlation (for grayscale or
color images and 2D filters) between an input image and a given correlation filter.
The function must take as input: an input image ‘I’, a filter ‘f’, and a string ‘mode’,
that can either be ‘valid’, ‘same’ or ‘full’. The output must match what is specified by
‘mode’.
2. [1 point] How would you use your function from part A to calculate the
convolution between a filter and an image? Use your function from question 1 to
convolve iris.jpg with a Gaussian filter σ , , use ‘mode’ = ‘same’. x = 3 σ y = 5
3. [1 point] Is convolution a commutative operation (f*g =? g*f)? Is correlation a
commutative operation? Briefly Explain.
4. [1 point] Is the horizontal derivative. ∂G(x,y)/∂x , of a Gaussian filter G a separable
filter? Explain.
5. [1 point] Given a n × n image, I, and m × m filter, h, what is the computational cost of
computing h • I if h is not separable? What is the computational cost if h is
separable?
6. [1 point] Construct two different separable filters, such that when added, the result is
a separable filter.
7. [1 point] Apply the derivative of Gaussian filter and Laplacian of Gaussian filter to
portrait.jpg, show your results.
8. [1 point] Detect waldo.jpg in whereswaldo.jpg using correlation (use built-in
methods). Your output should show whereswaldo.jpg with a rectangle around waldo.
9. [1 point] How does Canny edge detection work? In your explanation, state the
purpose of each step.
10.[ 0.5 point] Briefly explain why the zero crossings of Laplacian of Gaussian can be
used to detect edges (Hint: Laplacian is like second derivatives in 2D)
11.[1 point] Use Canny Edge detection on portrait.jpg, adjust the parameters to get rid of
the details from the background.