Skip to content
This repository was archived by the owner on Aug 11, 2026. It is now read-only.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

12 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ‘οΈ Computer Vision Coursework

Classical Image Processing, Feature Geometry & Image Stitching

Coursework Repository β€” M.S. Computer Science, UMBC

This repository contains hands-on computer vision assignments completed as part of my graduate coursework at the University of Maryland, Baltimore County (UMBC).

The exercises progress from foundational image-processing operations to multiresolution image blending and geometric image stitching.

The repository is preserved as coursework rather than presented as a standalone production project.


πŸ“š Topics Covered

Across the assignments, I implemented and explored:

  • Image loading and color-space conversion
  • Cropping and resizing
  • Downsampling and upsampling
  • Nearest-neighbor and bicubic interpolation
  • 2-D convolution
  • Sobel edge detection
  • Laplacian filtering
  • Box and Gaussian blurring
  • Image blending
  • Hybrid images
  • Gaussian pyramids
  • Laplacian pyramids
  • Multiresolution blending
  • Corner / feature detection
  • Feature matching
  • Homography estimation
  • Image warping
  • Panorama stitching

πŸ“‚ Repository Structure

ComputerVision/
β”‚
β”œβ”€β”€ hw1/
β”‚   β”œβ”€β”€ ImageBlending_Task1.py
β”‚   β”œβ”€β”€ HybridImg_Task2.py
β”‚   β”œβ”€β”€ hw1_Part3.py
β”‚   └── image assets / generated outputs
β”‚
β”œβ”€β”€ hw2/
β”‚   └── code/
β”‚       β”œβ”€β”€ question1_task1_AlphaBlend.py
β”‚       β”œβ”€β”€ question1_task2_GaussianLaplacianPyramids.py
β”‚       β”œβ”€β”€ question1_task3_MultiresolutionBlending.py
β”‚       β”œβ”€β”€ question1_task4_truegrit.py
β”‚       β”œβ”€β”€ question2.py
β”‚       └── image assets / outputs
β”‚
β”œβ”€β”€ hw3/
β”‚   β”œβ”€β”€ code/
β”‚   β”‚   β”œβ”€β”€ homography.py
β”‚   β”‚   β”œβ”€β”€ stitching_2.py
β”‚   β”‚   β”œβ”€β”€ stitching_3.py
β”‚   β”‚   β”œβ”€β”€ stitching_5.py
β”‚   β”‚   β”œβ”€β”€ Opencv_Stitcher.py
β”‚   β”‚   └── visualize_matches.py
β”‚   β”‚
β”‚   └── images/
β”‚
β”œβ”€β”€ .gitignore
└── README.md

πŸ–ΌοΈ Assignment 1 β€” Image Processing & Hybrid Images

The first assignment focuses on foundational computer-vision operations.

Image Manipulation

Implemented operations include:

  • Reading and writing images with OpenCV
  • BGR ↔ RGB conversion
  • Grayscale conversion
  • Image cropping
  • Downsampling
  • Upsampling

Different interpolation approaches were compared when reconstructing downsampled images, including:

Nearest Neighbor
Bicubic Interpolation

Absolute pixel differences were also calculated to compare reconstructed images with the original.


Convolution & Filtering

The assignment explores spatial image filtering using kernels.

Implemented examples include:

Sobel Filtering

Used to highlight directional image gradients and edges.

Laplacian Filtering

Used to emphasize rapid intensity changes.

Box Blur

Applies an averaging kernel to smooth an image.

Gaussian Blur

Applies Gaussian-weighted smoothing.

I also implemented a basic 2-D convolution routine manually to better understand how spatial filtering works rather than relying exclusively on OpenCV's built-in filtering functions.


Image Blending

The assignment also explores combining information from multiple images.

This includes:

  • Image blending
  • Frequency-aware image composition
  • Hybrid-image generation

Hybrid images combine low-frequency information from one image with high-frequency information from another so perception can change depending on viewing distance.


🧩 Assignment 2 β€” Multiresolution Image Blending

The second assignment focuses on image representations at multiple spatial scales.

Implemented exercises include:

Alpha Blending

Combines two images using a blending mask.

Gaussian Pyramids

Represent an image at progressively lower spatial resolutions.

Laplacian Pyramids

Represent image detail across multiple frequency/spatial scales.

Multiresolution Blending

Combines images across pyramid levels to create smoother transitions than direct pixel-level blending.

The workflow can be summarized as:

Input Images
     ↓
Gaussian Pyramids
     ↓
Laplacian Pyramids
     ↓
Blend Across Scales
     ↓
Reconstruct Pyramid
     ↓
Final Composite

The assignment also includes feature/corner-analysis exercises used to explore image structure.


πŸŒ„ Assignment 3 β€” Homography & Panorama Stitching

The third assignment focuses on geometric computer vision.

The implementation explores the steps required to align overlapping images and combine them into a wider scene.

Input Images
     ↓
Feature Detection / Matching
     ↓
Correspondence Points
     ↓
Homography Estimation
     ↓
Perspective Warping
     ↓
Image Alignment
     ↓
Panorama Stitching

Homography

A homography models a projective transformation between two views of approximately the same planar scene.

The transformation can be represented as:

x' ~ Hx

where H is a 3 Γ— 3 projective transformation matrix.

The assignment explores estimating and applying this transformation to align images.


Image Stitching

Several stitching implementations are included to experiment with:

  • correspondence visualization
  • homography estimation
  • image warping
  • alignment
  • OpenCV's stitching functionality
  • combining overlapping images into panorama-style outputs

πŸ› οΈ Tech Stack

Technology Use
Python Core implementation
OpenCV Image processing and geometric CV
NumPy Matrix and numerical operations
Matplotlib Visualization

πŸš€ Getting Started

Clone

git clone https://github.com/Gravity-2010/ComputerVision.git
cd ComputerVision

Create a virtual environment

python -m venv .venv

Linux/macOS:

source .venv/bin/activate

Windows:

.venv\Scripts\activate

Install dependencies

pip install numpy opencv-python matplotlib

Individual assignment scripts may have additional requirements depending on the exercise.


▢️ Running an Exercise

For example:

cd hw1
python hw1_Part3.py

or:

cd hw2/code
python question1_task3_MultiresolutionBlending.py

Some scripts expect their associated image assets to remain in the same directory.


🎯 Learning Outcomes

These assignments provided hands-on experience with the mathematical and implementation foundations of computer vision, including:

  • Understanding images as numerical arrays
  • Applying convolution and spatial filters
  • Comparing interpolation methods
  • Reasoning about image frequency content
  • Constructing multiscale image representations
  • Applying projective geometry
  • Estimating transformations between images
  • Combining multiple views into a stitched scene

⚠️ Repository Scope

This repository contains classical computer-vision coursework.

It does not represent a deep-learning computer-vision project and does not currently include:

  • CNN training
  • object-detection models
  • semantic segmentation models
  • transformer-based vision models

My deep-learning computer-vision work is maintained separately from this coursework repository.


πŸ“Œ Repository Status

Completed graduate coursework

This repository is preserved as a record of hands-on work in classical image processing and geometric computer vision.

About

UMBC computer vision coursework covering image filtering, hybrid images, multiresolution blending, feature detection, homography, and panorama stitching.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages