Skip to content

cauchyschwarz192837/ImageSignalProcessor_BM3Ddenoising

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This repository contains two image-processing programs

  1. A C++ Image Signal Processing Pipeline for RAW Sensor Processing
  2. A C++ Implementation of BM3D Denoising (Block-Matching 3D Filtering)

A C++ Image Signal Processing Pipeline for RAW Sensor Processing (image.cpp)

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 C++ Implementation of BM3D Denoising (Block-Matching 3D Filtering) (BM3D.cpp)

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):

Alt text

Processed image: Alt text

About

A C++ Image Signal Processing Pipeline for RAW Sensor Processing, A C++ Implementation of BM3D Denoising (Block-Matching 3D Filtering)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors