This repository contains a series of image processing exercises implemented in C++. These exercises cover fundamental techniques and operations in image processing, such as color space transformations, histogram modifications, frequency domain filtering, convolution, morphological operations, and shape analysis.
The project is organized into several exercises, each focusing on a different aspect of image processing:
- Color Spaces and Histograms
- Implement 1D histogram analysis, color space transformations (RGB, HSV, Lab), and pixel detection based on color characteristics.
- Histogram Modification
- Perform histogram stretching and equalization to enhance image contrast, with a discussion on the advantages and limitations of each method.
- Frequency Domain Representation
- Apply Fast Fourier Transform (FFT) for frequency analysis, and implement low-pass and high-pass filtering for image enhancement.
- Convolution and Image Filtering
- Implement convolution operations and Gaussian filtering to highlight image features.
- Classification
- Apply k-means clustering for pixel classification within images, identifying regions based on color similarity.
- Mathematical Morphology
- Implement erosion and dilation operations to modify image structure, ideal for noise reduction and structure enhancement.
- Connected Component Labeling
- Label connected components within an image to segment distinct regions.
- Edge Detection
- Use gradient norm and Laplacian zero-crossing methods to detect image edges.
- Shape Analysis and Road Sign Recognition
- Use contour signatures, compacity, and Hough transformations to recognize shapes such as circles and polygons, enabling basic object recognition.
- Counting Buildings from Aerial Images
- Use HSV color filtering, morphological operations, and contour detection to identify and count building rooftops in aerial images.