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:
| Module | openISP | fast-openISP |
|---|---|---|
| DPC | 20.57s | 0.29s |
| BLC | 11.75s | 0.02s |
| AAF | 16.87s | 0.08s |
| AWB | 7.54s | 0.02s |
| CNF | 73.99s | 0.25s |
| CFA | 40.71s | 0.20s |
| CCM | 56.85s | 0.06s |
| GAC | 25.71s | 0.07s |
| CSC | 60.32s | 0.06s |
| NLM | 1600.95s | 5.37s |
| BNF | 801.24s | 0.75s |
| CEH* | - | 0.14s |
| EEH | 68.60s | 0.24s |
| FCS | 25.07s | 0.08s |
| HSC | 56.34s | 0.07s |
| BBC | 27.92s | 0.03s |
| End-to-end pipeline | 2894.41s | 7.82s |
* CEH module is not included in the official openISP pipeline.
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.
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.
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.
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.
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.
| Bayer Input |
|---|
| CFA Interpolation |
|---|
| Color Correction |
|---|
| Gamma Correction |
|---|
| Non-local Means & Bilateral Filter |
|---|
| Contrast Enhancement |
|---|
| Edge Enhancement |
|---|
| Hue & Saturation Control |
|---|
| Brightness & Contrast Control |
|---|
Copyright 2021 Qiu Jueqin.
Licensed under MIT.