The aim of this project was to design and build a pipeline for an image analysis task, specifically to identify 3-digit numbers on captcha images. The goal was to achieve at least 50% accuracy in identifying the digits.
- Captcha images contain digits 3, 4, and 5 with possible repetitions and in any order.
- Images exhibit Gaussian noise, a striped pattern, overlapping digits, and flat lines.
- Digits vary in size, rotation, and position within the image.
- Denoising the image.
- Segmenting and classifying overlapping digits efficiently.
- Handling variations in size, rotation, and position of digits.
- Utilize total variation denoising, thresholding, and morphology for noise removal.
- Implement template matching for digit classification and segmentation.
- Striped patterns in images identified in Fourier domain.
- A mask created to remove stripes.
- Total variation energy minimization initially attempted but switched to Wiener filtering for efficiency.
- Histogram equalization performed before thresholding.
- Manual selection of thresholding value based on histograms.
- Erosion and dilation used to remove scattered lines around digits.
- Area filter applied to remove small unconnected regions.
- Image cropped to segment three digits, each roughly one-third of the image.
- Digits rescaled and rotated for template creation.
- Normalized cross-correlation used for matching.
- Digit with the highest correlation chosen as classification.
- Preprocessing steps performed including noise removal, thresholding, and morphology.
- Segmentation and template matching implemented for digit identification.
- Classification results on the provided training set:
- Accuracy: 62.75%
- Elapsed Time: 126.55 sec
- Mean Time per Image: 0.103 sec
- Fine-tuning variables and measures for better optimization.
- Improving digit segmentation for rotated numbers.
- Introducing new templates for better matching.
- Experimentation with supervised learning models like k-NN classifier.