Home

Awesome

Fast Open Image Signal Processor (fast-openISP)

As told by its name, fast-openISP is a faster (and bugs-fixed) re-implementation of the openISP project.

Compared to C-style code in the official openISP repo, fast-openISP uses pure matrix implementations based on Numpy, and increases processing speed over 300 times.

Here is the running time in my Ryzen 7 1700 8-core 3.00GHz machine with the 1920x1080 input Bayer array:

ModuleopenISPfast-openISP
DPC20.57s0.29s
BLC11.75s0.02s
AAF16.87s0.08s
AWB7.54s0.02s
CNF73.99s0.25s
CFA40.71s0.20s
CCM56.85s0.06s
GAC25.71s0.07s
CSC60.32s0.06s
NLM1600.95s5.37s
BNF801.24s0.75s
CEH<sup>*</sup>-0.14s
EEH68.60s0.24s
FCS25.07s0.08s
HSC56.34s0.07s
BBC27.92s0.03s
End-to-end pipeline2894.41s7.82s

<sup>*</sup> CEH module is not included in the official openISP pipeline.

Usage

Clone this repo and run

python demo.py

The ISP outputs will be saved to ./output directory.

The only required package for pipeline execution is numpy. opencv-python and scikit-image are required only for data IO.

Algorithms

All modules in fast-openISP reproduce processing algorithms in openISP, except for EEH and BCC modules. In addition, a CEH (contrast enhancement) module with CLAHE is added into the fast-openISP pipeline.

EEH (edge enhancement)

The official openISP uses an asymmetric kernel to extract edge map. In fast-openISP, however, we use the subtraction between the original and the gaussian filtered Y-channel as the edge estimation, which reduces the artifact when the enhancement gain is large.

BCC (brightness & contrast control)

The official openISP enhances the image contrast by pixel-wise enlarging the difference between pixel values and a constant integer (128). In fast-openISP, we use the median value of the whole frame instead of a constant.

Parameters

Tunable parameters in fast-openISP are differently named from those in openISP, but they are all self-explained, and no doubt you can easily tell the counterparts in two repos. All parameters are managed in a yaml in ./configs, one file per camera.

Demo

Bayer Input
<img src='assets/dpc.jpg' width='580'>
CFA Interpolation
<img src='assets/cfa.jpg' width='580'>
Color Correction
<img src='assets/ccm.jpg' width='580'>
Gamma Correction
<img src='assets/gac.jpg' width='580'>
Non-local Means & Bilateral Filter
<img src='assets/bnf.jpg' width='580'>
Contrast Enhancement
<img src='assets/ceh.jpg' width='580'>
Edge Enhancement
<img src='assets/eeh.jpg' width='580'>
Hue & Saturation Control
<img src='assets/hsc.jpg' width='580'>
Brightness & Contrast Control
<img src='assets/bcc.jpg' width='580'>

License

Copyright 2021 Qiu Jueqin.

Licensed under MIT.