This project (code found here) presents series of digital image processing tools created in MATLAB from scratch.
image_processing_report contains the full details of the image processing steps and intermediate results. The following sequential steps are done using classical digital image processing techniques and coded from scratch:
- Conduct binary thresholding
- Image segmentation using a Union-Find graph algorithm
- Rotation of the image using linear, bilinear & bicubic interpolation
- Edge detection using various techniques in the spatial domain and spatial frequency domain
- Finding a pixel-thin representation of the objects using mathematical morphological techniques
Image rotation is usually done by rotating the image in the reverse direction first and doing an inverse transform. Afterwards a series of interpolation methods can be used to interpolate the binary thresholded values into the new image. For the edge detection, we used spatial frequency domain techniques like Gaussian & Butterworth filtering and in the spatial domain we used convolution-based filtering like Sobel & Prewitt operator filtering and Canny edge detection.
The canny edge detection proved to be the most effective. Additionally, we came up with an innovative way to use erosion via a double-element edge detection method to get the outline as well. Finally a series of erosion techniques with 8 operators (known as the hit-and-miss algorithm) were used to create pixel thin images.