Homework 1 Clarifications


I want to emphasize a distinction between convolving two filters together to get a new filter (e.g., a*b) vs. convolving a filter with an image to get a new image (e.g., b*f). 

In particular, when convolving two filters with each other, you should pad with zeros and compute results for all shifted filter locations for which the product-sum gives a non-zero result. Thus, you may find yourself centering "a" on a pixel outside of "b", but still computing a result whenever "a" overlaps "b" in any way. 

Another way to think of this is that you could pad "b" amply with zeros, perform a convolution of "a" over all possible pixels, including the ones that are zero, and generate a new result a*b, which might have zeroes on the boundaries (if you over-padded). You can truncate the zeros on the boundary, since filter boundaries are already implicitly assumed to be zero beyond the boundary.  Now, for an image, you should assume that you will only center a filter on the original image pixels and produce filtered answers just for those. The boundary is assumed to have been extended in some way, but you do not go beyond the boundary when shifting the filter across the image. The resulting filtered image will be of exactly the same size as the original. 

In addition, a*(b*f) means taking image f and computing a new image b*f (let's say the new image is g=b*f), then computing a final image a*g. 

Finally, not only is convolution associative, it is also commutative. So, a*b=b*a. Thus, if you're not sure which filter to slide over which...don't worry, it doesn't matter. 

You should not find yourself writing out any sines or cosines or otherwise enumerating all the matrix elements to answer these questions. Instead, you should be taking inspiration from slides 14 and 22 of the affine transformation lecture, and think in terms of transformed coordinate axes u1, u2, etc., how they can be used to construct a rotation matrix and how they relate to each other. If you didn't take careful notes, you'll find mine here: 

http://www.cs.washington.edu/education/courses/457/CurrentQtr/lectures/markup/affine.html 

Your tree should contain a bunch of boxes (or circles), each containing one part number (1...8). These boxes should be connected by line segments, each labeled with a corresponding transformation that connects child to parent.