Skip to content
/ ez_ISP Public

This is a easy ISP (ez_ISP) for RAW to RGB conversion.

Notifications You must be signed in to change notification settings

HuiiJi/ez_ISP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ez_ISP : a easy_ISP for RAW to RGB conversion

pipe

介绍

这是一个简单的ISP(即:ez_ISP),用于将RAW转换为RGB。它基于numpy包,易于使用和理解。ez_ISP项目由python实现,可通过改写为C / C ++以加快速度。

  • Bad Pixel Correction, 坏点校正
  • Black Level Correction, 黑电平校正
  • Anti Aliasing Filter, 抗混叠
  • Bayer Noise Reduction, RAW域去噪
  • Auto White Balance, 自动白平衡
  • Color Filter Array Interpolation, 去马赛克
  • Color Correction Matrix, 颜色矫正
  • Global Tone Mapping, 全局色调映射
  • Gamma Correction, Gamma映射
  • Edge Enhancement, 边缘增强
  • Brightness Contrast Control,亮度控制
  • Chorma Noise Reduction,Chorma域去噪
  • Lens Shading Correction, 阴影矫正
  • Luma Noise Reduction, Luma域去噪
  • Local Tone Mapping, 局部色调映射

文件结构

这个ez_ISP项目的树形结构如下所示。

```shell
ez_ISP
│  .gitignore
│  run.py
|  isp_pipeline.py
│  LICENSE
│  README.md

├─config
│      isp_config.yaml

├─assets
│      raw.png

├─algorithm
|     __init__.py
|     aaf.py
|     awb.py
│     bcc.py
│     blc.py
│     bnr.py
│     bpc.py
│     ccm.py
│     cfa.py
│     cnr.py
│     ee.py
|     fir.py
|     gmc.py
|     gtm.py
|     ltm.py
|     r2y.py
│     utils.py
│     y2r.py

├─test_images
│      test.RAW

设备:AMD Ryzen 5 5600 6-Core Processor@4.20 GHz,图像分辨率:1920x1080,运行时间如下:

Module ez_ISP
BPC 2975.53 ms
BLC 20.52 ms
AAF 3932.32 ms
AWB 19.02 ms
BNR 73.99 ms
CFA 11609.39 ms
CCM 132.62 ms
GTM 17.02 ms
GAC 17.02 ms
R2Y 111.10 ms
CNR 3905.38 ms
EE 4068.87.1s
HSC 56.34 ms
BBC 9.01 ms
Total pipeline 27.12 s

耗时如上,虽然不够快,但是易于使用和理解。

安装

你可以通过pip安装下面的包来安装ez_ISP。

  • The main package is numpy, and opencv-python is used for image I/O.
  • Other packages are used for the demo such as rawpy and yaml, time, os. 然后git clone ez_ISP项目,你就可以运行项目了。
git clone https://github.com/HuiiJi/ez_ISP.git
cd ez_ISP

确保你已经安装了上面的包,否则你运行项目时会报错。

如何使用

ez_ISP项目由run.py文件运行。

python run.py

show

在你运行run.py文件之前,请先配置config/isp_config.yaml文件,配置文件如下所示。

# -------------------- ISP Module Enable/Disable --------------------
enable:                
  BPC: True
  LCS: False                 # not implemented yet
  BLC: True
  AAF: True
  AWB: True
  BNR: False                 # not implemented yet
  CFA: True
  CCM: True
  GTM: True
  GMC: True
  R2Y: True
  CNR: True
  EE:  True
  BCC: True
  HSC: False                 # not implemented yet
  Y2R: True

# -------------------- Algorithm Params --------------------
RAW_img_path: '/mnt/cvisp/isp/ez_ISP/test_images/2DNR_Case_1_1.raw'
RAW_Height: 1080
RAW_Width: 1920
white_level: 1023
bayer_pattern: RGGB

BPC:
  bad_pixel_threshold: 30

LCS: ~

BLC:
  black_level_r: 256.0
  black_level_gr: 256.0
  black_level_gb: 256.0
  black_level_b: 256.0
  alpha: 1.        
  beta: 1.                  

AAF: ~

AWB:
  r_gain:  1.6             
  b_gain: 2.0            

BNR:
  BNR_method: 'bilateral'

CFA:
  CFA_method: 'bilinear'

CCM:
  ccm_matrix:
    - [1.631906, -0.381807, -0.250099]
    - [-0.298296, 1.614734, -0.316438]
    - [0.023770, -0.538501, 1.514732 ]

GTM:
  GTM_method: 'smoothstep'

GMC:
  gamma: 2.0

R2T: ~

CNR:
  CNR_method: 'gaussian'
  CNR_threshold: 0.3

EE:
  edge_enhancement_strength: 0.3

BCC:
  BCC_contrast: 0.1
  BCC_brightness: 10

HSC: ~

Y2R: ~

这个配置文件包含了所有的ISP模块,你可以根据你的需要来配置这些模块。

其中主要的参数如下所示。

  • enable: enable or disable the ISP module.
  • RAW_img_path: the path of the RAW image.
  • RAW_Height: the height of the RAW image.
  • RAW_Width: the width of the RAW image.
  • white_level: the white level of the RAW image.
  • bayer_pattern: the bayer pattern of the RAW image.

如果你不想使用某个模块,你可以将其enable设置为False。你必须配置的是RAW_img_pathRAW_HeightRAW_Width,其他的参数你可以根据你的需要来配置。结果将会保存在demo_outputs文件夹中。

课程

这里是一些关于ISP的课程,你可以从这些课程中了解更多关于ISP的知识。

相机相关

你可以从这些课程中了解更多关于ISP的知识,但是我认为这些课程对我来说并不是很有用,因为我不是一个相机工程师,我只是想学习ISP算法,所以我认为下面的课程对我来说更有用。

计算摄影

参考

这里是一些优秀开源的ISP项目,这些项目对我完成这个项目非常有帮助。

Python

C/C++

License

MIT 感谢你的关注! 如果你有任何问题,请联系我@HuiiJi。

About

This is a easy ISP (ez_ISP) for RAW to RGB conversion.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages