[PATCH 3/4] ipa: raspberrypi: Add tuning file for IMX462 sensor
Geoffrey Van Landeghem
geoffrey.vl at gmail.com
Fri Nov 15 15:29:58 CET 2024
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 at 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 at gmail.com> wrote:
> >
> > Signed-off-by: Geoffrey Van Landeghem <geoffrey.vl at 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
> >
More information about the libcamera-devel
mailing list