As part of the Harvard CS50 course, I recently completed the Filter (More) problem set — a deep dive into image processing using pure C. π§π»
In this project, I wrote functions from scratch to manipulate 24-bit BMP images, implementing:
✅ Grayscale — by averaging each pixel’s RGB values
✅ Horizontal reflection — flipping each row of pixels
✅ Blurring — by averaging each pixel with its neighbors
✅ Edge detection — using the classic Sobel operator
πWhy the Sobel operator?
It’s a fundamental computer vision technique that uses two convolution kernels (Gx and Gy) to calculate the gradient of pixel intensity in the X and Y directions. By combining these, we can detect sharp transitions in the image — which highlight edges!
π‘ This project was a great reminder of what happens “under the hood” in modern image processing libraries — and how much fun it is to build it step by step in C!
Github link for source code :


0 Comments