Introduction
In this problem set, we were to duplicate all of the operators done
on pages 150 to 153 from the book "Machine Vision", by Jain, Kasturi,
and Shunck. We were to take an image, apply different filtering and
noise functions to it, and then try several different edge detection
algorithms to see the results. The images I tried were:
Here is the MATLAB code used to generate all of the pictures you see below.
The Results
This assignment was pretty straightforward, so I'll let the results speak for themselves. I've deliberately set up the matrices myself, rather than using the standard MATLAB "edge" function with arguments, since the "edge" function gives binary results, and I wanted to see the grayscale version. In each case, I set up the convolution matrix manually, used the absolute value of the convolution, and scaled the result by five or 10 to make the results more visible. I've arranged everything into a grid to make the comparison easier.
| Original | Filter | Noise + Filter | Noise Only | |
| Originals |
|
|
|
|
|
Gradient Downward 1 By 2 |
|
|
|
|
|
Gradient Downward 2 By 2 |
|
|
|
|
|
Gradient Rightward 1 By 2 |
|
|
|
|
|
Gradient Rightward 2 By 2 |
|
|
|
|
| Roberts |
|
|
|
|
| Sobel |
|
|
|
|
| Prewitt |
|
|
|
|
Conclusion
As is obvious, each of the edge detection algorithms are very intolerant of noise, much more than I thought it would be originally. Also, standard Gaussian filtering was mildly helpful, but not nearly enough to make up for any noise introduced into the picture.