Projects

Things I have built

Projects in computer vision, 3D reconstruction and graphics. Most of them are implemented from the maths up instead of built on library calls.

All

Qualitative reconstruction results on the 7-Scenes dataset

RayPose-MVS

Mar 2025 - Sep 2025

A feed-forward model that predicts dense 3D geometry and camera pose in a single pass, without bundle adjustment or RGB inputs, trained on ~1% of the data other methods use.

  • 3D Reconstruction
  • Multi-View Stereo
  • Camera Pose
  • PyTorch
An armadillo mesh reconstructed from the first 50 eigenmodes of its Laplacian

Discrete Geometry

2025

Registration, halfedge structures, discrete curvature, the spectrum of the Laplace–Beltrami operator, and denoising by curvature flow, with every operator and solver implemented in NumPy and SciPy.

  • Geometry Processing
  • ICP
  • Laplace-Beltrami
  • Mesh Denoising
A stitched panorama with feathered blending across the seam

Planar Geometry

2024

Homography estimation, RANSAC, corner detection, panorama stitching, metric rectification, plane pose, template tracking and Zhang's calibration, implemented without any OpenCV geometry calls.

  • Homography
  • RANSAC
  • Camera Calibration
  • Panorama
Skin segmentation produced by a generative mixture classifier

Probabilistic Vision

2024

Density models, mixtures fitted with EM, generative classification and particle filtering from scratch, where the mixture fitted in the first half is used as the appearance model for the tracker in the second.

  • EM
  • Mixture Models
  • Particle Filter
  • Classification
Cornell box rendered by the path tracer

Path Tracer

2024

A path tracer in C++ with no dependencies, along with 24 statistical checks to verify that its estimator is correct, since a rendered image alone cannot show this.

  • Ray Tracing
  • Monte Carlo
  • C++
  • BVH
A scene drawn by the graphics hardware

Software Rasterizer

2024

The rasterisation pipeline reimplemented inside a fragment shader and compared against the hardware pixel by pixel, which showed that hardware does not rasterise in floating point.

  • Rasterization
  • GLSL
  • C++
  • EGL
Darwin's notebook sketch cloned onto rusted steel with mixed gradients

Poisson Image Editing

2024

Seamless cloning, mixed gradients, texture flattening and interpolation fill, where each technique is the same sparse linear solve with a different guidance field.

  • Poisson Equation
  • Sparse Solvers
  • Image Compositing
  • SciPy

Face Morphing

2024

Two ways to morph one face into another, implemented from scratch in NumPy, using either a Delaunay mesh of per-triangle affine warps or a meshless warp driven by distance-weighted landmark displacements.

  • Image Warping
  • Delaunay Triangulation
  • NumPy
  • Computational Geometry