Awesome
Image Signal Process For HDR CMOS Image Sensor
Project Description
An ISP pipeline written in C++ for HDR cameras
- The ISP modules are written in C style
- Without other library dependencies
- Can be deployed various embedded platforms
- Customize your pipeline through json configuration
The Isp support run on GPU(on branch gpu_dev)
Default Pipeline
Support ISP Module Lists
- Raw Domain
- MipiUnPack: mipi raw data unpack to raw16
- DePwl: decode the pwl curve
- Dpc: dynamic pixel correct
- Lsc: lens shding correct
- Blc: black level correct
- Rns: raw noise filter
- WbGain: white balance gain
- Demoasic: change raw to rgb
- RGB Domain
- Ltm: local tone mapping
- RgbGamma: rgb gamma curve
- Ccm: color correct matrix
- Rgb2Yuv: rgb domain to yuv domain
- YUV Domain
- YGamma: gray gamma curve
- Contrast: gray contrast adjust
- Sharpen: gray usm sharpen
- Cns: chrome noise filter
- Saturation: chrome saturation
- Yuv2Rgb: yuv domain to rgb domain
How To Build and Run
Linux
Develop Env :
#dependencies install(cmake and opencv)
sudo apt update
sudo apt install cmake
Build
git clone https://github.com/JokerEyeAdas/HDR-ISP
cd HDR-ISP/
mkdir build
cmake ..
make -j12
Windows
Develop Env (x64):
- vs code
- cmake
- vs2019 c++ gen tool
Build
git clone https://github.com/JokerEyeAdas/HDR-ISP
code HDR-ISP
#cmake choose Debug or Release
#compiler choose xxx-amd64
#build all
How To Run
cd build
#cp cfgs and data
cp -r ../data/ ./
cp -r ../cfgs/ ./
#run isp
./HDR_ISP ./cfgs/isp_config_cannon.json
How To Tunning Params
By changing Json Config
example1, change sensor params:
"raw_file": "./data/connan_raw14.raw",
"out_file_path": "./",
"info": {
"sensor_name": "cannon",
"cfa": "RGGB",
"data_type": "RAW16",
"bpp": 16,
"max_bit": 14,
"width": 6080,
"height": 4044,
"mipi_packed": 0
},
example2, change rgb gamma params:
"rgbgamma": {
"enable": true,
"in_bit": 10,
"out_bit": 8,
"gammalut_nums": 11,
"gammalut": [
0,
0.3504950718773984,
0.48243595264750255,
0.57750428843709,
0.6596458942714417,
0.731034378464739,
0.7925580792857235,
0.8509817015104557,
0.9029435754464383,
0.9534255851019492,
1.0
]
}
Result
ISP Result
Notes | Image |
---|---|
Raw | |
ISP Result(Ours) | |
FastOpenISP Result |
Detail Compare
ISP | Image1 | Image2 | Notes |
---|---|---|---|
Ours | Detail and boundaries is clear | ||
Fast Open Isp | Color banding and detail lost |
Follow-Up
- Support Dpc, Rns, Cns and other ISP modules;
- Write ISP tunning GUI tools.
Project Support
- Thanks for your support, we hope that my project can help your work
Reference Repo
Thanks for the following code repository!
Index | Repo | Language | Notes |
---|---|---|---|
0 | OpenISP | Python | image signal process in C style |
1 | fast-openIsp | Python | open isp speed up verison in python |
2 | ISP Lab | C++ | Isp realized by c++ |
3 | xk-ISP | C++ | C++ ISP For HLS on FPGA |
Follow Me
Zhihu:EYES OF ADAS | Blog:EYES OF ADAS | WeChat:
Eyes of Adas Copyright Reserved @2023, No commercial use without permission