SELECTED WORK / PROJECT 005

Computer
visionPersonal image-processing experiments

Exploring how image geometry, clustering and regression transform pixels into useful results.

PythonOpenCVImage geometrySegmentationImage restoration
First self-captured photograph of an indoor scene used for panorama stitchingSaved panorama output combining overlapping views, with visible geometric distortion around the seamSecond self-captured photograph of the same scene from an overlapping viewpoint
TWO PHOTOS / ONE PANORAMAPERSONAL LEARNING PROJECT
MY ROLE
Algorithm implementation & experimentation
CONTEXT
Personal learning project
TOOLS
Python · NumPy · OpenCV
FOCUS
Stitching, segmentation & restoration

01 / THE PROJECT

Explore pixels.
Build understanding.

Develop image-processing algorithms and investigate how their assumptions affect the result.

  • I undertook this personal learning project to understand computer vision through implementation and visual experimentation.
  • The work explored panorama stitching, image segmentation and reconstruction from corrupted images.
  • Python notebooks captured intermediate results, parameter comparisons and observations.
3

Featured experiment areas

2

Own photographs used in the panorama

5

Colour and position features
used in superpixel clustering

These figures describe the featured implementation, rather than measured accuracy.

02 / EXPERIMENT WORKFLOW

See the pipeline.
Control each step.

  • Each experiment connected input preparation, mathematical operations and visual inspection.
  • Intermediate plots made coordinate, intensity and parameter choices easier to investigate.

PERSONAL LEARNING GOALS

Questions that guided the work

  • How can overlapping photographs be mapped into a common image plane?
  • How do interpolation and filtering affect the appearance of a panorama seam?
  • How does spatial weighting change colour-based image segmentation?
  • How well does a learned reconstruction transfer to an unseen image?

03 / PANORAMA STITCHING

Find the overlap.
Align the views.

A shared homography connected overlapping photographs to one panorama coordinate system.

Own panorama inputs

Match the same scene

  • I captured two overlapping views and extracted SIFT keypoints and descriptors.
  • FLANN matched descriptors, while a ratio test filtered ambiguous pairs.
  • RANSAC estimated a homography from the retained correspondences.
View reference-image panorama

04 / IMAGE SEGMENTATION

Group the pixels.
Reveal the regions.

  • I implemented K-means assignment and centroid updates using NumPy.
  • Empty clusters were reinitialised to keep the iteration running.
  • Adding normalised pixel positions extended colour clustering into spatially weighted superpixels.
Superpixel parameter comparisons
Bounding rectangles around computed regions

05 / IMAGE RESTORATION

Learn from examples.
Test on new images.

  • A multivariate linear regression model mapped corrupted image vectors to clean image vectors.
  • The implementation fitted coefficients with a pseudoinverse and reconstructed images from predictions.
  • Experiments compared fixed and random corruption patterns on unseen examples.
Fixed corruption pattern
Random corruption pattern

Visual examples show reconstruction behaviour; they do not establish a verified accuracy improvement.

06 / DEVELOPMENT & ITERATION

Change a parameter.
Inspect the effect.

The work progressed from controlled transformations to more open-ended image experiments.

  1. 01

    From known geometry to own photos

    • A known homography established the coordinate and interpolation workflow.
    • My own photographs then required feature matching and robust geometry estimation.
  2. 02

    From colour to spatial structure

    • Colour-only clustering established the assignment and centroid-update implementation.
    • Normalised image positions introduced a controllable preference for nearby pixels.
  3. 03

    From fixed to changing corruption

    • Fixed-pattern reconstruction provided an initial image-to-image regression experiment.
    • Random patterns exposed weaker reconstruction and motivated a local-patch exploration.

07 / VALIDATION & LIMITATIONS

Look at the output.
Check the assumptions.

  • Saved figures exposed visible seams, spatial-weighting effects and blurred reconstructions.
  • The written observations connected these effects to geometry, filtering and model generalisation.
  • The current experiments provide qualitative implementation examples.
  1. 01

    Geometry

    Inspect alignment and structural discontinuities where the panorama images meet.

  2. 02

    Segmentation

    Compare colour consistency and spatial compactness as the clustering parameters change.

  3. 03

    Reconstruction

    Compare clean, corrupted and restored examples while keeping training and test images distinct.

NEXT ITERATION

Make evaluation
repeatable.

  • Standardise image scaling and image selection before reporting restoration metrics.
  • Re-run notebooks from a clean state to keep code and saved outputs consistent.
  • Compare multiple examples before drawing conclusions about algorithm performance.

08 / REFLECTION

The lessons
I take forward.

  • Implementing the calculations made image-processing assumptions tangible.
  • Visual comparisons helped identify where an algorithm worked and where it needed refinement.
01

Geometry comes before blending

Filtering can soften a seam, but it cannot recover consistent geometry from misaligned structures.

02

Features define the groups

Colour and location weighting determine which similarities the clustering algorithm treats as important.

03

A visual result needs a fair comparison

Consistent scaling, image selection and test data are essential before quoting performance figures.

JERRY SUN / ENGINEERING PORTFOLIO

Back to selected work