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.
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
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
The first assignment focuses on foundational computer-vision operations.
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.
The assignment explores spatial image filtering using kernels.
Implemented examples include:
Used to highlight directional image gradients and edges.
Used to emphasize rapid intensity changes.
Applies an averaging kernel to smooth an image.
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.
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.
The second assignment focuses on image representations at multiple spatial scales.
Implemented exercises include:
Combines two images using a blending mask.
Represent an image at progressively lower spatial resolutions.
Represent image detail across multiple frequency/spatial scales.
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.
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
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.
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
| Technology | Use |
|---|---|
| Python | Core implementation |
| OpenCV | Image processing and geometric CV |
| NumPy | Matrix and numerical operations |
| Matplotlib | Visualization |
git clone https://github.com/Gravity-2010/ComputerVision.git
cd ComputerVisionpython -m venv .venvLinux/macOS:
source .venv/bin/activateWindows:
.venv\Scripts\activatepip install numpy opencv-python matplotlibIndividual assignment scripts may have additional requirements depending on the exercise.
For example:
cd hw1
python hw1_Part3.pyor:
cd hw2/code
python question1_task3_MultiresolutionBlending.pySome scripts expect their associated image assets to remain in the same directory.
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
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.
Completed graduate coursework
This repository is preserved as a record of hands-on work in classical image processing and geometric computer vision.