Difference of Gaussians
In this project we will implement the difference of Gaussians (DoG) edge detector and learn its characteristics.
Part A: Design and implement a procedure that takes the displayed image and the standard deviation (scale) of a Gaussian and replaces the displayed image with its Gaussian smoothed image. The Gaussian scale is provided interactively. Implement 2-D Gaussian smoothing by 1-D Gaussian smoothing.
Part B: Design and implement a procedure that receives the scale σ of a LoG edge detector and approximates the LoG edge detector by a DoG, by
1) Calling the Gaussian smoother once with scale σ and another time with scale 1.61σ,
2) Subtracting the two smoothed images, and
3) Finding the zero-crossings of the difference image. This procedure should set the zero-crossing pixels to 255 and all other pixels to 0. It should also replace the displayed image with its DoG edge image.
Part C: In a page or two describe your implementation and comment on the obtained results.
Extra-credit: Design and implement a procedure that receives an image and the scale of a Gaussian smoother and finds the edges and the gradient magnitudes at the edges and returns the edge image where an edge pixel shows the gradient magnitude there. Replace the displayed image with the returned result. (1 point) Design and implement an interactive method to remove the weak edges. The implementation should allow the user to select a gradient threshold value interactively. It should then replace values in the displayed image that are below the threshold value to 0 and those equal to and greater than the threshold value to 255. Note that there is a need to make a backup copy of the displayed image to reuse it as needed.
Note: For accurate results, perform all calculations in float and then round to byte when saving and displaying the results.