A project that classifies South African bank notes into their different denominations, both old and new.
# South African Banknote Recognition using Image Processing and Computer Vision
**COMP702 Project**
**Zuriel Singh (223056184), Mahir Syed (223018507)**
**Farha Mustan (223005933), Prashantan Naidoo (223009965)**
---
> **Note:** For just running the project see sections 5,6 and 7 in table of contents below
## Table of Contents
- 1. Project overview
- 2. Pipeline summary
- 3. Repository structure
- 4. Main files and their roles
- recognition_pipeline.py
- pipeline/enhancement.py
- pipeline/segmentation.py
- pipeline/features.py
- pipeline/matching.py
- pipeline/reference_db.py
- 5. Installation
- 6 .Dataset setup
- 7. How to run the project
- 8. Rebuilding the reference database manually
- 9. Output files
- 10. Experimental versions evaluated
- 11. Why Version 2 was selected
- 12. Explainability
- 13. Known limitations
- 14. Future improvements
- 15. References
---
## 1. Project overview
This project implements a classical image-processing and computer-vision system for recognising South African banknotes. The system classifies an input banknote image into one of five denominations:
- `R10`
- `R20`
- `R50`
- `R100`
- `R200`
The project considers old and new South African banknote designs, as well as both the front and back faces of each note. The system does not use a trained machine-learning model. Instead, it uses a transparent template-similarity pipeline: each input image is segmented, normalised, enhanced, converted into visual descriptors, and compared against clean reference templates.
The final selected version in the report is **Version 2**, which uses:
- HSV colour histogram
- rotation-invariant Local Binary Pattern (LBP)
- Zernike moment magnitudes
- direct best-template similarity matching
- no ORB keypoint matching
Final selected result:
```text
Overall accuracy: 86.8% (521/600)
Segmentation failures: 0
```
A later spatial-HSV version, Version 6, achieved a very similar result of `86.7% (520/600)`, but Version 2 was selected because it was …