You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+48-12Lines changed: 48 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,8 +1,10 @@
1
1
# Fast Open Image Signal Processor (fast-openISP)
2
2
3
-
As told by its name, fast-openISP is a **faster** (and bugs-fixed) re-implementation of the [openISP](https://github.com/cruxopen/openISP) project.
3
+
As told by its name, fast-openISP is a **faster** (and bugs-fixed) re-implementation of
4
+
the [openISP](https://github.com/cruxopen/openISP) project.
4
5
5
-
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**.
6
+
Compared to C-style code in the official openISP repo, fast-openISP uses pure matrix implementations based on Numpy, and
7
+
increases processing speed **over 300 times**.
6
8
7
9
Here is the running time in my Ryzen 7 1700 8-core 3.00GHz machine with the 1920x1080 input Bayer array:
8
10
@@ -25,7 +27,6 @@ Here is the running time in my Ryzen 7 1700 8-core 3.00GHz machine with the 1920
25
27
|BBC |27.92s |0.03s |
26
28
|End-to-end pipeline|2894.41s|8.48s |
27
29
28
-
29
30
# Usage
30
31
31
32
Clone this repo and run
@@ -36,32 +37,67 @@ python demo.py
36
37
37
38
The ISP outputs will be saved to `./output` directory.
38
39
39
-
The only required package for pipeline execution is `numpy`.
40
-
41
-
`opencv-python` and `scikit-image` are required for data IO.
40
+
The only required package for pipeline execution is `numpy`.
42
41
42
+
`opencv-python` and `scikit-image` are required for data IO.
43
43
44
44
# Algorithms
45
45
46
-
All modules in fast-openISP reproduce [processing algorithms](https://github.com/cruxopen/openISP/blob/master/docs/Image%20Signal%20Processor.pdf) in openISP, except for EEH and BCC modules.
The official openISP uses the subtraction between the original and the gaussian-filtered Y-channel arrays as the edge map approximation. In fast-openISP, however, we replace gaussian with the bilateral filter, which gets better estimation to the edges, and consequently reduces the artifact when the enhancement gain is large. Besides, the processing to pixels in the non-edge region has been slightly improved.
52
+
The official openISP uses
53
+
an [asymmetric kernel](https://github.com/cruxopen/openISP/blob/49de48282e66bdb283779394a23c9c0d6ba238ff/isp_pipeline.py#L150)
54
+
to extract edge map. In fast-openISP, however, we use the subtraction between the original and the gaussian filtered
55
+
Y-channels as the edge estimation, and consequently reduces the artifact when the enhancement gain is large.
51
56
52
57
### BCC (brightness & contrast control)
53
58
54
-
The official openISP enhances the image contrast by pixel-wise enlarge 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.
55
-
59
+
The official openISP enhances the image contrast by pixel-wise enlarge the difference between pixel values and a
60
+
constant integer (128). In fast-openISP, we use the median value of the whole frame instead of a constant.
56
61
57
62
# Parameters
58
63
59
-
Tunable module 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 configuration file, and one yaml for one camera.
64
+
Tunable module parameters in fast-openISP are differently named from those in openISP, but they are all self-explained,
65
+
and no doubt you can easily tell the counterparts in two repos. All parameters are managed in a yaml configuration file,
0 commit comments