/Classic-Computer-Vision

This repo contains some classic computer vision projects such as hybrid image creation, Harris corner detection and simplified SIFT.

Primary LanguageJupyter NotebookMIT LicenseMIT

Computer Vision Mini Projects

This repository contains three mini projects related to classic computer vision techniques. The projects are implemented in Python using various libraries such as NumPy, OpenCV, and scikit-learn. The projects are briefly described below:

1. Convolution in Time, Frequency Domains and hybrid images

This project implements the convolution operation in both the time and frequency domains from scratch using NumPy. The project compares the performance of the two methods and analyzes the advantages and disadvantages of each approach. The project includes functions to generate synthetic signals and filters for testing. The following hybrid Images can be created. Sample Image 1

2. Object Matching using Simplified SIFT and Harris Corner Detection

This project implements a simplified version of the Scale-Invariant Feature Transform (SIFT) algorithm and the Harris corner detection algorithm to perform object matching in images. The project uses OpenCV to extract features and match them between two images. The project also includes functions to visualize the feature matching results.

Sample Image 1 Sample Image 1

3. Scene Recognition using Bag of Visual Words (BoW) and Machine Learning

This project uses the Bag of Visual Words (BoW) approach coupled with Support Vector Machines (SVM) and k-Nearest Neighbor (k-NN) classifiers to perform scene recognition on a dataset of images. The project uses OpenCV to extract features and scikit-learn to train and evaluate the classifiers. The project includes functions to visualize the classification results.

Sample Image 1

Google Colab Links

Mini-Project 1

Mini-Project 2

Mini-Project 3

Requirements

The projects require Python 3.5 or later and the following libraries:

  • NumPy
  • OpenCV

Special Thanks

Thanks To James Hays, Sam Birch and Derek Hoiem for creating these projects's startup codes.