Part 1

1.1: Finite Difference Operator

Partial derivatives in x.

Partial derivatives in y.

Binarized edge detection.

1.2: Derivative of Gaussian Filter

Partial derivatives in x (after a Gaussian blur).

Partial derivatives in y (after a Gaussian blur).

Binarized edge detection. I noticed that the partials produced more defined results, and the resulting edge detection created edges that appeared continuous, rather than 1.1's edge detection that looked more like a discrete set of points that more or less fit to an edge. It appears to be an overall superior method of edge detection compared to 1.1

1.3: Image Straightening

Original image

Straightened

Histogram

Original

Straigthened

Histogram

Original

Straigthened

Histogram

Original

Straigthened - Failure Case. Interesting that images with tons of detail and Fourier frequencies can straighten, but a simple plus sign can't with my algorithm.

Histogram

Part 2

2.1: Image "Sharpening"

Original Image

Sharpened

Original Image Blurred

Blur resharpened - unfortunately, my filter only mildly effective at resharpening blurred images.

Original Image

Sharpened

Original Image Blurred

Blur resharpened

Original Image

Sharpened

Original Image Blurred

Blur resharpened

2.2: Hybrid Images

Starting Images

Hybridized

FFT Histogram - There is a small gap of unrepresented frequencies, and unfortunately I did not have sufficient time to tune the parameters and fix this.

Starting Images

Hybridized (imperfectly)

Starting Images

Hybridized (imperfectly)

2.3: Image Pyramids

Gaussian and Laplacian pyramids, respectively.

Gaussian and Laplacian pyramids, respectively.

Gaussian and Laplacian pyramids, respectively.

Gaussian and Laplacian pyramids, respectively.

2.3: Multiresolution Blending

Starting Images

Blended

Starting Images

Blended (imperfectly)