Project 2: Filter (Algo)
You can find the handout for this project here. Please skim the handout before your Algo Section!
You may look through the questions below before your section, but we will work through each question together, so make sure to attend section and participate to get full credit!
Convolution
Discrete Convolution
You are given the following 1D kernel and input image. Assume that any pixel outside the bounds of the input image has value 0
(i.e. the image is zero-padded).
What is the output image when the kernel and image are convolved with each other? Present your answer as a vector of size 6, representing the output image.
As a group, discuss what visual effect this kernel might have on a real image.
Convolution over a 2D Image
Suppose that you are given a 1D image vector
Write out pseudocode to slide the kernel
How would you need to adjust this pseudocode if the kernel were positioned vertically instead?
Continuous Convolution
Convolve the below function and filter. What is the value of
Visualizing Convolution
Work with your group on a whiteboard to draw the shape of the output function obtained in the previous question (figure 3).
Blurring
Let's try to generalize our solution to the earlier discrete convolution problem.
Consider a 1D kernel
All of
, , and can be considered as 1D arrays storing intensities where gives the intensity of the -th pixel. Remember that the kernel is zero-indexed so gives the left-most value in the kernel array.
We are interested in writing out this convolution as summation over the values of
You may ignore edge effects for the purposes of this question (i.e. feel free to "incorrectly" index out-of-bounds).
Begin thinking through this question on your own, and then work with the group to come to an answer. Note that there may be multiple correct answers here!
Scaling
Scaling Up
What is the filter support width when you scale by a factor of
Scaling Down
What is the filter support width when you scale by a factor of
Naïve Back-mapping
Recall from lecture that back-mapping refers to finding the correct filter placement given a pixel in the output image.
The naïve back-map function is
Suppose we wanted to scale down a 9-pixel 1D image by a factor of
With your group, draw out the 9 pixels of the original image, and show where we would sample the original image using the naïve back-map function. Include an illustration of the filter above each sample point.
Correct Back-map
Draw another picture to show where we would sample the original image using the correct back-map function. Again, please include an illustration of the filter above each sample point.
Discuss the differences between the two methods, and what might happen if we used the naïve back-map function in practice.
Duality of Domains
Visualizing Sinc and Box Duals
Take a look at the box function in figure 5 (left) below. Its dual in the frequency domain is the sinc function, in figure 5 (right). Note that there are no labels on the axes, by design.
Draw out a sketch of the dual of the box function in figure 6. Your drawing doesn't need to be perfectly accurate; but enough to show that you understand the concept.
When you are finished, explain your group's thought process to the TA.
Approximating Sinc
What do we usually use to approximate the sinc function, and why do we have to make this approximation when translating these theoretical concepts into code?
Discuss with your group and then call over the TA to check your understanding.
Sampling in the Frequency Domain
If we're sampling a continuous function at a frequency of
Frequency Plots
Now, examine the following frequency plot of a 1D, continuous signal. If you were going to sample this signal at a rate of 8 samples per unit, to avoid aliasing, you would use what we know about the Nyquist limit to pre-filter it.
Draw out the new frequency plot after someone has performed this pre-filtering step optimally. Make sure to include any relevant amplitude and/or frequency values.
Submission
Algo Sections are graded on attendance and participation, so make sure the TAs know you're there!