Skip to content

George-Mac/ISP_pipeline

Repository files navigation

C++ ISP pipeline

A simple ISP pipeline in C++. Read 14-bit Sony .ARW raw images and output 8-bit jpg images.

Environment & How to run

The project is almost written in C++17. OpenCV is used in this project to output the images and Libraw is used to read and parse the .ARW file. The minimum version of CMake is 3.0. To use the Libraw, we need to install the source code of Libraw, put it into the director "lib" in the project, then unzip it and compile it:

tar xzvf LibRaw-X.YY.tar.gz
cd LibRaw-X.YY
./configure
make

To run the progam, we need to run the compile_run.sh. The main function contain three parameters, they are input file path, output file path and tuning parameters file path. The parameters can be modified through the terminal or compile_run.sh.

Implementation

Bayer Domain Process

  1. Dead Pixel Correction [✅]
  2. Black Level Compensation [✅]
  3. Lens Shading Correction [❌]
  4. Anti Aliasing Filter [✅]
  5. Auto White Balance Gain Control [✅]
  6. Chroma Noise Filtering [❌]
  7. Color Filter Array [✅]

RGB Domain Process

  1. Gamma Correction [✅]
  2. Color Correction Matrix (p3 to sRGB) [✅]

YUV Domain Process

  1. Edge Enhancement [✅]
  2. False Color Suppression [✅]
  3. Brightness Contrast Control [✅]
  4. Hue Saturation Control [✅]
  5. Local Tone Mapping [❌]

Results

image

About

An ISP pipeline implemented by C++

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published