Back to projects

Software

Distributed Image Processing

A parallel image-convolution pipeline using MPI to scatter image rows across processes, exchange halo rows between neighbours, and gather the filtered output. Supports arbitrary kernel sizes loaded from file.

Distributed Image Processing

Overview

Image convolutions like Gaussian blur, Sobel edge detection, and sharpening are embarrassingly parallel across pixels, but boundary rows need data from their neighbours. This project uses MPI to split a large image into row strips, distribute them across processes, exchange halo rows between adjacent ranks, run the convolution locally, then gather the result back to rank 0 for output.

Highlights

  • MPI scatter/gather with configurable halo rows for boundary handling
  • Applied Gaussian blur, Sobel edge detection, and sharpen kernels
  • Validated correctness across multiple image sizes and process counts
  • Kernels loaded from file so the same binary supports arbitrary filter sizes

Tech Stack

C / C++
MPI
OpenCV
Linux