This repository contains two image-processing programs
- A C++ Image Signal Processing Pipeline for RAW Sensor Processing
- A C++ Implementation of BM3D Denoising (Block-Matching 3D Filtering)
A custom image signal processing pipeline designed for processing raw Bayer sensor dumps stored in a specific binary layout (fixed header offset + 16-bit pixel array). It reads raw pixels into a 2D buffer, performs black / white balance, demosaicking (color interpolation), color correction, gamma, tone mapping, edge enhancement, and exports to BMP.
Simply run ./image filename to process an image (Note that images must be of the correct format)
Output image samples:
DSC00475.SRF.clear.bmp DSC00474.SRF.clear.bmp DSC00476.SRF.clear.bmp DSC00479.SRF.clear.bmp DSC00488.SRF.clear.bmp DSC00522.SRF.clear.bmp DSC00524.SRF.clear.bmp
A classic state-of-the-art denoising pipeline that groups similar image patches, applies collaborative filtering in a 3D transform domain, and aggregates overlapping estimates. Referred to An Analysis and Implementation of the BM3D Image Denoising Method by Marc Lebrun (2012). Implemented as a two-stage BM3D pipeline:
Step 1: Hard-thresholding collaborative filtering
Step 2: Wiener collaborative filtering
Simply run ./bm3d filename to process an image.
Pre-processed image (none other than THE GOAT Bill Evans):

