Message ID | 20241113223556.413637-4-geoffrey.vl@gmail.com |
---|---|
State | Accepted |
Headers | show |
Series |
|
Related | show |
Hi Geoffrey Thanks for sending this, always pleased to get support for new cameras! Just a few questions... There isn't much in the way of colour tuning - can you say if this is perhaps a mono sensor, or is it the case that someone might need to do more colour tuning in future? Generally we like to support the same sensors on Pi 5 as Pi 4, but I'm guessing it's not possible for you to make a Pi 5 tuning as well, is that right? Thanks David On Wed, 13 Nov 2024 at 22:44, Geoffrey Van Landeghem <geoffrey.vl@gmail.com> wrote: > > Signed-off-by: Geoffrey Van Landeghem <geoffrey.vl@gmail.com> > --- > src/ipa/rpi/vc4/data/imx462.json | 214 +++++++++++++++++++++++++++++++ > src/ipa/rpi/vc4/data/meson.build | 1 + > 2 files changed, 215 insertions(+) > create mode 100644 src/ipa/rpi/vc4/data/imx462.json > > diff --git a/src/ipa/rpi/vc4/data/imx462.json b/src/ipa/rpi/vc4/data/imx462.json > new file mode 100644 > index 00000000..8f41bf51 > --- /dev/null > +++ b/src/ipa/rpi/vc4/data/imx462.json > @@ -0,0 +1,214 @@ > +{ > + "version": 2.0, > + "target": "bcm2835", > + "algorithms": [ > + { > + "rpi.black_level": > + { > + "black_level": 3840 > + } > + }, > + { > + "rpi.dpc": { } > + }, > + { > + "rpi.lux": > + { > + "reference_shutter_speed": 6813, > + "reference_gain": 1.0, > + "reference_aperture": 1.0, > + "reference_lux": 890, > + "reference_Y": 12900 > + } > + }, > + { > + "rpi.noise": > + { > + "reference_constant": 0, > + "reference_slope": 2.67 > + } > + }, > + { > + "rpi.geq": > + { > + "offset": 187, > + "slope": 0.00842 > + } > + }, > + { > + "rpi.sdn": { } > + }, > + { > + "rpi.awb": > + { > + "bayes": 0 > + } > + }, > + { > + "rpi.agc": > + { > + "speed": 0.2, > + "metering_modes": > + { > + "matrix": > + { > + "weights": > + [ > + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 > + ] > + }, > + "centre-weighted": > + { > + "weights": > + [ > + 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 > + ] > + }, > + "spot": > + { > + "weights": > + [ > + 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 > + ] > + } > + }, > + "exposure_modes": > + { > + "normal": > + { > + "shutter": [ 10, 30000, 60000 ], > + "gain": [ 1.0, 2.0, 8.0 ] > + }, > + "short": > + { > + "shutter": [ 10, 5000, 10000, 20000, 120000 ], > + "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ] > + }, > + "long": > + { > + "shutter": [ 1000, 30000, 60000, 90000, 120000 ], > + "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ] > + } > + }, > + "constraint_modes": > + { > + "normal": [ ], > + "highlight": [ > + { > + "bound": "LOWER", > + "q_lo": 0.98, > + "q_hi": 1.0, > + "y_target": > + [ > + 0, 0.5, > + 1000, 0.5 > + ] > + }, > + { > + "bound": "UPPER", > + "q_lo": 0.98, > + "q_hi": 1.0, > + "y_target": > + [ > + 0, 0.8, > + 1000, 0.8 > + ] > + } > + ] > + }, > + "y_target": > + [ > + 0, 0.16, > + 1000, 0.16, > + 10000, 0.16 > + ] > + } > + }, > + { > + "rpi.alsc": > + { > + "omega": 1.3, > + "n_iter": 100, > + "luminance_strength": 0.7, > + "luminance_lut": > + [ > + 2.844, 2.349, 2.018, 1.775, 1.599, 1.466, 1.371, 1.321, 1.306, 1.316, 1.357, 1.439, 1.552, 1.705, 1.915, 2.221, > + 2.576, 2.151, 1.851, 1.639, 1.478, 1.358, 1.272, 1.231, 1.218, 1.226, 1.262, 1.335, 1.438, 1.571, 1.766, 2.067, > + 2.381, 2.005, 1.739, 1.545, 1.389, 1.278, 1.204, 1.166, 1.153, 1.161, 1.194, 1.263, 1.356, 1.489, 1.671, 1.943, > + 2.242, 1.899, 1.658, 1.481, 1.329, 1.225, 1.156, 1.113, 1.096, 1.107, 1.143, 1.201, 1.289, 1.423, 1.607, 1.861, > + 2.152, 1.831, 1.602, 1.436, 1.291, 1.193, 1.121, 1.069, 1.047, 1.062, 1.107, 1.166, 1.249, 1.384, 1.562, 1.801, > + 2.104, 1.795, 1.572, 1.407, 1.269, 1.174, 1.099, 1.041, 1.008, 1.029, 1.083, 1.146, 1.232, 1.364, 1.547, 1.766, > + 2.104, 1.796, 1.572, 1.403, 1.264, 1.171, 1.097, 1.036, 1.001, 1.025, 1.077, 1.142, 1.231, 1.363, 1.549, 1.766, > + 2.148, 1.827, 1.594, 1.413, 1.276, 1.184, 1.114, 1.062, 1.033, 1.049, 1.092, 1.153, 1.242, 1.383, 1.577, 1.795, > + 2.211, 1.881, 1.636, 1.455, 1.309, 1.214, 1.149, 1.104, 1.081, 1.089, 1.125, 1.184, 1.273, 1.423, 1.622, 1.846, > + 2.319, 1.958, 1.698, 1.516, 1.362, 1.262, 1.203, 1.156, 1.137, 1.142, 1.171, 1.229, 1.331, 1.484, 1.682, 1.933, > + 2.459, 2.072, 1.789, 1.594, 1.441, 1.331, 1.261, 1.219, 1.199, 1.205, 1.232, 1.301, 1.414, 1.571, 1.773, 2.052, > + 2.645, 2.206, 1.928, 1.728, 1.559, 1.451, 1.352, 1.301, 1.282, 1.289, 1.319, 1.395, 1.519, 1.685, 1.904, 2.227 > + ], > + "sigma": 0.005, > + "sigma_Cb": 0.005 > + } > + }, > + { > + "rpi.contrast": > + { > + "ce_enable": 1, > + "gamma_curve": > + [ > + 0, 0, > + 1024, 5040, > + 2048, 9338, > + 3072, 12356, > + 4096, 15312, > + 5120, 18051, > + 6144, 20790, > + 7168, 23193, > + 8192, 25744, > + 9216, 27942, > + 10240, 30035, > + 11264, 32005, > + 12288, 33975, > + 13312, 35815, > + 14336, 37600, > + 15360, 39168, > + 16384, 40642, > + 18432, 43379, > + 20480, 45749, > + 22528, 47753, > + 24576, 49621, > + 26624, 51253, > + 28672, 52698, > + 30720, 53796, > + 32768, 54876, > + 36864, 57012, > + 40960, 58656, > + 45056, 59954, > + 49152, 61183, > + 53248, 62355, > + 57344, 63419, > + 61440, 64476, > + 65535, 65535 > + ] > + } > + }, > + { > + "rpi.sharpen": { } > + }, > + { > + "rpi.ccm": > + { > + "ccms": [ > + { > + "ct": 3900, > + "ccm": > + [ > + 1.54659, -0.17707, -0.36953, > + -0.51471, 1.72733, -0.21262, > + 0.06667, -0.92279, 1.85612 > + ] > + } > + ] > + } > + } > + ] > +} > \ No newline at end of file > diff --git a/src/ipa/rpi/vc4/data/meson.build b/src/ipa/rpi/vc4/data/meson.build > index 8c34a1a5..6b4d443f 100644 > --- a/src/ipa/rpi/vc4/data/meson.build > +++ b/src/ipa/rpi/vc4/data/meson.build > @@ -8,6 +8,7 @@ conf_files = files([ > 'imx296.json', > 'imx296_mono.json', > 'imx378.json', > + 'imx462.json', > 'imx477.json', > 'imx477_noir.json', > 'imx477_scientific.json', > -- > 2.43.0 >
Hi David, Neither the IMX327, nor the IMX426 tuning files actually present good camera calibration. They're just a copy of IMX290 (color). I've been hesitating to add those copies because of that, as without them it would be obvious that customers need to bring their own tuning. On the other hand, adding them makes it more of a plug and play solution, and if someone is not pleased with the output they can always start tuning the camera themselves. In the end, as discussed in the libcamera fork for RPI, we decided on adding the plain copies. Unfortunately I don't own the equipment to perform good camera tuning, otherwise I would have done the job. I don't even own the IMX327, I only own the Inno-maker IMX426 (which is of questionable quality). The approach for Pi5 would be similar, in that we copy the IMX290 tuning just to get it going, and see if someone in the future is interested in providing a better tune. Actually, regarding those copies, there is already my PR for that on the Raspberry Pi fork for libcamera. I hope that's good enough. Kind regards, Geoffrey Van Landeghem Op vr 15 nov 2024 om 14:47 schreef David Plowman <david.plowman@raspberrypi.com>: > > Hi Geoffrey > > Thanks for sending this, always pleased to get support for new > cameras! Just a few questions... > > There isn't much in the way of colour tuning - can you say if this is > perhaps a mono sensor, or is it the case that someone might need to do > more colour tuning in future? > > Generally we like to support the same sensors on Pi 5 as Pi 4, but I'm > guessing it's not possible for you to make a Pi 5 tuning as well, is > that right? > > Thanks > David > > On Wed, 13 Nov 2024 at 22:44, Geoffrey Van Landeghem > <geoffrey.vl@gmail.com> wrote: > > > > Signed-off-by: Geoffrey Van Landeghem <geoffrey.vl@gmail.com> > > --- > > src/ipa/rpi/vc4/data/imx462.json | 214 +++++++++++++++++++++++++++++++ > > src/ipa/rpi/vc4/data/meson.build | 1 + > > 2 files changed, 215 insertions(+) > > create mode 100644 src/ipa/rpi/vc4/data/imx462.json > > > > diff --git a/src/ipa/rpi/vc4/data/imx462.json b/src/ipa/rpi/vc4/data/imx462.json > > new file mode 100644 > > index 00000000..8f41bf51 > > --- /dev/null > > +++ b/src/ipa/rpi/vc4/data/imx462.json > > @@ -0,0 +1,214 @@ > > +{ > > + "version": 2.0, > > + "target": "bcm2835", > > + "algorithms": [ > > + { > > + "rpi.black_level": > > + { > > + "black_level": 3840 > > + } > > + }, > > + { > > + "rpi.dpc": { } > > + }, > > + { > > + "rpi.lux": > > + { > > + "reference_shutter_speed": 6813, > > + "reference_gain": 1.0, > > + "reference_aperture": 1.0, > > + "reference_lux": 890, > > + "reference_Y": 12900 > > + } > > + }, > > + { > > + "rpi.noise": > > + { > > + "reference_constant": 0, > > + "reference_slope": 2.67 > > + } > > + }, > > + { > > + "rpi.geq": > > + { > > + "offset": 187, > > + "slope": 0.00842 > > + } > > + }, > > + { > > + "rpi.sdn": { } > > + }, > > + { > > + "rpi.awb": > > + { > > + "bayes": 0 > > + } > > + }, > > + { > > + "rpi.agc": > > + { > > + "speed": 0.2, > > + "metering_modes": > > + { > > + "matrix": > > + { > > + "weights": > > + [ > > + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 > > + ] > > + }, > > + "centre-weighted": > > + { > > + "weights": > > + [ > > + 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 > > + ] > > + }, > > + "spot": > > + { > > + "weights": > > + [ > > + 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 > > + ] > > + } > > + }, > > + "exposure_modes": > > + { > > + "normal": > > + { > > + "shutter": [ 10, 30000, 60000 ], > > + "gain": [ 1.0, 2.0, 8.0 ] > > + }, > > + "short": > > + { > > + "shutter": [ 10, 5000, 10000, 20000, 120000 ], > > + "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ] > > + }, > > + "long": > > + { > > + "shutter": [ 1000, 30000, 60000, 90000, 120000 ], > > + "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ] > > + } > > + }, > > + "constraint_modes": > > + { > > + "normal": [ ], > > + "highlight": [ > > + { > > + "bound": "LOWER", > > + "q_lo": 0.98, > > + "q_hi": 1.0, > > + "y_target": > > + [ > > + 0, 0.5, > > + 1000, 0.5 > > + ] > > + }, > > + { > > + "bound": "UPPER", > > + "q_lo": 0.98, > > + "q_hi": 1.0, > > + "y_target": > > + [ > > + 0, 0.8, > > + 1000, 0.8 > > + ] > > + } > > + ] > > + }, > > + "y_target": > > + [ > > + 0, 0.16, > > + 1000, 0.16, > > + 10000, 0.16 > > + ] > > + } > > + }, > > + { > > + "rpi.alsc": > > + { > > + "omega": 1.3, > > + "n_iter": 100, > > + "luminance_strength": 0.7, > > + "luminance_lut": > > + [ > > + 2.844, 2.349, 2.018, 1.775, 1.599, 1.466, 1.371, 1.321, 1.306, 1.316, 1.357, 1.439, 1.552, 1.705, 1.915, 2.221, > > + 2.576, 2.151, 1.851, 1.639, 1.478, 1.358, 1.272, 1.231, 1.218, 1.226, 1.262, 1.335, 1.438, 1.571, 1.766, 2.067, > > + 2.381, 2.005, 1.739, 1.545, 1.389, 1.278, 1.204, 1.166, 1.153, 1.161, 1.194, 1.263, 1.356, 1.489, 1.671, 1.943, > > + 2.242, 1.899, 1.658, 1.481, 1.329, 1.225, 1.156, 1.113, 1.096, 1.107, 1.143, 1.201, 1.289, 1.423, 1.607, 1.861, > > + 2.152, 1.831, 1.602, 1.436, 1.291, 1.193, 1.121, 1.069, 1.047, 1.062, 1.107, 1.166, 1.249, 1.384, 1.562, 1.801, > > + 2.104, 1.795, 1.572, 1.407, 1.269, 1.174, 1.099, 1.041, 1.008, 1.029, 1.083, 1.146, 1.232, 1.364, 1.547, 1.766, > > + 2.104, 1.796, 1.572, 1.403, 1.264, 1.171, 1.097, 1.036, 1.001, 1.025, 1.077, 1.142, 1.231, 1.363, 1.549, 1.766, > > + 2.148, 1.827, 1.594, 1.413, 1.276, 1.184, 1.114, 1.062, 1.033, 1.049, 1.092, 1.153, 1.242, 1.383, 1.577, 1.795, > > + 2.211, 1.881, 1.636, 1.455, 1.309, 1.214, 1.149, 1.104, 1.081, 1.089, 1.125, 1.184, 1.273, 1.423, 1.622, 1.846, > > + 2.319, 1.958, 1.698, 1.516, 1.362, 1.262, 1.203, 1.156, 1.137, 1.142, 1.171, 1.229, 1.331, 1.484, 1.682, 1.933, > > + 2.459, 2.072, 1.789, 1.594, 1.441, 1.331, 1.261, 1.219, 1.199, 1.205, 1.232, 1.301, 1.414, 1.571, 1.773, 2.052, > > + 2.645, 2.206, 1.928, 1.728, 1.559, 1.451, 1.352, 1.301, 1.282, 1.289, 1.319, 1.395, 1.519, 1.685, 1.904, 2.227 > > + ], > > + "sigma": 0.005, > > + "sigma_Cb": 0.005 > > + } > > + }, > > + { > > + "rpi.contrast": > > + { > > + "ce_enable": 1, > > + "gamma_curve": > > + [ > > + 0, 0, > > + 1024, 5040, > > + 2048, 9338, > > + 3072, 12356, > > + 4096, 15312, > > + 5120, 18051, > > + 6144, 20790, > > + 7168, 23193, > > + 8192, 25744, > > + 9216, 27942, > > + 10240, 30035, > > + 11264, 32005, > > + 12288, 33975, > > + 13312, 35815, > > + 14336, 37600, > > + 15360, 39168, > > + 16384, 40642, > > + 18432, 43379, > > + 20480, 45749, > > + 22528, 47753, > > + 24576, 49621, > > + 26624, 51253, > > + 28672, 52698, > > + 30720, 53796, > > + 32768, 54876, > > + 36864, 57012, > > + 40960, 58656, > > + 45056, 59954, > > + 49152, 61183, > > + 53248, 62355, > > + 57344, 63419, > > + 61440, 64476, > > + 65535, 65535 > > + ] > > + } > > + }, > > + { > > + "rpi.sharpen": { } > > + }, > > + { > > + "rpi.ccm": > > + { > > + "ccms": [ > > + { > > + "ct": 3900, > > + "ccm": > > + [ > > + 1.54659, -0.17707, -0.36953, > > + -0.51471, 1.72733, -0.21262, > > + 0.06667, -0.92279, 1.85612 > > + ] > > + } > > + ] > > + } > > + } > > + ] > > +} > > \ No newline at end of file > > diff --git a/src/ipa/rpi/vc4/data/meson.build b/src/ipa/rpi/vc4/data/meson.build > > index 8c34a1a5..6b4d443f 100644 > > --- a/src/ipa/rpi/vc4/data/meson.build > > +++ b/src/ipa/rpi/vc4/data/meson.build > > @@ -8,6 +8,7 @@ conf_files = files([ > > 'imx296.json', > > 'imx296_mono.json', > > 'imx378.json', > > + 'imx462.json', > > 'imx477.json', > > 'imx477_noir.json', > > 'imx477_scientific.json', > > -- > > 2.43.0 > >
Hi Geoffrey Thanks for the reply! On Fri, 15 Nov 2024 at 14:30, Geoffrey Van Landeghem <geoffrey.vl@gmail.com> wrote: > > Hi David, > > Neither the IMX327, nor the IMX426 tuning files actually present good > camera calibration. They're just a copy of IMX290 (color). I've been > hesitating to add those copies because of that, as without them it > would be obvious that customers need to bring their own tuning. On the > other hand, adding them makes it more of a plug and play solution, and > if someone is not pleased with the output they can always start tuning > the camera themselves. In the end, as discussed in the libcamera fork > for RPI, we decided on adding the plain copies. Unfortunately I don't > own the equipment to perform good camera tuning, otherwise I would > have done the job. I don't even own the IMX327, I only own the > Inno-maker IMX426 (which is of questionable quality). > The approach for Pi5 would be similar, in that we copy the IMX290 > tuning just to get it going, and see if someone in the future is > interested in providing a better tune. Actually, regarding those > copies, there is already my PR for that on the Raspberry Pi fork for > libcamera. I hope that's good enough. Great, thanks for the clarification. I certainly don't want to stop us from accepting changes that make life easier for other developers, so I think this is fine. I wonder if we might add a comment to the file to the effect that this is an interim tuning. That would at least clarify the status for folks (like me) who aren't familiar with the file's provenance. Unfortunately JSON doesn't (strictly speaking) allow comments, so perhaps we could add "comment": "This is an interim tuning only. Please consider doing a more formal tuning for your application.", just below "target". I think the parser ignores fields it's not expecting, so this should be fine (better double-check, though!). With that change I'd be happy to add my tag to both these files. @Naush, would you be OK with that too? Thanks again! David > > Kind regards, > Geoffrey Van Landeghem > > Op vr 15 nov 2024 om 14:47 schreef David Plowman > <david.plowman@raspberrypi.com>: > > > > Hi Geoffrey > > > > Thanks for sending this, always pleased to get support for new > > cameras! Just a few questions... > > > > There isn't much in the way of colour tuning - can you say if this is > > perhaps a mono sensor, or is it the case that someone might need to do > > more colour tuning in future? > > > > Generally we like to support the same sensors on Pi 5 as Pi 4, but I'm > > guessing it's not possible for you to make a Pi 5 tuning as well, is > > that right? > > > > Thanks > > David > > > > On Wed, 13 Nov 2024 at 22:44, Geoffrey Van Landeghem > > <geoffrey.vl@gmail.com> wrote: > > > > > > Signed-off-by: Geoffrey Van Landeghem <geoffrey.vl@gmail.com> > > > --- > > > src/ipa/rpi/vc4/data/imx462.json | 214 +++++++++++++++++++++++++++++++ > > > src/ipa/rpi/vc4/data/meson.build | 1 + > > > 2 files changed, 215 insertions(+) > > > create mode 100644 src/ipa/rpi/vc4/data/imx462.json > > > > > > diff --git a/src/ipa/rpi/vc4/data/imx462.json b/src/ipa/rpi/vc4/data/imx462.json > > > new file mode 100644 > > > index 00000000..8f41bf51 > > > --- /dev/null > > > +++ b/src/ipa/rpi/vc4/data/imx462.json > > > @@ -0,0 +1,214 @@ > > > +{ > > > + "version": 2.0, > > > + "target": "bcm2835", > > > + "algorithms": [ > > > + { > > > + "rpi.black_level": > > > + { > > > + "black_level": 3840 > > > + } > > > + }, > > > + { > > > + "rpi.dpc": { } > > > + }, > > > + { > > > + "rpi.lux": > > > + { > > > + "reference_shutter_speed": 6813, > > > + "reference_gain": 1.0, > > > + "reference_aperture": 1.0, > > > + "reference_lux": 890, > > > + "reference_Y": 12900 > > > + } > > > + }, > > > + { > > > + "rpi.noise": > > > + { > > > + "reference_constant": 0, > > > + "reference_slope": 2.67 > > > + } > > > + }, > > > + { > > > + "rpi.geq": > > > + { > > > + "offset": 187, > > > + "slope": 0.00842 > > > + } > > > + }, > > > + { > > > + "rpi.sdn": { } > > > + }, > > > + { > > > + "rpi.awb": > > > + { > > > + "bayes": 0 > > > + } > > > + }, > > > + { > > > + "rpi.agc": > > > + { > > > + "speed": 0.2, > > > + "metering_modes": > > > + { > > > + "matrix": > > > + { > > > + "weights": > > > + [ > > > + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 > > > + ] > > > + }, > > > + "centre-weighted": > > > + { > > > + "weights": > > > + [ > > > + 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 > > > + ] > > > + }, > > > + "spot": > > > + { > > > + "weights": > > > + [ > > > + 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 > > > + ] > > > + } > > > + }, > > > + "exposure_modes": > > > + { > > > + "normal": > > > + { > > > + "shutter": [ 10, 30000, 60000 ], > > > + "gain": [ 1.0, 2.0, 8.0 ] > > > + }, > > > + "short": > > > + { > > > + "shutter": [ 10, 5000, 10000, 20000, 120000 ], > > > + "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ] > > > + }, > > > + "long": > > > + { > > > + "shutter": [ 1000, 30000, 60000, 90000, 120000 ], > > > + "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ] > > > + } > > > + }, > > > + "constraint_modes": > > > + { > > > + "normal": [ ], > > > + "highlight": [ > > > + { > > > + "bound": "LOWER", > > > + "q_lo": 0.98, > > > + "q_hi": 1.0, > > > + "y_target": > > > + [ > > > + 0, 0.5, > > > + 1000, 0.5 > > > + ] > > > + }, > > > + { > > > + "bound": "UPPER", > > > + "q_lo": 0.98, > > > + "q_hi": 1.0, > > > + "y_target": > > > + [ > > > + 0, 0.8, > > > + 1000, 0.8 > > > + ] > > > + } > > > + ] > > > + }, > > > + "y_target": > > > + [ > > > + 0, 0.16, > > > + 1000, 0.16, > > > + 10000, 0.16 > > > + ] > > > + } > > > + }, > > > + { > > > + "rpi.alsc": > > > + { > > > + "omega": 1.3, > > > + "n_iter": 100, > > > + "luminance_strength": 0.7, > > > + "luminance_lut": > > > + [ > > > + 2.844, 2.349, 2.018, 1.775, 1.599, 1.466, 1.371, 1.321, 1.306, 1.316, 1.357, 1.439, 1.552, 1.705, 1.915, 2.221, > > > + 2.576, 2.151, 1.851, 1.639, 1.478, 1.358, 1.272, 1.231, 1.218, 1.226, 1.262, 1.335, 1.438, 1.571, 1.766, 2.067, > > > + 2.381, 2.005, 1.739, 1.545, 1.389, 1.278, 1.204, 1.166, 1.153, 1.161, 1.194, 1.263, 1.356, 1.489, 1.671, 1.943, > > > + 2.242, 1.899, 1.658, 1.481, 1.329, 1.225, 1.156, 1.113, 1.096, 1.107, 1.143, 1.201, 1.289, 1.423, 1.607, 1.861, > > > + 2.152, 1.831, 1.602, 1.436, 1.291, 1.193, 1.121, 1.069, 1.047, 1.062, 1.107, 1.166, 1.249, 1.384, 1.562, 1.801, > > > + 2.104, 1.795, 1.572, 1.407, 1.269, 1.174, 1.099, 1.041, 1.008, 1.029, 1.083, 1.146, 1.232, 1.364, 1.547, 1.766, > > > + 2.104, 1.796, 1.572, 1.403, 1.264, 1.171, 1.097, 1.036, 1.001, 1.025, 1.077, 1.142, 1.231, 1.363, 1.549, 1.766, > > > + 2.148, 1.827, 1.594, 1.413, 1.276, 1.184, 1.114, 1.062, 1.033, 1.049, 1.092, 1.153, 1.242, 1.383, 1.577, 1.795, > > > + 2.211, 1.881, 1.636, 1.455, 1.309, 1.214, 1.149, 1.104, 1.081, 1.089, 1.125, 1.184, 1.273, 1.423, 1.622, 1.846, > > > + 2.319, 1.958, 1.698, 1.516, 1.362, 1.262, 1.203, 1.156, 1.137, 1.142, 1.171, 1.229, 1.331, 1.484, 1.682, 1.933, > > > + 2.459, 2.072, 1.789, 1.594, 1.441, 1.331, 1.261, 1.219, 1.199, 1.205, 1.232, 1.301, 1.414, 1.571, 1.773, 2.052, > > > + 2.645, 2.206, 1.928, 1.728, 1.559, 1.451, 1.352, 1.301, 1.282, 1.289, 1.319, 1.395, 1.519, 1.685, 1.904, 2.227 > > > + ], > > > + "sigma": 0.005, > > > + "sigma_Cb": 0.005 > > > + } > > > + }, > > > + { > > > + "rpi.contrast": > > > + { > > > + "ce_enable": 1, > > > + "gamma_curve": > > > + [ > > > + 0, 0, > > > + 1024, 5040, > > > + 2048, 9338, > > > + 3072, 12356, > > > + 4096, 15312, > > > + 5120, 18051, > > > + 6144, 20790, > > > + 7168, 23193, > > > + 8192, 25744, > > > + 9216, 27942, > > > + 10240, 30035, > > > + 11264, 32005, > > > + 12288, 33975, > > > + 13312, 35815, > > > + 14336, 37600, > > > + 15360, 39168, > > > + 16384, 40642, > > > + 18432, 43379, > > > + 20480, 45749, > > > + 22528, 47753, > > > + 24576, 49621, > > > + 26624, 51253, > > > + 28672, 52698, > > > + 30720, 53796, > > > + 32768, 54876, > > > + 36864, 57012, > > > + 40960, 58656, > > > + 45056, 59954, > > > + 49152, 61183, > > > + 53248, 62355, > > > + 57344, 63419, > > > + 61440, 64476, > > > + 65535, 65535 > > > + ] > > > + } > > > + }, > > > + { > > > + "rpi.sharpen": { } > > > + }, > > > + { > > > + "rpi.ccm": > > > + { > > > + "ccms": [ > > > + { > > > + "ct": 3900, > > > + "ccm": > > > + [ > > > + 1.54659, -0.17707, -0.36953, > > > + -0.51471, 1.72733, -0.21262, > > > + 0.06667, -0.92279, 1.85612 > > > + ] > > > + } > > > + ] > > > + } > > > + } > > > + ] > > > +} > > > \ No newline at end of file > > > diff --git a/src/ipa/rpi/vc4/data/meson.build b/src/ipa/rpi/vc4/data/meson.build > > > index 8c34a1a5..6b4d443f 100644 > > > --- a/src/ipa/rpi/vc4/data/meson.build > > > +++ b/src/ipa/rpi/vc4/data/meson.build > > > @@ -8,6 +8,7 @@ conf_files = files([ > > > 'imx296.json', > > > 'imx296_mono.json', > > > 'imx378.json', > > > + 'imx462.json', > > > 'imx477.json', > > > 'imx477_noir.json', > > > 'imx477_scientific.json', > > > -- > > > 2.43.0 > > >
On Fri, Nov 15, 2024 at 03:31:50PM +0000, David Plowman wrote: > Hi Geoffrey > > Thanks for the reply! > > On Fri, 15 Nov 2024 at 14:30, Geoffrey Van Landeghem > <geoffrey.vl@gmail.com> wrote: > > > > Hi David, > > > > Neither the IMX327, nor the IMX426 tuning files actually present good > > camera calibration. They're just a copy of IMX290 (color). I've been > > hesitating to add those copies because of that, as without them it > > would be obvious that customers need to bring their own tuning. On the > > other hand, adding them makes it more of a plug and play solution, and > > if someone is not pleased with the output they can always start tuning > > the camera themselves. In the end, as discussed in the libcamera fork > > for RPI, we decided on adding the plain copies. Unfortunately I don't > > own the equipment to perform good camera tuning, otherwise I would > > have done the job. I don't even own the IMX327, I only own the > > Inno-maker IMX426 (which is of questionable quality). > > The approach for Pi5 would be similar, in that we copy the IMX290 > > tuning just to get it going, and see if someone in the future is > > interested in providing a better tune. Actually, regarding those > > copies, there is already my PR for that on the Raspberry Pi fork for > > libcamera. I hope that's good enough. > > Great, thanks for the clarification. I certainly don't want to stop us > from accepting changes that make life easier for other developers, so > I think this is fine. > > I wonder if we might add a comment to the file to the effect that this > is an interim tuning. That would at least clarify the status for folks > (like me) who aren't familiar with the file's provenance. > Unfortunately JSON doesn't (strictly speaking) allow comments, so We parse JSON files as YAML, so comments shouldn't make the parser choke. It depends if you want to keep compatibility with JSON parsers. > perhaps we could add > > "comment": "This is an interim tuning only. Please consider doing a > more formal tuning for your application.", Or maybe "description" instead of "comment" ? Maybe I'm too influenced by DT bindings :-) > just below "target". I think the parser ignores fields it's not > expecting, so this should be fine (better double-check, though!). > > With that change I'd be happy to add my tag to both these files. > > @Naush, would you be OK with that too? > > Thanks again! > David > > > > > Kind regards, > > Geoffrey Van Landeghem > > > > Op vr 15 nov 2024 om 14:47 schreef David Plowman > > <david.plowman@raspberrypi.com>: > > > > > > Hi Geoffrey > > > > > > Thanks for sending this, always pleased to get support for new > > > cameras! Just a few questions... > > > > > > There isn't much in the way of colour tuning - can you say if this is > > > perhaps a mono sensor, or is it the case that someone might need to do > > > more colour tuning in future? > > > > > > Generally we like to support the same sensors on Pi 5 as Pi 4, but I'm > > > guessing it's not possible for you to make a Pi 5 tuning as well, is > > > that right? > > > > > > Thanks > > > David > > > > > > On Wed, 13 Nov 2024 at 22:44, Geoffrey Van Landeghem > > > <geoffrey.vl@gmail.com> wrote: > > > > > > > > Signed-off-by: Geoffrey Van Landeghem <geoffrey.vl@gmail.com> > > > > --- > > > > src/ipa/rpi/vc4/data/imx462.json | 214 +++++++++++++++++++++++++++++++ > > > > src/ipa/rpi/vc4/data/meson.build | 1 + > > > > 2 files changed, 215 insertions(+) > > > > create mode 100644 src/ipa/rpi/vc4/data/imx462.json > > > > > > > > diff --git a/src/ipa/rpi/vc4/data/imx462.json b/src/ipa/rpi/vc4/data/imx462.json > > > > new file mode 100644 > > > > index 00000000..8f41bf51 > > > > --- /dev/null > > > > +++ b/src/ipa/rpi/vc4/data/imx462.json > > > > @@ -0,0 +1,214 @@ > > > > +{ > > > > + "version": 2.0, > > > > + "target": "bcm2835", > > > > + "algorithms": [ > > > > + { > > > > + "rpi.black_level": > > > > + { > > > > + "black_level": 3840 > > > > + } > > > > + }, > > > > + { > > > > + "rpi.dpc": { } > > > > + }, > > > > + { > > > > + "rpi.lux": > > > > + { > > > > + "reference_shutter_speed": 6813, > > > > + "reference_gain": 1.0, > > > > + "reference_aperture": 1.0, > > > > + "reference_lux": 890, > > > > + "reference_Y": 12900 > > > > + } > > > > + }, > > > > + { > > > > + "rpi.noise": > > > > + { > > > > + "reference_constant": 0, > > > > + "reference_slope": 2.67 > > > > + } > > > > + }, > > > > + { > > > > + "rpi.geq": > > > > + { > > > > + "offset": 187, > > > > + "slope": 0.00842 > > > > + } > > > > + }, > > > > + { > > > > + "rpi.sdn": { } > > > > + }, > > > > + { > > > > + "rpi.awb": > > > > + { > > > > + "bayes": 0 > > > > + } > > > > + }, > > > > + { > > > > + "rpi.agc": > > > > + { > > > > + "speed": 0.2, > > > > + "metering_modes": > > > > + { > > > > + "matrix": > > > > + { > > > > + "weights": > > > > + [ > > > > + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 > > > > + ] > > > > + }, > > > > + "centre-weighted": > > > > + { > > > > + "weights": > > > > + [ > > > > + 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 > > > > + ] > > > > + }, > > > > + "spot": > > > > + { > > > > + "weights": > > > > + [ > > > > + 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 > > > > + ] > > > > + } > > > > + }, > > > > + "exposure_modes": > > > > + { > > > > + "normal": > > > > + { > > > > + "shutter": [ 10, 30000, 60000 ], > > > > + "gain": [ 1.0, 2.0, 8.0 ] > > > > + }, > > > > + "short": > > > > + { > > > > + "shutter": [ 10, 5000, 10000, 20000, 120000 ], > > > > + "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ] > > > > + }, > > > > + "long": > > > > + { > > > > + "shutter": [ 1000, 30000, 60000, 90000, 120000 ], > > > > + "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ] > > > > + } > > > > + }, > > > > + "constraint_modes": > > > > + { > > > > + "normal": [ ], > > > > + "highlight": [ > > > > + { > > > > + "bound": "LOWER", > > > > + "q_lo": 0.98, > > > > + "q_hi": 1.0, > > > > + "y_target": > > > > + [ > > > > + 0, 0.5, > > > > + 1000, 0.5 > > > > + ] > > > > + }, > > > > + { > > > > + "bound": "UPPER", > > > > + "q_lo": 0.98, > > > > + "q_hi": 1.0, > > > > + "y_target": > > > > + [ > > > > + 0, 0.8, > > > > + 1000, 0.8 > > > > + ] > > > > + } > > > > + ] > > > > + }, > > > > + "y_target": > > > > + [ > > > > + 0, 0.16, > > > > + 1000, 0.16, > > > > + 10000, 0.16 > > > > + ] > > > > + } > > > > + }, > > > > + { > > > > + "rpi.alsc": > > > > + { > > > > + "omega": 1.3, > > > > + "n_iter": 100, > > > > + "luminance_strength": 0.7, > > > > + "luminance_lut": > > > > + [ > > > > + 2.844, 2.349, 2.018, 1.775, 1.599, 1.466, 1.371, 1.321, 1.306, 1.316, 1.357, 1.439, 1.552, 1.705, 1.915, 2.221, > > > > + 2.576, 2.151, 1.851, 1.639, 1.478, 1.358, 1.272, 1.231, 1.218, 1.226, 1.262, 1.335, 1.438, 1.571, 1.766, 2.067, > > > > + 2.381, 2.005, 1.739, 1.545, 1.389, 1.278, 1.204, 1.166, 1.153, 1.161, 1.194, 1.263, 1.356, 1.489, 1.671, 1.943, > > > > + 2.242, 1.899, 1.658, 1.481, 1.329, 1.225, 1.156, 1.113, 1.096, 1.107, 1.143, 1.201, 1.289, 1.423, 1.607, 1.861, > > > > + 2.152, 1.831, 1.602, 1.436, 1.291, 1.193, 1.121, 1.069, 1.047, 1.062, 1.107, 1.166, 1.249, 1.384, 1.562, 1.801, > > > > + 2.104, 1.795, 1.572, 1.407, 1.269, 1.174, 1.099, 1.041, 1.008, 1.029, 1.083, 1.146, 1.232, 1.364, 1.547, 1.766, > > > > + 2.104, 1.796, 1.572, 1.403, 1.264, 1.171, 1.097, 1.036, 1.001, 1.025, 1.077, 1.142, 1.231, 1.363, 1.549, 1.766, > > > > + 2.148, 1.827, 1.594, 1.413, 1.276, 1.184, 1.114, 1.062, 1.033, 1.049, 1.092, 1.153, 1.242, 1.383, 1.577, 1.795, > > > > + 2.211, 1.881, 1.636, 1.455, 1.309, 1.214, 1.149, 1.104, 1.081, 1.089, 1.125, 1.184, 1.273, 1.423, 1.622, 1.846, > > > > + 2.319, 1.958, 1.698, 1.516, 1.362, 1.262, 1.203, 1.156, 1.137, 1.142, 1.171, 1.229, 1.331, 1.484, 1.682, 1.933, > > > > + 2.459, 2.072, 1.789, 1.594, 1.441, 1.331, 1.261, 1.219, 1.199, 1.205, 1.232, 1.301, 1.414, 1.571, 1.773, 2.052, > > > > + 2.645, 2.206, 1.928, 1.728, 1.559, 1.451, 1.352, 1.301, 1.282, 1.289, 1.319, 1.395, 1.519, 1.685, 1.904, 2.227 > > > > + ], > > > > + "sigma": 0.005, > > > > + "sigma_Cb": 0.005 > > > > + } > > > > + }, > > > > + { > > > > + "rpi.contrast": > > > > + { > > > > + "ce_enable": 1, > > > > + "gamma_curve": > > > > + [ > > > > + 0, 0, > > > > + 1024, 5040, > > > > + 2048, 9338, > > > > + 3072, 12356, > > > > + 4096, 15312, > > > > + 5120, 18051, > > > > + 6144, 20790, > > > > + 7168, 23193, > > > > + 8192, 25744, > > > > + 9216, 27942, > > > > + 10240, 30035, > > > > + 11264, 32005, > > > > + 12288, 33975, > > > > + 13312, 35815, > > > > + 14336, 37600, > > > > + 15360, 39168, > > > > + 16384, 40642, > > > > + 18432, 43379, > > > > + 20480, 45749, > > > > + 22528, 47753, > > > > + 24576, 49621, > > > > + 26624, 51253, > > > > + 28672, 52698, > > > > + 30720, 53796, > > > > + 32768, 54876, > > > > + 36864, 57012, > > > > + 40960, 58656, > > > > + 45056, 59954, > > > > + 49152, 61183, > > > > + 53248, 62355, > > > > + 57344, 63419, > > > > + 61440, 64476, > > > > + 65535, 65535 > > > > + ] > > > > + } > > > > + }, > > > > + { > > > > + "rpi.sharpen": { } > > > > + }, > > > > + { > > > > + "rpi.ccm": > > > > + { > > > > + "ccms": [ > > > > + { > > > > + "ct": 3900, > > > > + "ccm": > > > > + [ > > > > + 1.54659, -0.17707, -0.36953, > > > > + -0.51471, 1.72733, -0.21262, > > > > + 0.06667, -0.92279, 1.85612 > > > > + ] > > > > + } > > > > + ] > > > > + } > > > > + } > > > > + ] > > > > +} > > > > \ No newline at end of file > > > > diff --git a/src/ipa/rpi/vc4/data/meson.build b/src/ipa/rpi/vc4/data/meson.build > > > > index 8c34a1a5..6b4d443f 100644 > > > > --- a/src/ipa/rpi/vc4/data/meson.build > > > > +++ b/src/ipa/rpi/vc4/data/meson.build > > > > @@ -8,6 +8,7 @@ conf_files = files([ > > > > 'imx296.json', > > > > 'imx296_mono.json', > > > > 'imx378.json', > > > > + 'imx462.json', > > > > 'imx477.json', > > > > 'imx477_noir.json', > > > > 'imx477_scientific.json', > > > > -- > > > > 2.43.0 > > > >
On Fri, 15 Nov 2024 at 17:05, Laurent Pinchart <laurent.pinchart@ideasonboard.com> wrote: > > On Fri, Nov 15, 2024 at 03:31:50PM +0000, David Plowman wrote: > > Hi Geoffrey > > > > Thanks for the reply! > > > > On Fri, 15 Nov 2024 at 14:30, Geoffrey Van Landeghem > > <geoffrey.vl@gmail.com> wrote: > > > > > > Hi David, > > > > > > Neither the IMX327, nor the IMX426 tuning files actually present good > > > camera calibration. They're just a copy of IMX290 (color). I've been > > > hesitating to add those copies because of that, as without them it > > > would be obvious that customers need to bring their own tuning. On the > > > other hand, adding them makes it more of a plug and play solution, and > > > if someone is not pleased with the output they can always start tuning > > > the camera themselves. In the end, as discussed in the libcamera fork > > > for RPI, we decided on adding the plain copies. Unfortunately I don't > > > own the equipment to perform good camera tuning, otherwise I would > > > have done the job. I don't even own the IMX327, I only own the > > > Inno-maker IMX426 (which is of questionable quality). > > > The approach for Pi5 would be similar, in that we copy the IMX290 > > > tuning just to get it going, and see if someone in the future is > > > interested in providing a better tune. Actually, regarding those > > > copies, there is already my PR for that on the Raspberry Pi fork for > > > libcamera. I hope that's good enough. > > > > Great, thanks for the clarification. I certainly don't want to stop us > > from accepting changes that make life easier for other developers, so > > I think this is fine. > > > > I wonder if we might add a comment to the file to the effect that this > > is an interim tuning. That would at least clarify the status for folks > > (like me) who aren't familiar with the file's provenance. > > Unfortunately JSON doesn't (strictly speaking) allow comments, so > > We parse JSON files as YAML, so comments shouldn't make the parser > choke. It depends if you want to keep compatibility with JSON parsers. > > > perhaps we could add > > > > "comment": "This is an interim tuning only. Please consider doing a > > more formal tuning for your application.", > > Or maybe "description" instead of "comment" ? Maybe I'm too influenced > by DT bindings :-) Yep, I like "description" too, it sounds slightly more important, which I think it actually is! David > > > just below "target". I think the parser ignores fields it's not > > expecting, so this should be fine (better double-check, though!). > > > > With that change I'd be happy to add my tag to both these files. > > > > @Naush, would you be OK with that too? > > > > Thanks again! > > David > > > > > > > > Kind regards, > > > Geoffrey Van Landeghem > > > > > > Op vr 15 nov 2024 om 14:47 schreef David Plowman > > > <david.plowman@raspberrypi.com>: > > > > > > > > Hi Geoffrey > > > > > > > > Thanks for sending this, always pleased to get support for new > > > > cameras! Just a few questions... > > > > > > > > There isn't much in the way of colour tuning - can you say if this is > > > > perhaps a mono sensor, or is it the case that someone might need to do > > > > more colour tuning in future? > > > > > > > > Generally we like to support the same sensors on Pi 5 as Pi 4, but I'm > > > > guessing it's not possible for you to make a Pi 5 tuning as well, is > > > > that right? > > > > > > > > Thanks > > > > David > > > > > > > > On Wed, 13 Nov 2024 at 22:44, Geoffrey Van Landeghem > > > > <geoffrey.vl@gmail.com> wrote: > > > > > > > > > > Signed-off-by: Geoffrey Van Landeghem <geoffrey.vl@gmail.com> > > > > > --- > > > > > src/ipa/rpi/vc4/data/imx462.json | 214 +++++++++++++++++++++++++++++++ > > > > > src/ipa/rpi/vc4/data/meson.build | 1 + > > > > > 2 files changed, 215 insertions(+) > > > > > create mode 100644 src/ipa/rpi/vc4/data/imx462.json > > > > > > > > > > diff --git a/src/ipa/rpi/vc4/data/imx462.json b/src/ipa/rpi/vc4/data/imx462.json > > > > > new file mode 100644 > > > > > index 00000000..8f41bf51 > > > > > --- /dev/null > > > > > +++ b/src/ipa/rpi/vc4/data/imx462.json > > > > > @@ -0,0 +1,214 @@ > > > > > +{ > > > > > + "version": 2.0, > > > > > + "target": "bcm2835", > > > > > + "algorithms": [ > > > > > + { > > > > > + "rpi.black_level": > > > > > + { > > > > > + "black_level": 3840 > > > > > + } > > > > > + }, > > > > > + { > > > > > + "rpi.dpc": { } > > > > > + }, > > > > > + { > > > > > + "rpi.lux": > > > > > + { > > > > > + "reference_shutter_speed": 6813, > > > > > + "reference_gain": 1.0, > > > > > + "reference_aperture": 1.0, > > > > > + "reference_lux": 890, > > > > > + "reference_Y": 12900 > > > > > + } > > > > > + }, > > > > > + { > > > > > + "rpi.noise": > > > > > + { > > > > > + "reference_constant": 0, > > > > > + "reference_slope": 2.67 > > > > > + } > > > > > + }, > > > > > + { > > > > > + "rpi.geq": > > > > > + { > > > > > + "offset": 187, > > > > > + "slope": 0.00842 > > > > > + } > > > > > + }, > > > > > + { > > > > > + "rpi.sdn": { } > > > > > + }, > > > > > + { > > > > > + "rpi.awb": > > > > > + { > > > > > + "bayes": 0 > > > > > + } > > > > > + }, > > > > > + { > > > > > + "rpi.agc": > > > > > + { > > > > > + "speed": 0.2, > > > > > + "metering_modes": > > > > > + { > > > > > + "matrix": > > > > > + { > > > > > + "weights": > > > > > + [ > > > > > + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 > > > > > + ] > > > > > + }, > > > > > + "centre-weighted": > > > > > + { > > > > > + "weights": > > > > > + [ > > > > > + 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 > > > > > + ] > > > > > + }, > > > > > + "spot": > > > > > + { > > > > > + "weights": > > > > > + [ > > > > > + 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 > > > > > + ] > > > > > + } > > > > > + }, > > > > > + "exposure_modes": > > > > > + { > > > > > + "normal": > > > > > + { > > > > > + "shutter": [ 10, 30000, 60000 ], > > > > > + "gain": [ 1.0, 2.0, 8.0 ] > > > > > + }, > > > > > + "short": > > > > > + { > > > > > + "shutter": [ 10, 5000, 10000, 20000, 120000 ], > > > > > + "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ] > > > > > + }, > > > > > + "long": > > > > > + { > > > > > + "shutter": [ 1000, 30000, 60000, 90000, 120000 ], > > > > > + "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ] > > > > > + } > > > > > + }, > > > > > + "constraint_modes": > > > > > + { > > > > > + "normal": [ ], > > > > > + "highlight": [ > > > > > + { > > > > > + "bound": "LOWER", > > > > > + "q_lo": 0.98, > > > > > + "q_hi": 1.0, > > > > > + "y_target": > > > > > + [ > > > > > + 0, 0.5, > > > > > + 1000, 0.5 > > > > > + ] > > > > > + }, > > > > > + { > > > > > + "bound": "UPPER", > > > > > + "q_lo": 0.98, > > > > > + "q_hi": 1.0, > > > > > + "y_target": > > > > > + [ > > > > > + 0, 0.8, > > > > > + 1000, 0.8 > > > > > + ] > > > > > + } > > > > > + ] > > > > > + }, > > > > > + "y_target": > > > > > + [ > > > > > + 0, 0.16, > > > > > + 1000, 0.16, > > > > > + 10000, 0.16 > > > > > + ] > > > > > + } > > > > > + }, > > > > > + { > > > > > + "rpi.alsc": > > > > > + { > > > > > + "omega": 1.3, > > > > > + "n_iter": 100, > > > > > + "luminance_strength": 0.7, > > > > > + "luminance_lut": > > > > > + [ > > > > > + 2.844, 2.349, 2.018, 1.775, 1.599, 1.466, 1.371, 1.321, 1.306, 1.316, 1.357, 1.439, 1.552, 1.705, 1.915, 2.221, > > > > > + 2.576, 2.151, 1.851, 1.639, 1.478, 1.358, 1.272, 1.231, 1.218, 1.226, 1.262, 1.335, 1.438, 1.571, 1.766, 2.067, > > > > > + 2.381, 2.005, 1.739, 1.545, 1.389, 1.278, 1.204, 1.166, 1.153, 1.161, 1.194, 1.263, 1.356, 1.489, 1.671, 1.943, > > > > > + 2.242, 1.899, 1.658, 1.481, 1.329, 1.225, 1.156, 1.113, 1.096, 1.107, 1.143, 1.201, 1.289, 1.423, 1.607, 1.861, > > > > > + 2.152, 1.831, 1.602, 1.436, 1.291, 1.193, 1.121, 1.069, 1.047, 1.062, 1.107, 1.166, 1.249, 1.384, 1.562, 1.801, > > > > > + 2.104, 1.795, 1.572, 1.407, 1.269, 1.174, 1.099, 1.041, 1.008, 1.029, 1.083, 1.146, 1.232, 1.364, 1.547, 1.766, > > > > > + 2.104, 1.796, 1.572, 1.403, 1.264, 1.171, 1.097, 1.036, 1.001, 1.025, 1.077, 1.142, 1.231, 1.363, 1.549, 1.766, > > > > > + 2.148, 1.827, 1.594, 1.413, 1.276, 1.184, 1.114, 1.062, 1.033, 1.049, 1.092, 1.153, 1.242, 1.383, 1.577, 1.795, > > > > > + 2.211, 1.881, 1.636, 1.455, 1.309, 1.214, 1.149, 1.104, 1.081, 1.089, 1.125, 1.184, 1.273, 1.423, 1.622, 1.846, > > > > > + 2.319, 1.958, 1.698, 1.516, 1.362, 1.262, 1.203, 1.156, 1.137, 1.142, 1.171, 1.229, 1.331, 1.484, 1.682, 1.933, > > > > > + 2.459, 2.072, 1.789, 1.594, 1.441, 1.331, 1.261, 1.219, 1.199, 1.205, 1.232, 1.301, 1.414, 1.571, 1.773, 2.052, > > > > > + 2.645, 2.206, 1.928, 1.728, 1.559, 1.451, 1.352, 1.301, 1.282, 1.289, 1.319, 1.395, 1.519, 1.685, 1.904, 2.227 > > > > > + ], > > > > > + "sigma": 0.005, > > > > > + "sigma_Cb": 0.005 > > > > > + } > > > > > + }, > > > > > + { > > > > > + "rpi.contrast": > > > > > + { > > > > > + "ce_enable": 1, > > > > > + "gamma_curve": > > > > > + [ > > > > > + 0, 0, > > > > > + 1024, 5040, > > > > > + 2048, 9338, > > > > > + 3072, 12356, > > > > > + 4096, 15312, > > > > > + 5120, 18051, > > > > > + 6144, 20790, > > > > > + 7168, 23193, > > > > > + 8192, 25744, > > > > > + 9216, 27942, > > > > > + 10240, 30035, > > > > > + 11264, 32005, > > > > > + 12288, 33975, > > > > > + 13312, 35815, > > > > > + 14336, 37600, > > > > > + 15360, 39168, > > > > > + 16384, 40642, > > > > > + 18432, 43379, > > > > > + 20480, 45749, > > > > > + 22528, 47753, > > > > > + 24576, 49621, > > > > > + 26624, 51253, > > > > > + 28672, 52698, > > > > > + 30720, 53796, > > > > > + 32768, 54876, > > > > > + 36864, 57012, > > > > > + 40960, 58656, > > > > > + 45056, 59954, > > > > > + 49152, 61183, > > > > > + 53248, 62355, > > > > > + 57344, 63419, > > > > > + 61440, 64476, > > > > > + 65535, 65535 > > > > > + ] > > > > > + } > > > > > + }, > > > > > + { > > > > > + "rpi.sharpen": { } > > > > > + }, > > > > > + { > > > > > + "rpi.ccm": > > > > > + { > > > > > + "ccms": [ > > > > > + { > > > > > + "ct": 3900, > > > > > + "ccm": > > > > > + [ > > > > > + 1.54659, -0.17707, -0.36953, > > > > > + -0.51471, 1.72733, -0.21262, > > > > > + 0.06667, -0.92279, 1.85612 > > > > > + ] > > > > > + } > > > > > + ] > > > > > + } > > > > > + } > > > > > + ] > > > > > +} > > > > > \ No newline at end of file > > > > > diff --git a/src/ipa/rpi/vc4/data/meson.build b/src/ipa/rpi/vc4/data/meson.build > > > > > index 8c34a1a5..6b4d443f 100644 > > > > > --- a/src/ipa/rpi/vc4/data/meson.build > > > > > +++ b/src/ipa/rpi/vc4/data/meson.build > > > > > @@ -8,6 +8,7 @@ conf_files = files([ > > > > > 'imx296.json', > > > > > 'imx296_mono.json', > > > > > 'imx378.json', > > > > > + 'imx462.json', > > > > > 'imx477.json', > > > > > 'imx477_noir.json', > > > > > 'imx477_scientific.json', > > > > > -- > > > > > 2.43.0 > > > > > > > -- > Regards, > > Laurent Pinchart
diff --git a/src/ipa/rpi/vc4/data/imx462.json b/src/ipa/rpi/vc4/data/imx462.json new file mode 100644 index 00000000..8f41bf51 --- /dev/null +++ b/src/ipa/rpi/vc4/data/imx462.json @@ -0,0 +1,214 @@ +{ + "version": 2.0, + "target": "bcm2835", + "algorithms": [ + { + "rpi.black_level": + { + "black_level": 3840 + } + }, + { + "rpi.dpc": { } + }, + { + "rpi.lux": + { + "reference_shutter_speed": 6813, + "reference_gain": 1.0, + "reference_aperture": 1.0, + "reference_lux": 890, + "reference_Y": 12900 + } + }, + { + "rpi.noise": + { + "reference_constant": 0, + "reference_slope": 2.67 + } + }, + { + "rpi.geq": + { + "offset": 187, + "slope": 0.00842 + } + }, + { + "rpi.sdn": { } + }, + { + "rpi.awb": + { + "bayes": 0 + } + }, + { + "rpi.agc": + { + "speed": 0.2, + "metering_modes": + { + "matrix": + { + "weights": + [ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 + ] + }, + "centre-weighted": + { + "weights": + [ + 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 + ] + }, + "spot": + { + "weights": + [ + 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ] + } + }, + "exposure_modes": + { + "normal": + { + "shutter": [ 10, 30000, 60000 ], + "gain": [ 1.0, 2.0, 8.0 ] + }, + "short": + { + "shutter": [ 10, 5000, 10000, 20000, 120000 ], + "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ] + }, + "long": + { + "shutter": [ 1000, 30000, 60000, 90000, 120000 ], + "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ] + } + }, + "constraint_modes": + { + "normal": [ ], + "highlight": [ + { + "bound": "LOWER", + "q_lo": 0.98, + "q_hi": 1.0, + "y_target": + [ + 0, 0.5, + 1000, 0.5 + ] + }, + { + "bound": "UPPER", + "q_lo": 0.98, + "q_hi": 1.0, + "y_target": + [ + 0, 0.8, + 1000, 0.8 + ] + } + ] + }, + "y_target": + [ + 0, 0.16, + 1000, 0.16, + 10000, 0.16 + ] + } + }, + { + "rpi.alsc": + { + "omega": 1.3, + "n_iter": 100, + "luminance_strength": 0.7, + "luminance_lut": + [ + 2.844, 2.349, 2.018, 1.775, 1.599, 1.466, 1.371, 1.321, 1.306, 1.316, 1.357, 1.439, 1.552, 1.705, 1.915, 2.221, + 2.576, 2.151, 1.851, 1.639, 1.478, 1.358, 1.272, 1.231, 1.218, 1.226, 1.262, 1.335, 1.438, 1.571, 1.766, 2.067, + 2.381, 2.005, 1.739, 1.545, 1.389, 1.278, 1.204, 1.166, 1.153, 1.161, 1.194, 1.263, 1.356, 1.489, 1.671, 1.943, + 2.242, 1.899, 1.658, 1.481, 1.329, 1.225, 1.156, 1.113, 1.096, 1.107, 1.143, 1.201, 1.289, 1.423, 1.607, 1.861, + 2.152, 1.831, 1.602, 1.436, 1.291, 1.193, 1.121, 1.069, 1.047, 1.062, 1.107, 1.166, 1.249, 1.384, 1.562, 1.801, + 2.104, 1.795, 1.572, 1.407, 1.269, 1.174, 1.099, 1.041, 1.008, 1.029, 1.083, 1.146, 1.232, 1.364, 1.547, 1.766, + 2.104, 1.796, 1.572, 1.403, 1.264, 1.171, 1.097, 1.036, 1.001, 1.025, 1.077, 1.142, 1.231, 1.363, 1.549, 1.766, + 2.148, 1.827, 1.594, 1.413, 1.276, 1.184, 1.114, 1.062, 1.033, 1.049, 1.092, 1.153, 1.242, 1.383, 1.577, 1.795, + 2.211, 1.881, 1.636, 1.455, 1.309, 1.214, 1.149, 1.104, 1.081, 1.089, 1.125, 1.184, 1.273, 1.423, 1.622, 1.846, + 2.319, 1.958, 1.698, 1.516, 1.362, 1.262, 1.203, 1.156, 1.137, 1.142, 1.171, 1.229, 1.331, 1.484, 1.682, 1.933, + 2.459, 2.072, 1.789, 1.594, 1.441, 1.331, 1.261, 1.219, 1.199, 1.205, 1.232, 1.301, 1.414, 1.571, 1.773, 2.052, + 2.645, 2.206, 1.928, 1.728, 1.559, 1.451, 1.352, 1.301, 1.282, 1.289, 1.319, 1.395, 1.519, 1.685, 1.904, 2.227 + ], + "sigma": 0.005, + "sigma_Cb": 0.005 + } + }, + { + "rpi.contrast": + { + "ce_enable": 1, + "gamma_curve": + [ + 0, 0, + 1024, 5040, + 2048, 9338, + 3072, 12356, + 4096, 15312, + 5120, 18051, + 6144, 20790, + 7168, 23193, + 8192, 25744, + 9216, 27942, + 10240, 30035, + 11264, 32005, + 12288, 33975, + 13312, 35815, + 14336, 37600, + 15360, 39168, + 16384, 40642, + 18432, 43379, + 20480, 45749, + 22528, 47753, + 24576, 49621, + 26624, 51253, + 28672, 52698, + 30720, 53796, + 32768, 54876, + 36864, 57012, + 40960, 58656, + 45056, 59954, + 49152, 61183, + 53248, 62355, + 57344, 63419, + 61440, 64476, + 65535, 65535 + ] + } + }, + { + "rpi.sharpen": { } + }, + { + "rpi.ccm": + { + "ccms": [ + { + "ct": 3900, + "ccm": + [ + 1.54659, -0.17707, -0.36953, + -0.51471, 1.72733, -0.21262, + 0.06667, -0.92279, 1.85612 + ] + } + ] + } + } + ] +} \ No newline at end of file diff --git a/src/ipa/rpi/vc4/data/meson.build b/src/ipa/rpi/vc4/data/meson.build index 8c34a1a5..6b4d443f 100644 --- a/src/ipa/rpi/vc4/data/meson.build +++ b/src/ipa/rpi/vc4/data/meson.build @@ -8,6 +8,7 @@ conf_files = files([ 'imx296.json', 'imx296_mono.json', 'imx378.json', + 'imx462.json', 'imx477.json', 'imx477_noir.json', 'imx477_scientific.json',
Signed-off-by: Geoffrey Van Landeghem <geoffrey.vl@gmail.com> --- src/ipa/rpi/vc4/data/imx462.json | 214 +++++++++++++++++++++++++++++++ src/ipa/rpi/vc4/data/meson.build | 1 + 2 files changed, 215 insertions(+) create mode 100644 src/ipa/rpi/vc4/data/imx462.json