README walking through the settings in the tuning file, and initial thoughts
This commit is contained in:
parent
c89a2d24c2
commit
b47413100e
1 changed files with 125 additions and 0 deletions
|
|
@ -0,0 +1,125 @@
|
||||||
|
# A list of all the settings in a IMXxx.json:
|
||||||
|
|
||||||
|
## version:
|
||||||
|
|
||||||
|
I assume this needs to be 2.0
|
||||||
|
|
||||||
|
## target
|
||||||
|
|
||||||
|
Needs to be bcm2835
|
||||||
|
|
||||||
|
## Algorithms
|
||||||
|
|
||||||
|
### rpi.black_level
|
||||||
|
|
||||||
|
contains one key-value pair. `black_level: 4096`
|
||||||
|
|
||||||
|
### rpi.dpc
|
||||||
|
|
||||||
|
Defective pixel correction, default off(?)
|
||||||
|
|
||||||
|
### rpi.lux
|
||||||
|
|
||||||
|
For light sensors, not used. Can be emptied?
|
||||||
|
|
||||||
|
### rpi.noise
|
||||||
|
|
||||||
|
```
|
||||||
|
"reference_constant": 0,
|
||||||
|
"reference_slope": 3.67
|
||||||
|
```
|
||||||
|
|
||||||
|
### rpi.geq
|
||||||
|
|
||||||
|
Two elements. offset should be 65535 in all cases we've found. Slope unknown
|
||||||
|
|
||||||
|
### rpi.sdn
|
||||||
|
|
||||||
|
Spatial denoise. Warning on startup asks us to move it into rpi.denoise, even if empty
|
||||||
|
|
||||||
|
### rpi.awb
|
||||||
|
|
||||||
|
Auto white balance. Even though we don't use it, camera can't start without it being minimally populated, which is quite a lot
|
||||||
|
|
||||||
|
### rpi.alsc
|
||||||
|
|
||||||
|
Auto lens shading correction is calibrated by our microscope, and one suggestion is to ship this as a flat table (all 1s) and use that to check if the microscope is calibrated.
|
||||||
|
|
||||||
|
`n_iter: 0` (not adaptive)
|
||||||
|
|
||||||
|
_If we provide a flat one, then reset and disable flatfield correction will do the same thing. I'm also not sure these are persistent if you run one of them, then `ofm restart`_
|
||||||
|
|
||||||
|
### rpi.contrast
|
||||||
|
|
||||||
|
`ce_enable` should be 0 (disabled). Gamma curve linear or not is an open question
|
||||||
|
|
||||||
|
### rpi.ccm
|
||||||
|
|
||||||
|
We only want to ship one temperature. Currently it's 5000K, the temperature of the LED. However, the diffuser might affect this.
|
||||||
|
|
||||||
|
Different for HQ and version 2 cameras: currently we take the temperatures either side of 5000K from `/usr/share/libcamera/ipa/rpi/pisp/imx219.json` or `/usr/share/libcamera/ipa/rpi/pisp/imx477.json`
|
||||||
|
|
||||||
|
Python code:
|
||||||
|
|
||||||
|
```
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
temps = {4650:
|
||||||
|
np.array([
|
||||||
|
2.18174, -0.70887, -0.47287,
|
||||||
|
-0.70196, 2.76426, -1.06231,
|
||||||
|
-0.25157, -0.71978, 1.97135
|
||||||
|
]),
|
||||||
|
5858:
|
||||||
|
np.array(
|
||||||
|
[
|
||||||
|
2.32392, -0.88421, -0.43971,
|
||||||
|
-0.63821, 2.58348, -0.94527,
|
||||||
|
-0.28541, -0.54112, 1.82653
|
||||||
|
])
|
||||||
|
}
|
||||||
|
target_temp = 5000
|
||||||
|
temp_low, temp_high = sorted(temps.keys())
|
||||||
|
alpha = (target_temp - temp_low) / (temp_high - temp_low)
|
||||||
|
|
||||||
|
print(alpha)
|
||||||
|
|
||||||
|
ccm_interp = (1 - alpha) * temps[temp_low] + alpha * temps[temp_high]
|
||||||
|
print(np.round(ccm_interp, 6))
|
||||||
|
|
||||||
|
temps = {4559: np.array(
|
||||||
|
[
|
||||||
|
2.15423, -0.98143, -0.17279,
|
||||||
|
-0.38131, 2.14763, -0.76632,
|
||||||
|
-0.10069, -0.54383, 1.64452
|
||||||
|
]),
|
||||||
|
5881:np.array(
|
||||||
|
[
|
||||||
|
2.18464, -0.95493, -0.22971,
|
||||||
|
-0.36826, 2.00298, -0.63471,
|
||||||
|
-0.15219, -0.38055, 1.53274
|
||||||
|
])
|
||||||
|
}
|
||||||
|
target_temp = 5000
|
||||||
|
temp_low, temp_high = sorted(temps.keys())
|
||||||
|
alpha = (target_temp - temp_low) / (temp_high - temp_low)
|
||||||
|
|
||||||
|
print(alpha)
|
||||||
|
|
||||||
|
ccm_interp = (1 - alpha) * temps[temp_low] + alpha * temps[temp_high]
|
||||||
|
print(np.round(ccm_interp, 6))
|
||||||
|
```
|
||||||
|
|
||||||
|
This will be superseced by using a MacBeth target.
|
||||||
|
|
||||||
|
### rpi.sharpen
|
||||||
|
|
||||||
|
Currently empty. Sharpening might be something to add in post processing, but not here I expect.
|
||||||
|
|
||||||
|
### rpi.hdr
|
||||||
|
|
||||||
|
High dynamic range. Not relevant for us. Currently a short snippet.
|
||||||
|
|
||||||
|
### rpi.sync
|
||||||
|
|
||||||
|
Syncronising between cameras. Not something we're looking at anytime soon.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue