From a75b7d6fcffc86f7e98c9a01860ae339ad706c5a Mon Sep 17 00:00:00 2001 From: philippe baetens Date: Wed, 12 Mar 2025 15:02:24 +0100 Subject: [PATCH 1/3] add mira220 sensor support in libcamera --- src/ipa/rpi/cam_helper/cam_helper_mira220.cpp | 156 +++++ src/ipa/rpi/cam_helper/meson.build | 1 + src/ipa/rpi/pisp/data/meson.build | 2 + src/ipa/rpi/pisp/data/mira220.json | 545 ++++++++++++++++++ src/ipa/rpi/pisp/data/mira220_mono.json | 518 +++++++++++++++++ src/ipa/rpi/vc4/data/meson.build | 2 + src/ipa/rpi/vc4/data/mira220.json | 370 ++++++++++++ src/ipa/rpi/vc4/data/mira220_mono.json | 344 +++++++++++ .../sensor/camera_sensor_properties.cpp | 11 + 9 files changed, 1949 insertions(+) create mode 100644 src/ipa/rpi/cam_helper/cam_helper_mira220.cpp create mode 100644 src/ipa/rpi/pisp/data/mira220.json create mode 100644 src/ipa/rpi/pisp/data/mira220_mono.json create mode 100644 src/ipa/rpi/vc4/data/mira220.json create mode 100644 src/ipa/rpi/vc4/data/mira220_mono.json diff --git a/src/ipa/rpi/cam_helper/cam_helper_mira220.cpp b/src/ipa/rpi/cam_helper/cam_helper_mira220.cpp new file mode 100644 index 000000000..0ff4b6fe1 --- /dev/null +++ b/src/ipa/rpi/cam_helper/cam_helper_mira220.cpp @@ -0,0 +1,156 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ +/* + * Copyright (C) 2019, Raspberry Pi (Trading) Limited + * + * cam_helper_mira220.cpp - camera helper for mira220 sensor + */ + +#include +#include +#include +#include + +/* + * We have observed that the mira220 embedded data stream randomly returns junk + * register values. Do not rely on embedded data until this has been resolved. + */ +#define ENABLE_EMBEDDED_DATA 0 + +#include "cam_helper.h" +#if ENABLE_EMBEDDED_DATA +#include "md_parser.h" +#endif + +using namespace RPiController; +using namespace libcamera; +using libcamera::utils::Duration; +using namespace std::literals::chrono_literals; +namespace libcamera { +LOG_DECLARE_CATEGORY(IPARPI) +} +/* + * We care about one gain register and a pair of exposure registers. Their I2C + * addresses from the mira220 datasheet: + */ +constexpr uint32_t gainReg = 0x400A; +constexpr uint32_t expHiReg = 0x1013; +constexpr uint32_t expLoReg = 0x1012; +constexpr uint32_t frameLengthHiReg = 0x1013; +constexpr uint32_t frameLengthLoReg = 0x1012; +constexpr std::initializer_list registerList [[maybe_unused]] + = { expHiReg, expLoReg, gainReg, frameLengthHiReg, frameLengthLoReg }; + +class CamHelperMira220 : public CamHelper +{ +public: + CamHelperMira220(); + uint32_t gainCode(double gain) const override; + double gain(uint32_t gain_code) const override; + // uint32_t exposureLines(const Duration exposure, const Duration lineLength) const override; + // Duration exposure(uint32_t exposureLines, const Duration lineLength) const override; + // unsigned int mistrustFramesModeSwitch() const override; + // bool sensorEmbeddedDataPresent() const override; + +private: + static constexpr uint32_t minExposureLines = 1; + /* + * Smallest difference between the frame length and integration time, + * in units of lines. + */ + static constexpr int frameIntegrationDiff = 4; + /* + * ROW_TIME_US = ROW_LENGTH * CLK_IN_PERIOD_NS / 1000 + * MIRA220_ROW_TIME_1600x1400_1000GBS_US=(300*26.04/1000)=7.8us + * MIRA220_ROW_TIME_640x480_1000GBS_US=(450*26.04/1000)=11.7us + */ + // static constexpr Duration timePerLine_1600x1400_1000gbs = (7.8 / 1.0e6) * 1.0s; + // static constexpr Duration timePerLine_640x480_1000gbs = (11.7 / 1.0e6) * 1.0s; + // void populateMetadata(const MdParser::RegisterMap ®isters, + // Metadata &metadata) const override; +}; + +CamHelperMira220::CamHelperMira220() +#if ENABLE_EMBEDDED_DATA + : CamHelper(std::make_unique(registerList), frameIntegrationDiff) +#else + : CamHelper({}, frameIntegrationDiff) +#endif +{ +} + +uint32_t CamHelperMira220::gainCode(double gain) const +{ + return (uint32_t)(gain); +} + +double CamHelperMira220::gain(uint32_t gainCode) const +{ + return (double)(gainCode); +} + +// uint32_t CamHelperMira220::exposureLines(const Duration exposure, +// [[maybe_unused]] const Duration lineLength) const +// { +// Duration timePerLine; +// if (mode_.width == 640) { +// timePerLine = timePerLine_640x480_1000gbs; +// } else { +// timePerLine = timePerLine_1600x1400_1000gbs; +// } +// return std::max(minExposureLines, exposure / timePerLine); + +// } + + +// Duration CamHelperMira220::exposure(uint32_t exposureLines, +// [[maybe_unused]] const Duration lineLength) const +// { +// Duration timePerLine; +// LOG(IPARPI, Warning) << "Philippe cam_helper220.cpp exposurefun " ; + +// if (mode_.width == 640) { +// timePerLine = timePerLine_640x480_1000gbs; +// } else { +// timePerLine = timePerLine_1600x1400_1000gbs; +// } +// return std::max(minExposureLines, exposureLines) * timePerLine; +// } + + +// unsigned int CamHelperMira220::mistrustFramesModeSwitch() const +// { +// /* +// * For reasons unknown, we do occasionally get a bogus metadata frame +// * at a mode switch (though not at start-up). Possibly warrants some +// * investigation, though not a big deal. +// */ +// return 1; +// } + +// bool CamHelperMira220::sensorEmbeddedDataPresent() const +// { +// return ENABLE_EMBEDDED_DATA; +// } + +// void CamHelperMira220::populateMetadata(const MdParser::RegisterMap ®isters, +// Metadata &metadata) const +// { +// DeviceStatus deviceStatus; + +// deviceStatus.shutterSpeed = exposure(registers.at(expHiReg) * 256 + registers.at(expLoReg), deviceStatus.lineLength); +// deviceStatus.analogueGain = gain(registers.at(gainReg)); +// deviceStatus.frameLength = registers.at(frameLengthHiReg) * 256 + registers.at(frameLengthLoReg); +// LOG(IPARPI, Warning) << "Philippe cam_helper220.cpp shutterspeed " << deviceStatus.shutterSpeed; +// LOG(IPARPI, Warning) << "Philippe cam_helper220.cpp anag " << deviceStatus.analogueGain; +// LOG(IPARPI, Warning) << "Philippe cam_helper220.cpp framelen " << deviceStatus.frameLength; + +// metadata.set("device.status", deviceStatus); +// } + +static CamHelper *create() +{ + return new CamHelperMira220(); +} + +static RegisterCamHelper reg("mira220", &create); + diff --git a/src/ipa/rpi/cam_helper/meson.build b/src/ipa/rpi/cam_helper/meson.build index 7433cffd2..ef7a3635a 100644 --- a/src/ipa/rpi/cam_helper/meson.build +++ b/src/ipa/rpi/cam_helper/meson.build @@ -3,6 +3,7 @@ rpi_ipa_cam_helper_sources = files([ 'cam_helper.cpp', 'cam_helper_ov5647.cpp', + 'cam_helper_mira220.cpp', 'cam_helper_imx219.cpp', 'cam_helper_imx283.cpp', 'cam_helper_imx290.cpp', diff --git a/src/ipa/rpi/pisp/data/meson.build b/src/ipa/rpi/pisp/data/meson.build index dce963981..4a120c281 100644 --- a/src/ipa/rpi/pisp/data/meson.build +++ b/src/ipa/rpi/pisp/data/meson.build @@ -1,6 +1,8 @@ # SPDX-License-Identifier: CC0-1.0 conf_files = files([ + 'mira220.json', + 'mira220_mono.json', 'imx219.json', 'imx219_noir.json', 'imx290.json', diff --git a/src/ipa/rpi/pisp/data/mira220.json b/src/ipa/rpi/pisp/data/mira220.json new file mode 100644 index 000000000..dc9554154 --- /dev/null +++ b/src/ipa/rpi/pisp/data/mira220.json @@ -0,0 +1,545 @@ +{ + "version": 2.0, + "target": "pisp", + "algorithms": [ + { + "rpi.black_level": + { + "black_level": 2500 + } + }, + { + "rpi.dpc": { } + }, + { + "rpi.lux": + { + "reference_shutter_speed": 33316, + "reference_gain": 1.0, + "reference_aperture": 1.0, + "reference_lux": 530, + "reference_Y": 9873 + } + }, + { + "rpi.noise": + { + "reference_constant": 0, + "reference_slope": 1.449 + } + }, + { + "rpi.geq": + { + "offset": 271, + "slope": 0.00179 + } + }, + { + "rpi.denoise": + { + "normal": + { + "sdn": + { + "deviation": 1.6, + "strength": 0.5, + "deviation2": 3.2, + "deviation_no_tdn": 3.2, + "strength_no_tdn": 0.75 + }, + "cdn": + { + "deviation": 200, + "strength": 0.3 + }, + "tdn": + { + "deviation": 0.8, + "threshold": 0.05 + } + }, + "hdr": + { + "sdn": + { + "deviation": 1.6, + "strength": 0.5, + "deviation2": 3.2, + "deviation_no_tdn": 3.2, + "strength_no_tdn": 0.75 + }, + "cdn": + { + "deviation": 200, + "strength": 0.3 + }, + "tdn": + { + "deviation": 1.3, + "threshold": 0.1 + } + }, + "night": + { + "sdn": + { + "deviation": 1.6, + "strength": 0.5, + "deviation2": 3.2, + "deviation_no_tdn": 3.2, + "strength_no_tdn": 0.75 + }, + "cdn": + { + "deviation": 200, + "strength": 0.3 + }, + "tdn": + { + "deviation": 1.3, + "threshold": 0.1 + } + } + } + }, + { + "rpi.awb": + { + "priors": [ + { + "lux": 0, + "prior": + [ + 2000, 1.0, + 3000, 0.0, + 13000, 0.0 + ] + }, + { + "lux": 800, + "prior": + [ + 2000, 0.0, + 6000, 2.0, + 13000, 2.0 + ] + }, + { + "lux": 1500, + "prior": + [ + 2000, 0.0, + 4000, 1.0, + 6000, 6.0, + 6500, 7.0, + 7000, 1.0, + 13000, 1.0 + ] + } + ], + "modes": + { + "auto": + { + "lo": 2500, + "hi": 8000 + }, + "incandescent": + { + "lo": 2500, + "hi": 3000 + }, + "tungsten": + { + "lo": 3000, + "hi": 3500 + }, + "fluorescent": + { + "lo": 4000, + "hi": 4700 + }, + "indoor": + { + "lo": 3000, + "hi": 5000 + }, + "daylight": + { + "lo": 5500, + "hi": 6500 + }, + "cloudy": + { + "lo": 7000, + "hi": 8600 + } + }, + "bayes": 1, + "ct_curve": + [ + 3200.0, 0.8663, 0.5414, + 5000.0, 0.7241, 0.6964, + 6420.0, 0.6597, 0.7718, + 7900.0, 0.6173, 0.8232, + 8800.0, 0.5982, 0.8468 + ], + "sensitivity_r": 1.0, + "sensitivity_b": 1.0, + "transverse_pos": 0.03, + "transverse_neg": 0.03 + } + }, + { + "rpi.agc": + { + "metering_modes": + { + "centre-weighted": + { + "weights": + [ + 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, + 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, + 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1, + 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1, + 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1, + 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1, + 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1, + 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1, + 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0, + 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 + ] + }, + "spot": + { + "weights": + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ] + }, + "matrix": + { + "weights": + [ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 + ] + } + }, + "exposure_modes": + { + "normal": + { + "shutter": [ 100, 10000, 30000, 60000, 120000 ], + "gain": [ 1.0, 2.0, 4.0, 6.0, 6.0 ] + }, + "short": + { + "shutter": [ 100, 5000, 10000, 20000, 120000 ], + "gain": [ 1.0, 2.0, 4.0, 6.0, 6.0 ] + } + }, + "constraint_modes": + { + "normal": [ + { + "bound": "LOWER", + "q_lo": 0.98, + "q_hi": 1.0, + "y_target": + [ + 0, 0.5, + 1000, 0.5 + ] + } + ], + "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.165, + 10000, 0.17 + ] + } + }, + { + "rpi.alsc": + { + "omega": 1.3, + "n_iter": 100, + "luminance_strength": 0.5, + "calibrations_Cr": [ + { + "ct": 5440, + "table": + [ + 1.785, 1.783, 1.781, 1.773, 1.764, 1.758, 1.752, 1.746, 1.741, 1.738, 1.737, 1.736, 1.735, 1.735, 1.735, 1.734, 1.734, 1.733, 1.734, 1.734, 1.735, 1.736, 1.738, 1.74, 1.744, 1.748, 1.753, 1.759, 1.771, 1.781, 1.783, 1.784, + 1.784, 1.779, 1.775, 1.767, 1.76, 1.753, 1.747, 1.741, 1.736, 1.733, 1.732, 1.73, 1.729, 1.729, 1.728, 1.728, 1.728, 1.728, 1.728, 1.729, 1.729, 1.73, 1.733, 1.736, 1.74, 1.744, 1.749, 1.755, 1.765, 1.775, 1.779, 1.783, + 1.782, 1.775, 1.769, 1.762, 1.755, 1.749, 1.742, 1.736, 1.731, 1.728, 1.726, 1.725, 1.723, 1.722, 1.722, 1.722, 1.722, 1.722, 1.723, 1.723, 1.724, 1.725, 1.729, 1.732, 1.736, 1.739, 1.744, 1.75, 1.759, 1.769, 1.775, 1.782, + 1.78, 1.771, 1.763, 1.757, 1.751, 1.744, 1.737, 1.731, 1.726, 1.723, 1.721, 1.719, 1.717, 1.716, 1.715, 1.715, 1.716, 1.716, 1.717, 1.718, 1.718, 1.72, 1.724, 1.728, 1.731, 1.735, 1.74, 1.745, 1.754, 1.762, 1.771, 1.78, + 1.773, 1.765, 1.757, 1.751, 1.745, 1.738, 1.732, 1.726, 1.721, 1.718, 1.716, 1.714, 1.711, 1.71, 1.709, 1.709, 1.709, 1.71, 1.711, 1.713, 1.713, 1.715, 1.718, 1.722, 1.725, 1.729, 1.734, 1.739, 1.748, 1.756, 1.764, 1.771, + 1.766, 1.759, 1.752, 1.745, 1.739, 1.733, 1.727, 1.722, 1.717, 1.714, 1.711, 1.708, 1.706, 1.704, 1.703, 1.703, 1.703, 1.704, 1.706, 1.707, 1.708, 1.71, 1.713, 1.716, 1.719, 1.723, 1.728, 1.734, 1.742, 1.75, 1.756, 1.763, + 1.759, 1.753, 1.747, 1.74, 1.733, 1.728, 1.723, 1.718, 1.713, 1.709, 1.706, 1.703, 1.701, 1.699, 1.698, 1.698, 1.698, 1.698, 1.7, 1.702, 1.703, 1.705, 1.708, 1.711, 1.714, 1.718, 1.723, 1.729, 1.736, 1.743, 1.75, 1.756, + 1.755, 1.748, 1.742, 1.735, 1.729, 1.724, 1.718, 1.714, 1.709, 1.705, 1.702, 1.699, 1.696, 1.695, 1.694, 1.694, 1.694, 1.694, 1.695, 1.697, 1.699, 1.701, 1.704, 1.707, 1.711, 1.715, 1.719, 1.725, 1.731, 1.738, 1.744, 1.751, + 1.75, 1.743, 1.737, 1.731, 1.725, 1.719, 1.714, 1.709, 1.705, 1.701, 1.697, 1.694, 1.692, 1.691, 1.69, 1.69, 1.69, 1.69, 1.691, 1.692, 1.694, 1.697, 1.7, 1.704, 1.707, 1.711, 1.716, 1.721, 1.726, 1.732, 1.739, 1.745, + 1.745, 1.739, 1.732, 1.727, 1.721, 1.716, 1.71, 1.706, 1.702, 1.698, 1.694, 1.691, 1.689, 1.688, 1.687, 1.687, 1.687, 1.687, 1.688, 1.689, 1.692, 1.694, 1.697, 1.701, 1.704, 1.708, 1.713, 1.717, 1.723, 1.728, 1.735, 1.742, + 1.741, 1.735, 1.728, 1.723, 1.718, 1.712, 1.707, 1.703, 1.699, 1.695, 1.692, 1.689, 1.687, 1.686, 1.685, 1.684, 1.685, 1.685, 1.687, 1.688, 1.69, 1.692, 1.695, 1.698, 1.702, 1.705, 1.71, 1.714, 1.72, 1.727, 1.734, 1.741, + 1.736, 1.73, 1.724, 1.719, 1.715, 1.709, 1.704, 1.7, 1.696, 1.693, 1.69, 1.687, 1.685, 1.684, 1.682, 1.682, 1.682, 1.683, 1.685, 1.687, 1.688, 1.69, 1.693, 1.696, 1.699, 1.703, 1.706, 1.711, 1.718, 1.725, 1.732, 1.739, + 1.735, 1.729, 1.723, 1.718, 1.713, 1.708, 1.702, 1.698, 1.694, 1.691, 1.688, 1.686, 1.684, 1.682, 1.681, 1.681, 1.681, 1.682, 1.684, 1.686, 1.687, 1.689, 1.691, 1.694, 1.698, 1.701, 1.705, 1.71, 1.717, 1.724, 1.731, 1.739, + 1.735, 1.729, 1.722, 1.717, 1.712, 1.707, 1.701, 1.697, 1.693, 1.69, 1.687, 1.685, 1.683, 1.681, 1.68, 1.68, 1.68, 1.681, 1.683, 1.684, 1.686, 1.688, 1.69, 1.693, 1.697, 1.701, 1.705, 1.709, 1.716, 1.723, 1.731, 1.739, + 1.735, 1.728, 1.722, 1.717, 1.712, 1.706, 1.7, 1.696, 1.692, 1.689, 1.686, 1.684, 1.682, 1.681, 1.68, 1.679, 1.679, 1.68, 1.681, 1.683, 1.685, 1.687, 1.689, 1.692, 1.696, 1.7, 1.704, 1.709, 1.715, 1.722, 1.73, 1.739, + 1.735, 1.728, 1.721, 1.716, 1.712, 1.706, 1.7, 1.696, 1.692, 1.689, 1.686, 1.684, 1.682, 1.681, 1.68, 1.679, 1.679, 1.68, 1.681, 1.683, 1.685, 1.687, 1.689, 1.692, 1.696, 1.7, 1.704, 1.709, 1.716, 1.722, 1.731, 1.74, + 1.735, 1.728, 1.721, 1.716, 1.712, 1.706, 1.7, 1.696, 1.693, 1.689, 1.686, 1.684, 1.683, 1.681, 1.68, 1.679, 1.679, 1.68, 1.681, 1.682, 1.685, 1.687, 1.689, 1.692, 1.696, 1.7, 1.705, 1.71, 1.716, 1.723, 1.732, 1.74, + 1.735, 1.728, 1.722, 1.717, 1.712, 1.706, 1.7, 1.696, 1.693, 1.69, 1.686, 1.684, 1.683, 1.682, 1.68, 1.679, 1.679, 1.68, 1.681, 1.682, 1.685, 1.688, 1.69, 1.692, 1.696, 1.7, 1.705, 1.71, 1.717, 1.724, 1.732, 1.741, + 1.736, 1.73, 1.724, 1.719, 1.714, 1.708, 1.702, 1.698, 1.694, 1.691, 1.688, 1.686, 1.684, 1.683, 1.681, 1.681, 1.681, 1.681, 1.682, 1.684, 1.686, 1.689, 1.691, 1.694, 1.697, 1.701, 1.706, 1.712, 1.718, 1.725, 1.733, 1.741, + 1.737, 1.732, 1.726, 1.721, 1.715, 1.709, 1.703, 1.699, 1.696, 1.692, 1.689, 1.687, 1.685, 1.684, 1.683, 1.682, 1.682, 1.683, 1.684, 1.685, 1.687, 1.689, 1.692, 1.695, 1.698, 1.702, 1.708, 1.714, 1.72, 1.726, 1.733, 1.741, + 1.739, 1.733, 1.728, 1.723, 1.717, 1.711, 1.705, 1.701, 1.698, 1.694, 1.691, 1.688, 1.686, 1.685, 1.684, 1.683, 1.683, 1.684, 1.685, 1.687, 1.689, 1.691, 1.694, 1.697, 1.7, 1.704, 1.709, 1.715, 1.721, 1.727, 1.734, 1.741, + 1.742, 1.736, 1.731, 1.725, 1.72, 1.714, 1.708, 1.704, 1.7, 1.696, 1.693, 1.691, 1.689, 1.687, 1.686, 1.685, 1.685, 1.686, 1.687, 1.688, 1.69, 1.693, 1.696, 1.699, 1.702, 1.706, 1.711, 1.717, 1.724, 1.73, 1.736, 1.743, + 1.744, 1.739, 1.733, 1.728, 1.722, 1.717, 1.711, 1.707, 1.702, 1.699, 1.696, 1.693, 1.691, 1.689, 1.688, 1.687, 1.687, 1.687, 1.688, 1.689, 1.692, 1.695, 1.698, 1.701, 1.704, 1.708, 1.713, 1.719, 1.726, 1.733, 1.739, 1.744, + 1.748, 1.742, 1.736, 1.731, 1.725, 1.72, 1.715, 1.71, 1.705, 1.701, 1.698, 1.696, 1.693, 1.691, 1.69, 1.689, 1.689, 1.69, 1.69, 1.692, 1.694, 1.697, 1.701, 1.704, 1.707, 1.711, 1.716, 1.722, 1.729, 1.736, 1.742, 1.747, + 1.752, 1.746, 1.741, 1.734, 1.728, 1.723, 1.718, 1.713, 1.708, 1.705, 1.701, 1.699, 1.696, 1.694, 1.693, 1.693, 1.693, 1.693, 1.694, 1.695, 1.697, 1.7, 1.703, 1.706, 1.71, 1.714, 1.72, 1.725, 1.732, 1.74, 1.746, 1.752, + 1.756, 1.751, 1.745, 1.738, 1.731, 1.726, 1.722, 1.717, 1.712, 1.708, 1.704, 1.701, 1.699, 1.697, 1.696, 1.696, 1.696, 1.696, 1.697, 1.698, 1.7, 1.702, 1.705, 1.708, 1.713, 1.718, 1.723, 1.729, 1.736, 1.743, 1.75, 1.756, + 1.762, 1.756, 1.749, 1.742, 1.735, 1.73, 1.725, 1.721, 1.716, 1.712, 1.708, 1.705, 1.703, 1.701, 1.7, 1.7, 1.7, 1.7, 1.701, 1.702, 1.704, 1.706, 1.709, 1.712, 1.717, 1.722, 1.727, 1.733, 1.741, 1.748, 1.755, 1.762, + 1.768, 1.761, 1.754, 1.747, 1.741, 1.735, 1.729, 1.724, 1.72, 1.716, 1.713, 1.71, 1.708, 1.706, 1.705, 1.704, 1.704, 1.704, 1.704, 1.706, 1.708, 1.71, 1.713, 1.717, 1.721, 1.726, 1.732, 1.738, 1.746, 1.753, 1.761, 1.768, + 1.774, 1.766, 1.759, 1.752, 1.746, 1.739, 1.733, 1.728, 1.724, 1.721, 1.717, 1.715, 1.713, 1.711, 1.709, 1.708, 1.708, 1.708, 1.708, 1.709, 1.712, 1.714, 1.718, 1.721, 1.725, 1.73, 1.736, 1.743, 1.751, 1.759, 1.766, 1.774, + 1.776, 1.77, 1.764, 1.757, 1.75, 1.743, 1.736, 1.732, 1.728, 1.725, 1.722, 1.719, 1.718, 1.716, 1.714, 1.713, 1.713, 1.713, 1.713, 1.714, 1.716, 1.719, 1.722, 1.725, 1.729, 1.734, 1.741, 1.748, 1.756, 1.764, 1.77, 1.776, + 1.776, 1.773, 1.77, 1.762, 1.755, 1.747, 1.74, 1.736, 1.732, 1.729, 1.726, 1.724, 1.723, 1.721, 1.72, 1.719, 1.719, 1.718, 1.719, 1.719, 1.721, 1.723, 1.726, 1.729, 1.733, 1.738, 1.746, 1.754, 1.762, 1.77, 1.773, 1.776, + 1.777, 1.776, 1.775, 1.767, 1.759, 1.751, 1.744, 1.739, 1.736, 1.733, 1.73, 1.728, 1.727, 1.726, 1.725, 1.725, 1.724, 1.724, 1.724, 1.724, 1.725, 1.727, 1.73, 1.733, 1.738, 1.743, 1.751, 1.759, 1.767, 1.775, 1.776, 1.777 + ] + } + ], + "calibrations_Cb": [ + { + "ct": 5440, + "table": + [ + 1.547, 1.549, 1.551, 1.554, 1.558, 1.563, 1.57, 1.574, 1.578, 1.581, 1.585, 1.586, 1.587, 1.586, 1.585, 1.586, 1.586, 1.587, 1.588, 1.588, 1.588, 1.588, 1.587, 1.585, 1.581, 1.577, 1.571, 1.565, 1.562, 1.558, 1.556, 1.555, + 1.548, 1.55, 1.552, 1.556, 1.56, 1.567, 1.574, 1.578, 1.582, 1.585, 1.589, 1.59, 1.591, 1.591, 1.589, 1.589, 1.59, 1.59, 1.591, 1.591, 1.591, 1.591, 1.59, 1.589, 1.584, 1.58, 1.574, 1.569, 1.565, 1.561, 1.558, 1.556, + 1.55, 1.551, 1.553, 1.558, 1.562, 1.57, 1.577, 1.582, 1.585, 1.589, 1.593, 1.594, 1.595, 1.595, 1.593, 1.593, 1.593, 1.593, 1.593, 1.594, 1.595, 1.595, 1.594, 1.592, 1.588, 1.583, 1.578, 1.572, 1.568, 1.563, 1.56, 1.557, + 1.552, 1.553, 1.555, 1.56, 1.565, 1.573, 1.581, 1.585, 1.589, 1.593, 1.596, 1.598, 1.599, 1.599, 1.598, 1.597, 1.596, 1.596, 1.597, 1.597, 1.598, 1.599, 1.598, 1.596, 1.591, 1.586, 1.581, 1.576, 1.571, 1.566, 1.563, 1.559, + 1.555, 1.557, 1.559, 1.564, 1.569, 1.577, 1.585, 1.589, 1.593, 1.597, 1.6, 1.603, 1.604, 1.604, 1.603, 1.603, 1.603, 1.603, 1.603, 1.603, 1.604, 1.604, 1.603, 1.602, 1.596, 1.591, 1.586, 1.58, 1.575, 1.57, 1.567, 1.564, + 1.559, 1.561, 1.562, 1.568, 1.574, 1.581, 1.588, 1.593, 1.598, 1.601, 1.604, 1.607, 1.608, 1.609, 1.609, 1.609, 1.609, 1.609, 1.609, 1.609, 1.609, 1.609, 1.608, 1.607, 1.602, 1.596, 1.59, 1.584, 1.579, 1.573, 1.571, 1.569, + 1.562, 1.564, 1.566, 1.572, 1.578, 1.585, 1.592, 1.598, 1.603, 1.606, 1.609, 1.611, 1.613, 1.614, 1.614, 1.615, 1.615, 1.614, 1.614, 1.614, 1.614, 1.614, 1.613, 1.611, 1.606, 1.601, 1.594, 1.588, 1.582, 1.576, 1.575, 1.574, + 1.565, 1.567, 1.57, 1.576, 1.582, 1.589, 1.597, 1.603, 1.609, 1.612, 1.614, 1.616, 1.618, 1.619, 1.619, 1.619, 1.619, 1.619, 1.619, 1.619, 1.619, 1.619, 1.618, 1.615, 1.609, 1.604, 1.597, 1.591, 1.585, 1.579, 1.579, 1.578, + 1.568, 1.57, 1.573, 1.58, 1.586, 1.594, 1.601, 1.608, 1.615, 1.618, 1.62, 1.621, 1.622, 1.623, 1.624, 1.624, 1.624, 1.624, 1.624, 1.624, 1.624, 1.623, 1.622, 1.619, 1.613, 1.606, 1.6, 1.593, 1.588, 1.583, 1.582, 1.582, + 1.571, 1.574, 1.576, 1.583, 1.589, 1.597, 1.605, 1.611, 1.618, 1.621, 1.623, 1.625, 1.625, 1.626, 1.627, 1.627, 1.627, 1.627, 1.627, 1.627, 1.627, 1.627, 1.625, 1.622, 1.616, 1.609, 1.602, 1.595, 1.59, 1.585, 1.585, 1.585, + 1.576, 1.577, 1.579, 1.585, 1.592, 1.599, 1.607, 1.613, 1.62, 1.623, 1.625, 1.626, 1.627, 1.628, 1.629, 1.629, 1.63, 1.63, 1.63, 1.63, 1.63, 1.629, 1.626, 1.623, 1.618, 1.612, 1.605, 1.598, 1.592, 1.587, 1.586, 1.586, + 1.58, 1.581, 1.581, 1.588, 1.594, 1.602, 1.609, 1.615, 1.621, 1.624, 1.627, 1.628, 1.628, 1.629, 1.631, 1.632, 1.632, 1.632, 1.632, 1.632, 1.632, 1.631, 1.627, 1.624, 1.62, 1.615, 1.607, 1.6, 1.594, 1.588, 1.588, 1.587, + 1.58, 1.581, 1.582, 1.589, 1.595, 1.603, 1.61, 1.616, 1.622, 1.625, 1.628, 1.629, 1.629, 1.63, 1.631, 1.632, 1.633, 1.633, 1.633, 1.633, 1.633, 1.631, 1.628, 1.625, 1.621, 1.616, 1.609, 1.601, 1.595, 1.59, 1.588, 1.587, + 1.58, 1.581, 1.583, 1.589, 1.596, 1.603, 1.611, 1.617, 1.622, 1.626, 1.629, 1.63, 1.63, 1.631, 1.632, 1.632, 1.632, 1.633, 1.633, 1.633, 1.632, 1.631, 1.629, 1.626, 1.623, 1.618, 1.61, 1.603, 1.597, 1.591, 1.589, 1.587, + 1.579, 1.581, 1.584, 1.59, 1.596, 1.604, 1.612, 1.618, 1.623, 1.626, 1.63, 1.631, 1.631, 1.631, 1.632, 1.632, 1.632, 1.632, 1.633, 1.633, 1.632, 1.631, 1.63, 1.628, 1.624, 1.619, 1.612, 1.604, 1.598, 1.592, 1.589, 1.587, + 1.578, 1.581, 1.583, 1.59, 1.597, 1.605, 1.613, 1.619, 1.623, 1.627, 1.63, 1.631, 1.631, 1.631, 1.632, 1.632, 1.632, 1.632, 1.633, 1.633, 1.632, 1.631, 1.63, 1.628, 1.624, 1.62, 1.612, 1.605, 1.598, 1.592, 1.59, 1.588, + 1.578, 1.58, 1.582, 1.59, 1.597, 1.605, 1.614, 1.619, 1.624, 1.627, 1.63, 1.631, 1.631, 1.631, 1.632, 1.633, 1.633, 1.633, 1.633, 1.633, 1.633, 1.632, 1.63, 1.628, 1.625, 1.62, 1.613, 1.606, 1.599, 1.592, 1.59, 1.588, + 1.577, 1.579, 1.582, 1.59, 1.598, 1.606, 1.614, 1.62, 1.625, 1.628, 1.63, 1.631, 1.631, 1.632, 1.632, 1.633, 1.633, 1.633, 1.633, 1.633, 1.633, 1.632, 1.63, 1.628, 1.625, 1.621, 1.614, 1.607, 1.599, 1.592, 1.591, 1.589, + 1.577, 1.579, 1.581, 1.589, 1.597, 1.605, 1.614, 1.619, 1.624, 1.627, 1.629, 1.63, 1.63, 1.631, 1.632, 1.632, 1.633, 1.633, 1.633, 1.633, 1.633, 1.632, 1.63, 1.628, 1.625, 1.621, 1.613, 1.606, 1.599, 1.592, 1.591, 1.59, + 1.577, 1.579, 1.581, 1.588, 1.596, 1.604, 1.613, 1.618, 1.623, 1.626, 1.627, 1.629, 1.629, 1.63, 1.631, 1.632, 1.633, 1.633, 1.634, 1.634, 1.633, 1.632, 1.63, 1.627, 1.624, 1.62, 1.613, 1.605, 1.599, 1.593, 1.592, 1.59, + 1.577, 1.579, 1.58, 1.587, 1.595, 1.603, 1.612, 1.617, 1.622, 1.625, 1.626, 1.627, 1.628, 1.629, 1.63, 1.631, 1.632, 1.633, 1.633, 1.633, 1.633, 1.632, 1.63, 1.627, 1.624, 1.62, 1.611, 1.604, 1.598, 1.593, 1.592, 1.591, + 1.576, 1.578, 1.579, 1.586, 1.593, 1.601, 1.609, 1.615, 1.62, 1.623, 1.625, 1.627, 1.628, 1.629, 1.629, 1.63, 1.631, 1.631, 1.632, 1.632, 1.632, 1.631, 1.629, 1.626, 1.621, 1.616, 1.609, 1.602, 1.597, 1.592, 1.591, 1.59, + 1.575, 1.577, 1.578, 1.585, 1.592, 1.599, 1.606, 1.612, 1.618, 1.622, 1.625, 1.626, 1.627, 1.628, 1.628, 1.629, 1.629, 1.63, 1.63, 1.63, 1.631, 1.631, 1.628, 1.625, 1.619, 1.613, 1.606, 1.6, 1.595, 1.591, 1.59, 1.589, + 1.574, 1.575, 1.576, 1.582, 1.589, 1.596, 1.603, 1.609, 1.615, 1.619, 1.622, 1.624, 1.625, 1.626, 1.626, 1.626, 1.627, 1.627, 1.627, 1.628, 1.629, 1.629, 1.626, 1.623, 1.617, 1.611, 1.604, 1.597, 1.593, 1.589, 1.587, 1.586, + 1.571, 1.572, 1.573, 1.578, 1.584, 1.592, 1.6, 1.606, 1.611, 1.615, 1.619, 1.62, 1.621, 1.622, 1.622, 1.622, 1.622, 1.623, 1.624, 1.625, 1.626, 1.625, 1.623, 1.62, 1.615, 1.609, 1.602, 1.595, 1.59, 1.585, 1.582, 1.58, + 1.568, 1.569, 1.57, 1.575, 1.58, 1.588, 1.596, 1.602, 1.606, 1.611, 1.615, 1.617, 1.618, 1.618, 1.618, 1.618, 1.618, 1.619, 1.621, 1.622, 1.622, 1.622, 1.62, 1.617, 1.612, 1.607, 1.6, 1.592, 1.586, 1.58, 1.578, 1.575, + 1.563, 1.564, 1.566, 1.57, 1.575, 1.583, 1.591, 1.596, 1.601, 1.605, 1.609, 1.611, 1.612, 1.612, 1.612, 1.612, 1.612, 1.613, 1.615, 1.616, 1.616, 1.615, 1.614, 1.611, 1.606, 1.601, 1.594, 1.587, 1.581, 1.575, 1.572, 1.57, + 1.557, 1.558, 1.56, 1.565, 1.569, 1.577, 1.584, 1.59, 1.595, 1.598, 1.602, 1.604, 1.605, 1.605, 1.605, 1.605, 1.605, 1.606, 1.608, 1.609, 1.609, 1.608, 1.606, 1.604, 1.598, 1.593, 1.586, 1.58, 1.574, 1.569, 1.567, 1.564, + 1.55, 1.552, 1.555, 1.559, 1.563, 1.57, 1.578, 1.583, 1.589, 1.592, 1.595, 1.596, 1.598, 1.598, 1.598, 1.598, 1.598, 1.599, 1.601, 1.602, 1.601, 1.6, 1.599, 1.597, 1.59, 1.584, 1.578, 1.573, 1.568, 1.563, 1.561, 1.559, + 1.546, 1.549, 1.552, 1.556, 1.56, 1.566, 1.573, 1.579, 1.584, 1.587, 1.589, 1.59, 1.591, 1.591, 1.591, 1.591, 1.592, 1.593, 1.595, 1.596, 1.595, 1.594, 1.594, 1.591, 1.585, 1.579, 1.574, 1.568, 1.564, 1.559, 1.557, 1.555, + 1.543, 1.546, 1.55, 1.553, 1.556, 1.562, 1.569, 1.574, 1.579, 1.581, 1.583, 1.584, 1.585, 1.585, 1.585, 1.586, 1.587, 1.588, 1.589, 1.59, 1.59, 1.589, 1.588, 1.586, 1.581, 1.575, 1.57, 1.565, 1.56, 1.556, 1.553, 1.55, + 1.539, 1.543, 1.548, 1.55, 1.553, 1.558, 1.565, 1.569, 1.574, 1.576, 1.578, 1.578, 1.578, 1.578, 1.579, 1.58, 1.581, 1.582, 1.583, 1.584, 1.584, 1.584, 1.583, 1.582, 1.576, 1.571, 1.566, 1.561, 1.557, 1.553, 1.549, 1.546 + ] + } + ], + "luminance_lut": + [ + 1.317, 1.3, 1.283, 1.265, 1.247, 1.231, 1.214, 1.203, 1.194, 1.186, 1.18, 1.173, 1.167, 1.16, 1.152, 1.149, 1.149, 1.148, 1.147, 1.151, 1.163, 1.171, 1.173, 1.177, 1.191, 1.204, 1.221, 1.237, 1.254, 1.27, 1.278, 1.287, + 1.317, 1.296, 1.275, 1.257, 1.238, 1.222, 1.207, 1.196, 1.186, 1.177, 1.17, 1.162, 1.156, 1.149, 1.142, 1.138, 1.137, 1.137, 1.137, 1.142, 1.154, 1.163, 1.166, 1.171, 1.184, 1.198, 1.213, 1.229, 1.248, 1.265, 1.276, 1.286, + 1.316, 1.292, 1.267, 1.248, 1.229, 1.214, 1.2, 1.189, 1.178, 1.169, 1.159, 1.151, 1.145, 1.138, 1.132, 1.128, 1.125, 1.125, 1.128, 1.134, 1.145, 1.154, 1.159, 1.165, 1.178, 1.191, 1.206, 1.221, 1.242, 1.261, 1.273, 1.286, + 1.314, 1.287, 1.259, 1.239, 1.22, 1.206, 1.192, 1.181, 1.17, 1.159, 1.149, 1.14, 1.134, 1.128, 1.122, 1.117, 1.114, 1.114, 1.119, 1.125, 1.136, 1.145, 1.151, 1.159, 1.171, 1.184, 1.198, 1.213, 1.235, 1.256, 1.27, 1.283, + 1.303, 1.276, 1.249, 1.23, 1.212, 1.197, 1.183, 1.171, 1.159, 1.148, 1.137, 1.129, 1.123, 1.117, 1.111, 1.107, 1.104, 1.104, 1.109, 1.116, 1.126, 1.135, 1.141, 1.15, 1.163, 1.176, 1.19, 1.204, 1.225, 1.245, 1.259, 1.273, + 1.292, 1.266, 1.239, 1.221, 1.204, 1.188, 1.174, 1.161, 1.149, 1.137, 1.126, 1.118, 1.112, 1.107, 1.101, 1.097, 1.093, 1.094, 1.099, 1.106, 1.115, 1.124, 1.132, 1.141, 1.155, 1.169, 1.181, 1.195, 1.215, 1.235, 1.249, 1.263, + 1.28, 1.255, 1.23, 1.212, 1.195, 1.18, 1.165, 1.152, 1.139, 1.127, 1.116, 1.108, 1.102, 1.097, 1.091, 1.087, 1.084, 1.085, 1.09, 1.096, 1.105, 1.115, 1.124, 1.134, 1.147, 1.161, 1.174, 1.188, 1.207, 1.226, 1.241, 1.255, + 1.268, 1.246, 1.224, 1.205, 1.186, 1.171, 1.156, 1.143, 1.129, 1.118, 1.107, 1.099, 1.093, 1.088, 1.083, 1.079, 1.077, 1.077, 1.081, 1.087, 1.096, 1.107, 1.12, 1.132, 1.142, 1.153, 1.168, 1.183, 1.202, 1.221, 1.236, 1.251, + 1.255, 1.236, 1.217, 1.197, 1.178, 1.162, 1.148, 1.134, 1.119, 1.108, 1.098, 1.091, 1.085, 1.079, 1.074, 1.071, 1.069, 1.069, 1.072, 1.077, 1.087, 1.099, 1.116, 1.13, 1.137, 1.145, 1.162, 1.179, 1.198, 1.216, 1.231, 1.246, + 1.246, 1.229, 1.211, 1.191, 1.17, 1.155, 1.141, 1.127, 1.112, 1.101, 1.091, 1.084, 1.078, 1.073, 1.068, 1.065, 1.063, 1.063, 1.065, 1.07, 1.08, 1.092, 1.11, 1.125, 1.13, 1.139, 1.156, 1.174, 1.193, 1.211, 1.226, 1.241, + 1.241, 1.223, 1.205, 1.184, 1.163, 1.149, 1.137, 1.122, 1.107, 1.096, 1.086, 1.079, 1.074, 1.069, 1.064, 1.06, 1.058, 1.057, 1.059, 1.064, 1.074, 1.086, 1.102, 1.116, 1.124, 1.133, 1.152, 1.17, 1.188, 1.206, 1.221, 1.236, + 1.235, 1.218, 1.2, 1.178, 1.156, 1.143, 1.132, 1.117, 1.102, 1.091, 1.081, 1.075, 1.069, 1.065, 1.06, 1.056, 1.052, 1.051, 1.053, 1.058, 1.068, 1.08, 1.095, 1.108, 1.117, 1.128, 1.147, 1.166, 1.184, 1.201, 1.216, 1.23, + 1.23, 1.212, 1.194, 1.174, 1.154, 1.141, 1.128, 1.114, 1.099, 1.088, 1.079, 1.072, 1.067, 1.062, 1.058, 1.054, 1.05, 1.049, 1.05, 1.055, 1.066, 1.077, 1.089, 1.101, 1.113, 1.125, 1.143, 1.16, 1.178, 1.196, 1.211, 1.226, + 1.224, 1.206, 1.187, 1.171, 1.155, 1.14, 1.124, 1.111, 1.098, 1.087, 1.077, 1.07, 1.065, 1.061, 1.057, 1.053, 1.048, 1.047, 1.049, 1.054, 1.064, 1.074, 1.084, 1.096, 1.109, 1.124, 1.139, 1.154, 1.172, 1.19, 1.206, 1.222, + 1.219, 1.2, 1.181, 1.168, 1.156, 1.138, 1.12, 1.108, 1.097, 1.086, 1.075, 1.068, 1.063, 1.059, 1.056, 1.052, 1.047, 1.045, 1.048, 1.053, 1.062, 1.071, 1.079, 1.09, 1.106, 1.122, 1.134, 1.148, 1.166, 1.185, 1.201, 1.218, + 1.219, 1.203, 1.186, 1.171, 1.155, 1.139, 1.122, 1.11, 1.099, 1.087, 1.076, 1.068, 1.062, 1.058, 1.054, 1.051, 1.047, 1.046, 1.049, 1.053, 1.061, 1.07, 1.079, 1.09, 1.104, 1.119, 1.133, 1.147, 1.165, 1.182, 1.198, 1.215, + 1.221, 1.207, 1.193, 1.174, 1.155, 1.139, 1.124, 1.112, 1.1, 1.089, 1.078, 1.069, 1.062, 1.057, 1.052, 1.05, 1.048, 1.048, 1.05, 1.054, 1.061, 1.069, 1.079, 1.09, 1.102, 1.115, 1.131, 1.147, 1.163, 1.179, 1.196, 1.212, + 1.223, 1.211, 1.199, 1.177, 1.155, 1.14, 1.127, 1.115, 1.102, 1.091, 1.079, 1.07, 1.062, 1.056, 1.051, 1.049, 1.049, 1.049, 1.052, 1.055, 1.061, 1.068, 1.08, 1.091, 1.101, 1.113, 1.13, 1.147, 1.162, 1.178, 1.194, 1.21, + 1.23, 1.216, 1.201, 1.182, 1.162, 1.147, 1.133, 1.119, 1.105, 1.094, 1.085, 1.076, 1.066, 1.059, 1.054, 1.052, 1.052, 1.053, 1.055, 1.059, 1.065, 1.072, 1.081, 1.091, 1.104, 1.117, 1.134, 1.151, 1.167, 1.183, 1.199, 1.216, + 1.238, 1.22, 1.203, 1.186, 1.169, 1.153, 1.138, 1.123, 1.107, 1.098, 1.091, 1.081, 1.07, 1.062, 1.057, 1.055, 1.055, 1.056, 1.058, 1.062, 1.069, 1.076, 1.083, 1.092, 1.106, 1.121, 1.138, 1.155, 1.171, 1.188, 1.205, 1.222, + 1.245, 1.226, 1.207, 1.191, 1.175, 1.16, 1.145, 1.128, 1.111, 1.103, 1.097, 1.087, 1.075, 1.067, 1.061, 1.058, 1.059, 1.061, 1.063, 1.067, 1.074, 1.081, 1.086, 1.094, 1.11, 1.126, 1.142, 1.159, 1.176, 1.194, 1.211, 1.229, + 1.252, 1.235, 1.217, 1.199, 1.18, 1.166, 1.153, 1.137, 1.121, 1.111, 1.103, 1.093, 1.083, 1.074, 1.068, 1.065, 1.065, 1.067, 1.069, 1.073, 1.081, 1.087, 1.093, 1.101, 1.115, 1.131, 1.148, 1.165, 1.183, 1.2, 1.218, 1.236, + 1.26, 1.243, 1.227, 1.206, 1.185, 1.173, 1.162, 1.147, 1.13, 1.119, 1.109, 1.099, 1.09, 1.082, 1.075, 1.071, 1.072, 1.073, 1.076, 1.08, 1.087, 1.094, 1.099, 1.107, 1.121, 1.136, 1.153, 1.171, 1.189, 1.207, 1.225, 1.244, + 1.269, 1.252, 1.235, 1.215, 1.194, 1.181, 1.17, 1.155, 1.139, 1.127, 1.117, 1.108, 1.099, 1.091, 1.083, 1.079, 1.079, 1.08, 1.083, 1.088, 1.095, 1.102, 1.108, 1.115, 1.128, 1.142, 1.16, 1.178, 1.196, 1.214, 1.233, 1.252, + 1.278, 1.26, 1.243, 1.224, 1.206, 1.192, 1.178, 1.163, 1.148, 1.138, 1.129, 1.119, 1.109, 1.1, 1.093, 1.089, 1.087, 1.088, 1.092, 1.097, 1.104, 1.111, 1.118, 1.126, 1.137, 1.15, 1.169, 1.187, 1.204, 1.222, 1.242, 1.262, + 1.288, 1.269, 1.25, 1.234, 1.218, 1.202, 1.185, 1.17, 1.156, 1.148, 1.141, 1.13, 1.118, 1.11, 1.103, 1.099, 1.096, 1.096, 1.101, 1.106, 1.113, 1.12, 1.128, 1.136, 1.146, 1.157, 1.177, 1.196, 1.213, 1.23, 1.251, 1.272, + 1.302, 1.281, 1.261, 1.245, 1.23, 1.212, 1.194, 1.18, 1.166, 1.158, 1.152, 1.142, 1.13, 1.121, 1.114, 1.11, 1.107, 1.107, 1.111, 1.116, 1.123, 1.13, 1.139, 1.147, 1.156, 1.166, 1.186, 1.206, 1.223, 1.24, 1.261, 1.283, + 1.318, 1.295, 1.273, 1.257, 1.241, 1.223, 1.205, 1.191, 1.177, 1.169, 1.163, 1.154, 1.142, 1.133, 1.126, 1.121, 1.119, 1.119, 1.122, 1.126, 1.132, 1.14, 1.149, 1.158, 1.166, 1.176, 1.196, 1.216, 1.234, 1.252, 1.273, 1.295, + 1.333, 1.31, 1.286, 1.269, 1.251, 1.234, 1.216, 1.201, 1.188, 1.18, 1.175, 1.165, 1.153, 1.144, 1.137, 1.133, 1.132, 1.131, 1.132, 1.136, 1.142, 1.149, 1.159, 1.168, 1.176, 1.186, 1.206, 1.226, 1.245, 1.264, 1.286, 1.307, + 1.337, 1.318, 1.299, 1.279, 1.26, 1.242, 1.225, 1.21, 1.195, 1.187, 1.18, 1.171, 1.162, 1.155, 1.148, 1.144, 1.142, 1.143, 1.145, 1.148, 1.155, 1.162, 1.171, 1.179, 1.188, 1.199, 1.216, 1.234, 1.254, 1.275, 1.294, 1.312, + 1.338, 1.325, 1.311, 1.29, 1.267, 1.25, 1.233, 1.218, 1.202, 1.192, 1.184, 1.177, 1.17, 1.164, 1.158, 1.155, 1.153, 1.154, 1.157, 1.162, 1.169, 1.176, 1.183, 1.191, 1.201, 1.212, 1.226, 1.241, 1.263, 1.285, 1.301, 1.317, + 1.339, 1.331, 1.324, 1.3, 1.275, 1.258, 1.242, 1.226, 1.209, 1.198, 1.187, 1.182, 1.178, 1.174, 1.168, 1.165, 1.164, 1.165, 1.169, 1.175, 1.182, 1.189, 1.195, 1.202, 1.214, 1.225, 1.236, 1.249, 1.272, 1.295, 1.308, 1.321 + ], + "sigma": 0.005, + "sigma_Cb": 0.005 + } + }, + { + "rpi.contrast": + { + "ce_enable": 1, + "gamma_curve": + [ + 0, 0, + 1024, 5432.589474, + 2048, 10065.38105, + 3072, 13318.46737, + 4096, 16504.72421, + 5120, 19457.07789, + 6144, 22409.43158, + 7168, 24999.61263, + 8192, 27749.32211, + 9216, 30118.53474, + 10240, 32374.56842, + 11264, 34498.02105, + 12288, 36621.47368, + 13312, 38604.8, + 14336, 40528.84211, + 15360, 42218.98105, + 16384, 43807.79789, + 18432, 46757.99579, + 20480, 49312.60632, + 22528, 51472.70737, + 24576, 53486.21474, + 26624, 55245.33895, + 28672, 56802.89684, + 30720, 57986.42526, + 32768, 59150.55158, + 36864, 61452.93474, + 40960, 63224.99368, + 45056, 64624.10105, + 49152, 65535, + 53248, 65535, + 57344, 65535, + 61440, 65535, + 65535, 65535 + ] + } + }, + { + "rpi.ccm": + { + "saturation": [ 0, 0, 100, 0.6, 1000, 1, 10000, 1 ], + "ccms": [ + { + "ct": 3200, + "ccm": + [ + 1.58652, 0.12247, -0.70899, + -0.88406, 2.29465, -0.41059, + -0.56176, 0.41247, 1.14928 + ] + }, + { + "ct": 5000, + "ccm": + [ + 1.95623, 0.41006, -1.36629, + -0.78719, 2.27844, -0.49125, + -0.72722, 0.10062, 1.62659 + ] + }, + { + "ct": 6420, + "ccm": + [ + 1.81505, 0.31616, -1.13121, + -0.63029, 2.05535, -0.42506, + -0.50025, -0.11887, 1.61912 + ] + }, + { + "ct": 7900, + "ccm": + [ + 1.77947, 0.24161, -1.02108, + -0.55019, 1.96917, -0.41898, + -0.40238, -0.17695, 1.57932 + ] + }, + { + "ct": 8800, + "ccm": + [ + 1.77695, 0.21166, -0.98861, + -0.51589, 1.93469, -0.41881, + -0.36973, -0.19069, 1.56043 + ] + } + ] + } + }, + { + "rpi.sharpen": { } + } + ] +} \ No newline at end of file diff --git a/src/ipa/rpi/pisp/data/mira220_mono.json b/src/ipa/rpi/pisp/data/mira220_mono.json new file mode 100644 index 000000000..b05de2b33 --- /dev/null +++ b/src/ipa/rpi/pisp/data/mira220_mono.json @@ -0,0 +1,518 @@ +{ + "version": 2.0, + "target": "pisp", + "algorithms": [ + { + "rpi.black_level": + { + "black_level": 2500 + } + }, + { + "rpi.dpc": { } + }, + { + "rpi.lux": + { + "reference_shutter_speed": 33316, + "reference_gain": 1.0, + "reference_aperture": 1.0, + "reference_lux": 530, + "reference_Y": 9873 + } + }, + { + "rpi.noise": + { + "reference_constant": 0, + "reference_slope": 1.449 + } + }, + { + "rpi.geq": + { + "offset": 271, + "slope": 0.00179 + } + }, + { + "rpi.denoise": + { + "normal": + { + "sdn": + { + "deviation": 1.6, + "strength": 0.5, + "deviation2": 3.2, + "deviation_no_tdn": 3.2, + "strength_no_tdn": 0.75 + }, + "cdn": + { + "deviation": 200, + "strength": 0.3 + }, + "tdn": + { + "deviation": 0.8, + "threshold": 0.05 + } + }, + "hdr": + { + "sdn": + { + "deviation": 1.6, + "strength": 0.5, + "deviation2": 3.2, + "deviation_no_tdn": 3.2, + "strength_no_tdn": 0.75 + }, + "cdn": + { + "deviation": 200, + "strength": 0.3 + }, + "tdn": + { + "deviation": 1.3, + "threshold": 0.1 + } + }, + "night": + { + "sdn": + { + "deviation": 1.6, + "strength": 0.5, + "deviation2": 3.2, + "deviation_no_tdn": 3.2, + "strength_no_tdn": 0.75 + }, + "cdn": + { + "deviation": 200, + "strength": 0.3 + }, + "tdn": + { + "deviation": 1.3, + "threshold": 0.1 + } + } + } + }, + { + "rpi.awb": + { + "priors": [ + { + "lux": 0, + "prior": + [ + 2000, 1.0, + 3000, 0.0, + 13000, 0.0 + ] + }, + { + "lux": 800, + "prior": + [ + 2000, 0.0, + 6000, 2.0, + 13000, 2.0 + ] + }, + { + "lux": 1500, + "prior": + [ + 2000, 0.0, + 4000, 1.0, + 6000, 6.0, + 6500, 7.0, + 7000, 1.0, + 13000, 1.0 + ] + } + ], + "modes": + { + "auto": + { + "lo": 2500, + "hi": 8000 + }, + "incandescent": + { + "lo": 2500, + "hi": 3000 + }, + "tungsten": + { + "lo": 3000, + "hi": 3500 + }, + "fluorescent": + { + "lo": 4000, + "hi": 4700 + }, + "indoor": + { + "lo": 3000, + "hi": 5000 + }, + "daylight": + { + "lo": 5500, + "hi": 6500 + }, + "cloudy": + { + "lo": 7000, + "hi": 8600 + } + }, + "bayes": 1, + "ct_curve": + [ + 3200.0, 0.8663, 0.5414, + 5000.0, 0.7241, 0.6964, + 6420.0, 0.6597, 0.7718, + 7900.0, 0.6173, 0.8232, + 8800.0, 0.5982, 0.8468 + ], + "sensitivity_r": 1.0, + "sensitivity_b": 1.0, + "transverse_pos": 0.03, + "transverse_neg": 0.03 + } + }, + { + "rpi.agc": + { + "metering_modes": + { + "centre-weighted": + { + "weights": + [ + 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, + 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, + 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1, + 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1, + 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1, + 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1, + 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1, + 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1, + 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0, + 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 + ] + }, + "spot": + { + "weights": + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ] + }, + "matrix": + { + "weights": + [ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 + ] + } + }, + "exposure_modes": + { + "normal": + { + "shutter": [ 100, 10000, 30000, 60000, 120000 ], + "gain": [ 1.0, 2.0, 4.0, 6.0, 6.0 ] + }, + "short": + { + "shutter": [ 100, 5000, 10000, 20000, 120000 ], + "gain": [ 1.0, 2.0, 4.0, 6.0, 6.0 ] + } + }, + "constraint_modes": + { + "normal": [ + { + "bound": "LOWER", + "q_lo": 0.98, + "q_hi": 1.0, + "y_target": + [ + 0, 0.5, + 1000, 0.5 + ] + } + ], + "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.165, + 10000, 0.17 + ] + } + }, + { + "rpi.alsc": + { + "omega": 1.3, + "n_iter": 100, + "luminance_strength": 0.5, + "calibrations_Cr": [ + { + "ct": 5440, + "table": + [ + 1.785, 1.783, 1.781, 1.773, 1.764, 1.758, 1.752, 1.746, 1.741, 1.738, 1.737, 1.736, 1.735, 1.735, 1.735, 1.734, 1.734, 1.733, 1.734, 1.734, 1.735, 1.736, 1.738, 1.74, 1.744, 1.748, 1.753, 1.759, 1.771, 1.781, 1.783, 1.784, + 1.784, 1.779, 1.775, 1.767, 1.76, 1.753, 1.747, 1.741, 1.736, 1.733, 1.732, 1.73, 1.729, 1.729, 1.728, 1.728, 1.728, 1.728, 1.728, 1.729, 1.729, 1.73, 1.733, 1.736, 1.74, 1.744, 1.749, 1.755, 1.765, 1.775, 1.779, 1.783, + 1.782, 1.775, 1.769, 1.762, 1.755, 1.749, 1.742, 1.736, 1.731, 1.728, 1.726, 1.725, 1.723, 1.722, 1.722, 1.722, 1.722, 1.722, 1.723, 1.723, 1.724, 1.725, 1.729, 1.732, 1.736, 1.739, 1.744, 1.75, 1.759, 1.769, 1.775, 1.782, + 1.78, 1.771, 1.763, 1.757, 1.751, 1.744, 1.737, 1.731, 1.726, 1.723, 1.721, 1.719, 1.717, 1.716, 1.715, 1.715, 1.716, 1.716, 1.717, 1.718, 1.718, 1.72, 1.724, 1.728, 1.731, 1.735, 1.74, 1.745, 1.754, 1.762, 1.771, 1.78, + 1.773, 1.765, 1.757, 1.751, 1.745, 1.738, 1.732, 1.726, 1.721, 1.718, 1.716, 1.714, 1.711, 1.71, 1.709, 1.709, 1.709, 1.71, 1.711, 1.713, 1.713, 1.715, 1.718, 1.722, 1.725, 1.729, 1.734, 1.739, 1.748, 1.756, 1.764, 1.771, + 1.766, 1.759, 1.752, 1.745, 1.739, 1.733, 1.727, 1.722, 1.717, 1.714, 1.711, 1.708, 1.706, 1.704, 1.703, 1.703, 1.703, 1.704, 1.706, 1.707, 1.708, 1.71, 1.713, 1.716, 1.719, 1.723, 1.728, 1.734, 1.742, 1.75, 1.756, 1.763, + 1.759, 1.753, 1.747, 1.74, 1.733, 1.728, 1.723, 1.718, 1.713, 1.709, 1.706, 1.703, 1.701, 1.699, 1.698, 1.698, 1.698, 1.698, 1.7, 1.702, 1.703, 1.705, 1.708, 1.711, 1.714, 1.718, 1.723, 1.729, 1.736, 1.743, 1.75, 1.756, + 1.755, 1.748, 1.742, 1.735, 1.729, 1.724, 1.718, 1.714, 1.709, 1.705, 1.702, 1.699, 1.696, 1.695, 1.694, 1.694, 1.694, 1.694, 1.695, 1.697, 1.699, 1.701, 1.704, 1.707, 1.711, 1.715, 1.719, 1.725, 1.731, 1.738, 1.744, 1.751, + 1.75, 1.743, 1.737, 1.731, 1.725, 1.719, 1.714, 1.709, 1.705, 1.701, 1.697, 1.694, 1.692, 1.691, 1.69, 1.69, 1.69, 1.69, 1.691, 1.692, 1.694, 1.697, 1.7, 1.704, 1.707, 1.711, 1.716, 1.721, 1.726, 1.732, 1.739, 1.745, + 1.745, 1.739, 1.732, 1.727, 1.721, 1.716, 1.71, 1.706, 1.702, 1.698, 1.694, 1.691, 1.689, 1.688, 1.687, 1.687, 1.687, 1.687, 1.688, 1.689, 1.692, 1.694, 1.697, 1.701, 1.704, 1.708, 1.713, 1.717, 1.723, 1.728, 1.735, 1.742, + 1.741, 1.735, 1.728, 1.723, 1.718, 1.712, 1.707, 1.703, 1.699, 1.695, 1.692, 1.689, 1.687, 1.686, 1.685, 1.684, 1.685, 1.685, 1.687, 1.688, 1.69, 1.692, 1.695, 1.698, 1.702, 1.705, 1.71, 1.714, 1.72, 1.727, 1.734, 1.741, + 1.736, 1.73, 1.724, 1.719, 1.715, 1.709, 1.704, 1.7, 1.696, 1.693, 1.69, 1.687, 1.685, 1.684, 1.682, 1.682, 1.682, 1.683, 1.685, 1.687, 1.688, 1.69, 1.693, 1.696, 1.699, 1.703, 1.706, 1.711, 1.718, 1.725, 1.732, 1.739, + 1.735, 1.729, 1.723, 1.718, 1.713, 1.708, 1.702, 1.698, 1.694, 1.691, 1.688, 1.686, 1.684, 1.682, 1.681, 1.681, 1.681, 1.682, 1.684, 1.686, 1.687, 1.689, 1.691, 1.694, 1.698, 1.701, 1.705, 1.71, 1.717, 1.724, 1.731, 1.739, + 1.735, 1.729, 1.722, 1.717, 1.712, 1.707, 1.701, 1.697, 1.693, 1.69, 1.687, 1.685, 1.683, 1.681, 1.68, 1.68, 1.68, 1.681, 1.683, 1.684, 1.686, 1.688, 1.69, 1.693, 1.697, 1.701, 1.705, 1.709, 1.716, 1.723, 1.731, 1.739, + 1.735, 1.728, 1.722, 1.717, 1.712, 1.706, 1.7, 1.696, 1.692, 1.689, 1.686, 1.684, 1.682, 1.681, 1.68, 1.679, 1.679, 1.68, 1.681, 1.683, 1.685, 1.687, 1.689, 1.692, 1.696, 1.7, 1.704, 1.709, 1.715, 1.722, 1.73, 1.739, + 1.735, 1.728, 1.721, 1.716, 1.712, 1.706, 1.7, 1.696, 1.692, 1.689, 1.686, 1.684, 1.682, 1.681, 1.68, 1.679, 1.679, 1.68, 1.681, 1.683, 1.685, 1.687, 1.689, 1.692, 1.696, 1.7, 1.704, 1.709, 1.716, 1.722, 1.731, 1.74, + 1.735, 1.728, 1.721, 1.716, 1.712, 1.706, 1.7, 1.696, 1.693, 1.689, 1.686, 1.684, 1.683, 1.681, 1.68, 1.679, 1.679, 1.68, 1.681, 1.682, 1.685, 1.687, 1.689, 1.692, 1.696, 1.7, 1.705, 1.71, 1.716, 1.723, 1.732, 1.74, + 1.735, 1.728, 1.722, 1.717, 1.712, 1.706, 1.7, 1.696, 1.693, 1.69, 1.686, 1.684, 1.683, 1.682, 1.68, 1.679, 1.679, 1.68, 1.681, 1.682, 1.685, 1.688, 1.69, 1.692, 1.696, 1.7, 1.705, 1.71, 1.717, 1.724, 1.732, 1.741, + 1.736, 1.73, 1.724, 1.719, 1.714, 1.708, 1.702, 1.698, 1.694, 1.691, 1.688, 1.686, 1.684, 1.683, 1.681, 1.681, 1.681, 1.681, 1.682, 1.684, 1.686, 1.689, 1.691, 1.694, 1.697, 1.701, 1.706, 1.712, 1.718, 1.725, 1.733, 1.741, + 1.737, 1.732, 1.726, 1.721, 1.715, 1.709, 1.703, 1.699, 1.696, 1.692, 1.689, 1.687, 1.685, 1.684, 1.683, 1.682, 1.682, 1.683, 1.684, 1.685, 1.687, 1.689, 1.692, 1.695, 1.698, 1.702, 1.708, 1.714, 1.72, 1.726, 1.733, 1.741, + 1.739, 1.733, 1.728, 1.723, 1.717, 1.711, 1.705, 1.701, 1.698, 1.694, 1.691, 1.688, 1.686, 1.685, 1.684, 1.683, 1.683, 1.684, 1.685, 1.687, 1.689, 1.691, 1.694, 1.697, 1.7, 1.704, 1.709, 1.715, 1.721, 1.727, 1.734, 1.741, + 1.742, 1.736, 1.731, 1.725, 1.72, 1.714, 1.708, 1.704, 1.7, 1.696, 1.693, 1.691, 1.689, 1.687, 1.686, 1.685, 1.685, 1.686, 1.687, 1.688, 1.69, 1.693, 1.696, 1.699, 1.702, 1.706, 1.711, 1.717, 1.724, 1.73, 1.736, 1.743, + 1.744, 1.739, 1.733, 1.728, 1.722, 1.717, 1.711, 1.707, 1.702, 1.699, 1.696, 1.693, 1.691, 1.689, 1.688, 1.687, 1.687, 1.687, 1.688, 1.689, 1.692, 1.695, 1.698, 1.701, 1.704, 1.708, 1.713, 1.719, 1.726, 1.733, 1.739, 1.744, + 1.748, 1.742, 1.736, 1.731, 1.725, 1.72, 1.715, 1.71, 1.705, 1.701, 1.698, 1.696, 1.693, 1.691, 1.69, 1.689, 1.689, 1.69, 1.69, 1.692, 1.694, 1.697, 1.701, 1.704, 1.707, 1.711, 1.716, 1.722, 1.729, 1.736, 1.742, 1.747, + 1.752, 1.746, 1.741, 1.734, 1.728, 1.723, 1.718, 1.713, 1.708, 1.705, 1.701, 1.699, 1.696, 1.694, 1.693, 1.693, 1.693, 1.693, 1.694, 1.695, 1.697, 1.7, 1.703, 1.706, 1.71, 1.714, 1.72, 1.725, 1.732, 1.74, 1.746, 1.752, + 1.756, 1.751, 1.745, 1.738, 1.731, 1.726, 1.722, 1.717, 1.712, 1.708, 1.704, 1.701, 1.699, 1.697, 1.696, 1.696, 1.696, 1.696, 1.697, 1.698, 1.7, 1.702, 1.705, 1.708, 1.713, 1.718, 1.723, 1.729, 1.736, 1.743, 1.75, 1.756, + 1.762, 1.756, 1.749, 1.742, 1.735, 1.73, 1.725, 1.721, 1.716, 1.712, 1.708, 1.705, 1.703, 1.701, 1.7, 1.7, 1.7, 1.7, 1.701, 1.702, 1.704, 1.706, 1.709, 1.712, 1.717, 1.722, 1.727, 1.733, 1.741, 1.748, 1.755, 1.762, + 1.768, 1.761, 1.754, 1.747, 1.741, 1.735, 1.729, 1.724, 1.72, 1.716, 1.713, 1.71, 1.708, 1.706, 1.705, 1.704, 1.704, 1.704, 1.704, 1.706, 1.708, 1.71, 1.713, 1.717, 1.721, 1.726, 1.732, 1.738, 1.746, 1.753, 1.761, 1.768, + 1.774, 1.766, 1.759, 1.752, 1.746, 1.739, 1.733, 1.728, 1.724, 1.721, 1.717, 1.715, 1.713, 1.711, 1.709, 1.708, 1.708, 1.708, 1.708, 1.709, 1.712, 1.714, 1.718, 1.721, 1.725, 1.73, 1.736, 1.743, 1.751, 1.759, 1.766, 1.774, + 1.776, 1.77, 1.764, 1.757, 1.75, 1.743, 1.736, 1.732, 1.728, 1.725, 1.722, 1.719, 1.718, 1.716, 1.714, 1.713, 1.713, 1.713, 1.713, 1.714, 1.716, 1.719, 1.722, 1.725, 1.729, 1.734, 1.741, 1.748, 1.756, 1.764, 1.77, 1.776, + 1.776, 1.773, 1.77, 1.762, 1.755, 1.747, 1.74, 1.736, 1.732, 1.729, 1.726, 1.724, 1.723, 1.721, 1.72, 1.719, 1.719, 1.718, 1.719, 1.719, 1.721, 1.723, 1.726, 1.729, 1.733, 1.738, 1.746, 1.754, 1.762, 1.77, 1.773, 1.776, + 1.777, 1.776, 1.775, 1.767, 1.759, 1.751, 1.744, 1.739, 1.736, 1.733, 1.73, 1.728, 1.727, 1.726, 1.725, 1.725, 1.724, 1.724, 1.724, 1.724, 1.725, 1.727, 1.73, 1.733, 1.738, 1.743, 1.751, 1.759, 1.767, 1.775, 1.776, 1.777 + ] + } + ], + "calibrations_Cb": [ + { + "ct": 5440, + "table": + [ + 1.547, 1.549, 1.551, 1.554, 1.558, 1.563, 1.57, 1.574, 1.578, 1.581, 1.585, 1.586, 1.587, 1.586, 1.585, 1.586, 1.586, 1.587, 1.588, 1.588, 1.588, 1.588, 1.587, 1.585, 1.581, 1.577, 1.571, 1.565, 1.562, 1.558, 1.556, 1.555, + 1.548, 1.55, 1.552, 1.556, 1.56, 1.567, 1.574, 1.578, 1.582, 1.585, 1.589, 1.59, 1.591, 1.591, 1.589, 1.589, 1.59, 1.59, 1.591, 1.591, 1.591, 1.591, 1.59, 1.589, 1.584, 1.58, 1.574, 1.569, 1.565, 1.561, 1.558, 1.556, + 1.55, 1.551, 1.553, 1.558, 1.562, 1.57, 1.577, 1.582, 1.585, 1.589, 1.593, 1.594, 1.595, 1.595, 1.593, 1.593, 1.593, 1.593, 1.593, 1.594, 1.595, 1.595, 1.594, 1.592, 1.588, 1.583, 1.578, 1.572, 1.568, 1.563, 1.56, 1.557, + 1.552, 1.553, 1.555, 1.56, 1.565, 1.573, 1.581, 1.585, 1.589, 1.593, 1.596, 1.598, 1.599, 1.599, 1.598, 1.597, 1.596, 1.596, 1.597, 1.597, 1.598, 1.599, 1.598, 1.596, 1.591, 1.586, 1.581, 1.576, 1.571, 1.566, 1.563, 1.559, + 1.555, 1.557, 1.559, 1.564, 1.569, 1.577, 1.585, 1.589, 1.593, 1.597, 1.6, 1.603, 1.604, 1.604, 1.603, 1.603, 1.603, 1.603, 1.603, 1.603, 1.604, 1.604, 1.603, 1.602, 1.596, 1.591, 1.586, 1.58, 1.575, 1.57, 1.567, 1.564, + 1.559, 1.561, 1.562, 1.568, 1.574, 1.581, 1.588, 1.593, 1.598, 1.601, 1.604, 1.607, 1.608, 1.609, 1.609, 1.609, 1.609, 1.609, 1.609, 1.609, 1.609, 1.609, 1.608, 1.607, 1.602, 1.596, 1.59, 1.584, 1.579, 1.573, 1.571, 1.569, + 1.562, 1.564, 1.566, 1.572, 1.578, 1.585, 1.592, 1.598, 1.603, 1.606, 1.609, 1.611, 1.613, 1.614, 1.614, 1.615, 1.615, 1.614, 1.614, 1.614, 1.614, 1.614, 1.613, 1.611, 1.606, 1.601, 1.594, 1.588, 1.582, 1.576, 1.575, 1.574, + 1.565, 1.567, 1.57, 1.576, 1.582, 1.589, 1.597, 1.603, 1.609, 1.612, 1.614, 1.616, 1.618, 1.619, 1.619, 1.619, 1.619, 1.619, 1.619, 1.619, 1.619, 1.619, 1.618, 1.615, 1.609, 1.604, 1.597, 1.591, 1.585, 1.579, 1.579, 1.578, + 1.568, 1.57, 1.573, 1.58, 1.586, 1.594, 1.601, 1.608, 1.615, 1.618, 1.62, 1.621, 1.622, 1.623, 1.624, 1.624, 1.624, 1.624, 1.624, 1.624, 1.624, 1.623, 1.622, 1.619, 1.613, 1.606, 1.6, 1.593, 1.588, 1.583, 1.582, 1.582, + 1.571, 1.574, 1.576, 1.583, 1.589, 1.597, 1.605, 1.611, 1.618, 1.621, 1.623, 1.625, 1.625, 1.626, 1.627, 1.627, 1.627, 1.627, 1.627, 1.627, 1.627, 1.627, 1.625, 1.622, 1.616, 1.609, 1.602, 1.595, 1.59, 1.585, 1.585, 1.585, + 1.576, 1.577, 1.579, 1.585, 1.592, 1.599, 1.607, 1.613, 1.62, 1.623, 1.625, 1.626, 1.627, 1.628, 1.629, 1.629, 1.63, 1.63, 1.63, 1.63, 1.63, 1.629, 1.626, 1.623, 1.618, 1.612, 1.605, 1.598, 1.592, 1.587, 1.586, 1.586, + 1.58, 1.581, 1.581, 1.588, 1.594, 1.602, 1.609, 1.615, 1.621, 1.624, 1.627, 1.628, 1.628, 1.629, 1.631, 1.632, 1.632, 1.632, 1.632, 1.632, 1.632, 1.631, 1.627, 1.624, 1.62, 1.615, 1.607, 1.6, 1.594, 1.588, 1.588, 1.587, + 1.58, 1.581, 1.582, 1.589, 1.595, 1.603, 1.61, 1.616, 1.622, 1.625, 1.628, 1.629, 1.629, 1.63, 1.631, 1.632, 1.633, 1.633, 1.633, 1.633, 1.633, 1.631, 1.628, 1.625, 1.621, 1.616, 1.609, 1.601, 1.595, 1.59, 1.588, 1.587, + 1.58, 1.581, 1.583, 1.589, 1.596, 1.603, 1.611, 1.617, 1.622, 1.626, 1.629, 1.63, 1.63, 1.631, 1.632, 1.632, 1.632, 1.633, 1.633, 1.633, 1.632, 1.631, 1.629, 1.626, 1.623, 1.618, 1.61, 1.603, 1.597, 1.591, 1.589, 1.587, + 1.579, 1.581, 1.584, 1.59, 1.596, 1.604, 1.612, 1.618, 1.623, 1.626, 1.63, 1.631, 1.631, 1.631, 1.632, 1.632, 1.632, 1.632, 1.633, 1.633, 1.632, 1.631, 1.63, 1.628, 1.624, 1.619, 1.612, 1.604, 1.598, 1.592, 1.589, 1.587, + 1.578, 1.581, 1.583, 1.59, 1.597, 1.605, 1.613, 1.619, 1.623, 1.627, 1.63, 1.631, 1.631, 1.631, 1.632, 1.632, 1.632, 1.632, 1.633, 1.633, 1.632, 1.631, 1.63, 1.628, 1.624, 1.62, 1.612, 1.605, 1.598, 1.592, 1.59, 1.588, + 1.578, 1.58, 1.582, 1.59, 1.597, 1.605, 1.614, 1.619, 1.624, 1.627, 1.63, 1.631, 1.631, 1.631, 1.632, 1.633, 1.633, 1.633, 1.633, 1.633, 1.633, 1.632, 1.63, 1.628, 1.625, 1.62, 1.613, 1.606, 1.599, 1.592, 1.59, 1.588, + 1.577, 1.579, 1.582, 1.59, 1.598, 1.606, 1.614, 1.62, 1.625, 1.628, 1.63, 1.631, 1.631, 1.632, 1.632, 1.633, 1.633, 1.633, 1.633, 1.633, 1.633, 1.632, 1.63, 1.628, 1.625, 1.621, 1.614, 1.607, 1.599, 1.592, 1.591, 1.589, + 1.577, 1.579, 1.581, 1.589, 1.597, 1.605, 1.614, 1.619, 1.624, 1.627, 1.629, 1.63, 1.63, 1.631, 1.632, 1.632, 1.633, 1.633, 1.633, 1.633, 1.633, 1.632, 1.63, 1.628, 1.625, 1.621, 1.613, 1.606, 1.599, 1.592, 1.591, 1.59, + 1.577, 1.579, 1.581, 1.588, 1.596, 1.604, 1.613, 1.618, 1.623, 1.626, 1.627, 1.629, 1.629, 1.63, 1.631, 1.632, 1.633, 1.633, 1.634, 1.634, 1.633, 1.632, 1.63, 1.627, 1.624, 1.62, 1.613, 1.605, 1.599, 1.593, 1.592, 1.59, + 1.577, 1.579, 1.58, 1.587, 1.595, 1.603, 1.612, 1.617, 1.622, 1.625, 1.626, 1.627, 1.628, 1.629, 1.63, 1.631, 1.632, 1.633, 1.633, 1.633, 1.633, 1.632, 1.63, 1.627, 1.624, 1.62, 1.611, 1.604, 1.598, 1.593, 1.592, 1.591, + 1.576, 1.578, 1.579, 1.586, 1.593, 1.601, 1.609, 1.615, 1.62, 1.623, 1.625, 1.627, 1.628, 1.629, 1.629, 1.63, 1.631, 1.631, 1.632, 1.632, 1.632, 1.631, 1.629, 1.626, 1.621, 1.616, 1.609, 1.602, 1.597, 1.592, 1.591, 1.59, + 1.575, 1.577, 1.578, 1.585, 1.592, 1.599, 1.606, 1.612, 1.618, 1.622, 1.625, 1.626, 1.627, 1.628, 1.628, 1.629, 1.629, 1.63, 1.63, 1.63, 1.631, 1.631, 1.628, 1.625, 1.619, 1.613, 1.606, 1.6, 1.595, 1.591, 1.59, 1.589, + 1.574, 1.575, 1.576, 1.582, 1.589, 1.596, 1.603, 1.609, 1.615, 1.619, 1.622, 1.624, 1.625, 1.626, 1.626, 1.626, 1.627, 1.627, 1.627, 1.628, 1.629, 1.629, 1.626, 1.623, 1.617, 1.611, 1.604, 1.597, 1.593, 1.589, 1.587, 1.586, + 1.571, 1.572, 1.573, 1.578, 1.584, 1.592, 1.6, 1.606, 1.611, 1.615, 1.619, 1.62, 1.621, 1.622, 1.622, 1.622, 1.622, 1.623, 1.624, 1.625, 1.626, 1.625, 1.623, 1.62, 1.615, 1.609, 1.602, 1.595, 1.59, 1.585, 1.582, 1.58, + 1.568, 1.569, 1.57, 1.575, 1.58, 1.588, 1.596, 1.602, 1.606, 1.611, 1.615, 1.617, 1.618, 1.618, 1.618, 1.618, 1.618, 1.619, 1.621, 1.622, 1.622, 1.622, 1.62, 1.617, 1.612, 1.607, 1.6, 1.592, 1.586, 1.58, 1.578, 1.575, + 1.563, 1.564, 1.566, 1.57, 1.575, 1.583, 1.591, 1.596, 1.601, 1.605, 1.609, 1.611, 1.612, 1.612, 1.612, 1.612, 1.612, 1.613, 1.615, 1.616, 1.616, 1.615, 1.614, 1.611, 1.606, 1.601, 1.594, 1.587, 1.581, 1.575, 1.572, 1.57, + 1.557, 1.558, 1.56, 1.565, 1.569, 1.577, 1.584, 1.59, 1.595, 1.598, 1.602, 1.604, 1.605, 1.605, 1.605, 1.605, 1.605, 1.606, 1.608, 1.609, 1.609, 1.608, 1.606, 1.604, 1.598, 1.593, 1.586, 1.58, 1.574, 1.569, 1.567, 1.564, + 1.55, 1.552, 1.555, 1.559, 1.563, 1.57, 1.578, 1.583, 1.589, 1.592, 1.595, 1.596, 1.598, 1.598, 1.598, 1.598, 1.598, 1.599, 1.601, 1.602, 1.601, 1.6, 1.599, 1.597, 1.59, 1.584, 1.578, 1.573, 1.568, 1.563, 1.561, 1.559, + 1.546, 1.549, 1.552, 1.556, 1.56, 1.566, 1.573, 1.579, 1.584, 1.587, 1.589, 1.59, 1.591, 1.591, 1.591, 1.591, 1.592, 1.593, 1.595, 1.596, 1.595, 1.594, 1.594, 1.591, 1.585, 1.579, 1.574, 1.568, 1.564, 1.559, 1.557, 1.555, + 1.543, 1.546, 1.55, 1.553, 1.556, 1.562, 1.569, 1.574, 1.579, 1.581, 1.583, 1.584, 1.585, 1.585, 1.585, 1.586, 1.587, 1.588, 1.589, 1.59, 1.59, 1.589, 1.588, 1.586, 1.581, 1.575, 1.57, 1.565, 1.56, 1.556, 1.553, 1.55, + 1.539, 1.543, 1.548, 1.55, 1.553, 1.558, 1.565, 1.569, 1.574, 1.576, 1.578, 1.578, 1.578, 1.578, 1.579, 1.58, 1.581, 1.582, 1.583, 1.584, 1.584, 1.584, 1.583, 1.582, 1.576, 1.571, 1.566, 1.561, 1.557, 1.553, 1.549, 1.546 + ] + } + ], + "luminance_lut": + [ + 1.317, 1.3, 1.283, 1.265, 1.247, 1.231, 1.214, 1.203, 1.194, 1.186, 1.18, 1.173, 1.167, 1.16, 1.152, 1.149, 1.149, 1.148, 1.147, 1.151, 1.163, 1.171, 1.173, 1.177, 1.191, 1.204, 1.221, 1.237, 1.254, 1.27, 1.278, 1.287, + 1.317, 1.296, 1.275, 1.257, 1.238, 1.222, 1.207, 1.196, 1.186, 1.177, 1.17, 1.162, 1.156, 1.149, 1.142, 1.138, 1.137, 1.137, 1.137, 1.142, 1.154, 1.163, 1.166, 1.171, 1.184, 1.198, 1.213, 1.229, 1.248, 1.265, 1.276, 1.286, + 1.316, 1.292, 1.267, 1.248, 1.229, 1.214, 1.2, 1.189, 1.178, 1.169, 1.159, 1.151, 1.145, 1.138, 1.132, 1.128, 1.125, 1.125, 1.128, 1.134, 1.145, 1.154, 1.159, 1.165, 1.178, 1.191, 1.206, 1.221, 1.242, 1.261, 1.273, 1.286, + 1.314, 1.287, 1.259, 1.239, 1.22, 1.206, 1.192, 1.181, 1.17, 1.159, 1.149, 1.14, 1.134, 1.128, 1.122, 1.117, 1.114, 1.114, 1.119, 1.125, 1.136, 1.145, 1.151, 1.159, 1.171, 1.184, 1.198, 1.213, 1.235, 1.256, 1.27, 1.283, + 1.303, 1.276, 1.249, 1.23, 1.212, 1.197, 1.183, 1.171, 1.159, 1.148, 1.137, 1.129, 1.123, 1.117, 1.111, 1.107, 1.104, 1.104, 1.109, 1.116, 1.126, 1.135, 1.141, 1.15, 1.163, 1.176, 1.19, 1.204, 1.225, 1.245, 1.259, 1.273, + 1.292, 1.266, 1.239, 1.221, 1.204, 1.188, 1.174, 1.161, 1.149, 1.137, 1.126, 1.118, 1.112, 1.107, 1.101, 1.097, 1.093, 1.094, 1.099, 1.106, 1.115, 1.124, 1.132, 1.141, 1.155, 1.169, 1.181, 1.195, 1.215, 1.235, 1.249, 1.263, + 1.28, 1.255, 1.23, 1.212, 1.195, 1.18, 1.165, 1.152, 1.139, 1.127, 1.116, 1.108, 1.102, 1.097, 1.091, 1.087, 1.084, 1.085, 1.09, 1.096, 1.105, 1.115, 1.124, 1.134, 1.147, 1.161, 1.174, 1.188, 1.207, 1.226, 1.241, 1.255, + 1.268, 1.246, 1.224, 1.205, 1.186, 1.171, 1.156, 1.143, 1.129, 1.118, 1.107, 1.099, 1.093, 1.088, 1.083, 1.079, 1.077, 1.077, 1.081, 1.087, 1.096, 1.107, 1.12, 1.132, 1.142, 1.153, 1.168, 1.183, 1.202, 1.221, 1.236, 1.251, + 1.255, 1.236, 1.217, 1.197, 1.178, 1.162, 1.148, 1.134, 1.119, 1.108, 1.098, 1.091, 1.085, 1.079, 1.074, 1.071, 1.069, 1.069, 1.072, 1.077, 1.087, 1.099, 1.116, 1.13, 1.137, 1.145, 1.162, 1.179, 1.198, 1.216, 1.231, 1.246, + 1.246, 1.229, 1.211, 1.191, 1.17, 1.155, 1.141, 1.127, 1.112, 1.101, 1.091, 1.084, 1.078, 1.073, 1.068, 1.065, 1.063, 1.063, 1.065, 1.07, 1.08, 1.092, 1.11, 1.125, 1.13, 1.139, 1.156, 1.174, 1.193, 1.211, 1.226, 1.241, + 1.241, 1.223, 1.205, 1.184, 1.163, 1.149, 1.137, 1.122, 1.107, 1.096, 1.086, 1.079, 1.074, 1.069, 1.064, 1.06, 1.058, 1.057, 1.059, 1.064, 1.074, 1.086, 1.102, 1.116, 1.124, 1.133, 1.152, 1.17, 1.188, 1.206, 1.221, 1.236, + 1.235, 1.218, 1.2, 1.178, 1.156, 1.143, 1.132, 1.117, 1.102, 1.091, 1.081, 1.075, 1.069, 1.065, 1.06, 1.056, 1.052, 1.051, 1.053, 1.058, 1.068, 1.08, 1.095, 1.108, 1.117, 1.128, 1.147, 1.166, 1.184, 1.201, 1.216, 1.23, + 1.23, 1.212, 1.194, 1.174, 1.154, 1.141, 1.128, 1.114, 1.099, 1.088, 1.079, 1.072, 1.067, 1.062, 1.058, 1.054, 1.05, 1.049, 1.05, 1.055, 1.066, 1.077, 1.089, 1.101, 1.113, 1.125, 1.143, 1.16, 1.178, 1.196, 1.211, 1.226, + 1.224, 1.206, 1.187, 1.171, 1.155, 1.14, 1.124, 1.111, 1.098, 1.087, 1.077, 1.07, 1.065, 1.061, 1.057, 1.053, 1.048, 1.047, 1.049, 1.054, 1.064, 1.074, 1.084, 1.096, 1.109, 1.124, 1.139, 1.154, 1.172, 1.19, 1.206, 1.222, + 1.219, 1.2, 1.181, 1.168, 1.156, 1.138, 1.12, 1.108, 1.097, 1.086, 1.075, 1.068, 1.063, 1.059, 1.056, 1.052, 1.047, 1.045, 1.048, 1.053, 1.062, 1.071, 1.079, 1.09, 1.106, 1.122, 1.134, 1.148, 1.166, 1.185, 1.201, 1.218, + 1.219, 1.203, 1.186, 1.171, 1.155, 1.139, 1.122, 1.11, 1.099, 1.087, 1.076, 1.068, 1.062, 1.058, 1.054, 1.051, 1.047, 1.046, 1.049, 1.053, 1.061, 1.07, 1.079, 1.09, 1.104, 1.119, 1.133, 1.147, 1.165, 1.182, 1.198, 1.215, + 1.221, 1.207, 1.193, 1.174, 1.155, 1.139, 1.124, 1.112, 1.1, 1.089, 1.078, 1.069, 1.062, 1.057, 1.052, 1.05, 1.048, 1.048, 1.05, 1.054, 1.061, 1.069, 1.079, 1.09, 1.102, 1.115, 1.131, 1.147, 1.163, 1.179, 1.196, 1.212, + 1.223, 1.211, 1.199, 1.177, 1.155, 1.14, 1.127, 1.115, 1.102, 1.091, 1.079, 1.07, 1.062, 1.056, 1.051, 1.049, 1.049, 1.049, 1.052, 1.055, 1.061, 1.068, 1.08, 1.091, 1.101, 1.113, 1.13, 1.147, 1.162, 1.178, 1.194, 1.21, + 1.23, 1.216, 1.201, 1.182, 1.162, 1.147, 1.133, 1.119, 1.105, 1.094, 1.085, 1.076, 1.066, 1.059, 1.054, 1.052, 1.052, 1.053, 1.055, 1.059, 1.065, 1.072, 1.081, 1.091, 1.104, 1.117, 1.134, 1.151, 1.167, 1.183, 1.199, 1.216, + 1.238, 1.22, 1.203, 1.186, 1.169, 1.153, 1.138, 1.123, 1.107, 1.098, 1.091, 1.081, 1.07, 1.062, 1.057, 1.055, 1.055, 1.056, 1.058, 1.062, 1.069, 1.076, 1.083, 1.092, 1.106, 1.121, 1.138, 1.155, 1.171, 1.188, 1.205, 1.222, + 1.245, 1.226, 1.207, 1.191, 1.175, 1.16, 1.145, 1.128, 1.111, 1.103, 1.097, 1.087, 1.075, 1.067, 1.061, 1.058, 1.059, 1.061, 1.063, 1.067, 1.074, 1.081, 1.086, 1.094, 1.11, 1.126, 1.142, 1.159, 1.176, 1.194, 1.211, 1.229, + 1.252, 1.235, 1.217, 1.199, 1.18, 1.166, 1.153, 1.137, 1.121, 1.111, 1.103, 1.093, 1.083, 1.074, 1.068, 1.065, 1.065, 1.067, 1.069, 1.073, 1.081, 1.087, 1.093, 1.101, 1.115, 1.131, 1.148, 1.165, 1.183, 1.2, 1.218, 1.236, + 1.26, 1.243, 1.227, 1.206, 1.185, 1.173, 1.162, 1.147, 1.13, 1.119, 1.109, 1.099, 1.09, 1.082, 1.075, 1.071, 1.072, 1.073, 1.076, 1.08, 1.087, 1.094, 1.099, 1.107, 1.121, 1.136, 1.153, 1.171, 1.189, 1.207, 1.225, 1.244, + 1.269, 1.252, 1.235, 1.215, 1.194, 1.181, 1.17, 1.155, 1.139, 1.127, 1.117, 1.108, 1.099, 1.091, 1.083, 1.079, 1.079, 1.08, 1.083, 1.088, 1.095, 1.102, 1.108, 1.115, 1.128, 1.142, 1.16, 1.178, 1.196, 1.214, 1.233, 1.252, + 1.278, 1.26, 1.243, 1.224, 1.206, 1.192, 1.178, 1.163, 1.148, 1.138, 1.129, 1.119, 1.109, 1.1, 1.093, 1.089, 1.087, 1.088, 1.092, 1.097, 1.104, 1.111, 1.118, 1.126, 1.137, 1.15, 1.169, 1.187, 1.204, 1.222, 1.242, 1.262, + 1.288, 1.269, 1.25, 1.234, 1.218, 1.202, 1.185, 1.17, 1.156, 1.148, 1.141, 1.13, 1.118, 1.11, 1.103, 1.099, 1.096, 1.096, 1.101, 1.106, 1.113, 1.12, 1.128, 1.136, 1.146, 1.157, 1.177, 1.196, 1.213, 1.23, 1.251, 1.272, + 1.302, 1.281, 1.261, 1.245, 1.23, 1.212, 1.194, 1.18, 1.166, 1.158, 1.152, 1.142, 1.13, 1.121, 1.114, 1.11, 1.107, 1.107, 1.111, 1.116, 1.123, 1.13, 1.139, 1.147, 1.156, 1.166, 1.186, 1.206, 1.223, 1.24, 1.261, 1.283, + 1.318, 1.295, 1.273, 1.257, 1.241, 1.223, 1.205, 1.191, 1.177, 1.169, 1.163, 1.154, 1.142, 1.133, 1.126, 1.121, 1.119, 1.119, 1.122, 1.126, 1.132, 1.14, 1.149, 1.158, 1.166, 1.176, 1.196, 1.216, 1.234, 1.252, 1.273, 1.295, + 1.333, 1.31, 1.286, 1.269, 1.251, 1.234, 1.216, 1.201, 1.188, 1.18, 1.175, 1.165, 1.153, 1.144, 1.137, 1.133, 1.132, 1.131, 1.132, 1.136, 1.142, 1.149, 1.159, 1.168, 1.176, 1.186, 1.206, 1.226, 1.245, 1.264, 1.286, 1.307, + 1.337, 1.318, 1.299, 1.279, 1.26, 1.242, 1.225, 1.21, 1.195, 1.187, 1.18, 1.171, 1.162, 1.155, 1.148, 1.144, 1.142, 1.143, 1.145, 1.148, 1.155, 1.162, 1.171, 1.179, 1.188, 1.199, 1.216, 1.234, 1.254, 1.275, 1.294, 1.312, + 1.338, 1.325, 1.311, 1.29, 1.267, 1.25, 1.233, 1.218, 1.202, 1.192, 1.184, 1.177, 1.17, 1.164, 1.158, 1.155, 1.153, 1.154, 1.157, 1.162, 1.169, 1.176, 1.183, 1.191, 1.201, 1.212, 1.226, 1.241, 1.263, 1.285, 1.301, 1.317, + 1.339, 1.331, 1.324, 1.3, 1.275, 1.258, 1.242, 1.226, 1.209, 1.198, 1.187, 1.182, 1.178, 1.174, 1.168, 1.165, 1.164, 1.165, 1.169, 1.175, 1.182, 1.189, 1.195, 1.202, 1.214, 1.225, 1.236, 1.249, 1.272, 1.295, 1.308, 1.321 + ], + "sigma": 0.005, + "sigma_Cb": 0.005 + } + }, + { + "rpi.contrast": + { + "ce_enable": 1, + "gamma_curve": + [ + 0, 0, + 1024, 5432.589474, + 2048, 10065.38105, + 3072, 13318.46737, + 4096, 16504.72421, + 5120, 19457.07789, + 6144, 22409.43158, + 7168, 24999.61263, + 8192, 27749.32211, + 9216, 30118.53474, + 10240, 32374.56842, + 11264, 34498.02105, + 12288, 36621.47368, + 13312, 38604.8, + 14336, 40528.84211, + 15360, 42218.98105, + 16384, 43807.79789, + 18432, 46757.99579, + 20480, 49312.60632, + 22528, 51472.70737, + 24576, 53486.21474, + 26624, 55245.33895, + 28672, 56802.89684, + 30720, 57986.42526, + 32768, 59150.55158, + 36864, 61452.93474, + 40960, 63224.99368, + 45056, 64624.10105, + 49152, 65535, + 53248, 65535, + 57344, 65535, + 61440, 65535, + 65535, 65535 + ] + } + }, + { + "rpi.ccm": + { + "saturation": [ 0, 0, 100, 0.6, 1000, 1, 10000, 1 ], + "ccms": [ + { + "ct": 2500, + "ccm": + [ + 0.33334, 0.33332, 0.33337, + 0.33337, 0.33331, 0.33333, + 0.33334, 0.33333, 0.33335 + ] + }, + { + "ct": 7400, + "ccm": + [ + 0.33334, 0.33332, 0.33337, + 0.33337, 0.33331, 0.33333, + 0.33334, 0.33333, 0.33335 + ] + } + ] + } + }, + { + "rpi.sharpen": { } + } + ] +} \ 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 b42f5f6c8..4a030f05c 100644 --- a/src/ipa/rpi/vc4/data/meson.build +++ b/src/ipa/rpi/vc4/data/meson.build @@ -1,6 +1,8 @@ # SPDX-License-Identifier: CC0-1.0 conf_files = files([ + 'mira220.json', + 'mira220_mono.json', 'imx219.json', 'imx219_noir.json', 'imx283.json', diff --git a/src/ipa/rpi/vc4/data/mira220.json b/src/ipa/rpi/vc4/data/mira220.json new file mode 100644 index 000000000..1b47c13d9 --- /dev/null +++ b/src/ipa/rpi/vc4/data/mira220.json @@ -0,0 +1,370 @@ +{ + "version": 2.0, + "target": "bcm2835", + "algorithms": [ + { + "rpi.black_level": + { + "black_level": 2500 + } + }, + { + "rpi.dpc": { } + }, + { + "rpi.lux": + { + "reference_shutter_speed": 33316, + "reference_gain": 1.0, + "reference_aperture": 1.0, + "reference_lux": 530, + "reference_Y": 9873 + } + }, + { + "rpi.noise": + { + "reference_constant": 0, + "reference_slope": 1.449 + } + }, + { + "rpi.geq": + { + "offset": 271, + "slope": 0.00179 + } + }, + { + "rpi.sdn": { } + }, + { + "rpi.awb": + { + "priors": [ + { + "lux": 0, + "prior": + [ + 2000, 1.0, + 3000, 0.0, + 13000, 0.0 + ] + }, + { + "lux": 800, + "prior": + [ + 2000, 0.0, + 6000, 2.0, + 13000, 2.0 + ] + }, + { + "lux": 1500, + "prior": + [ + 2000, 0.0, + 4000, 1.0, + 6000, 6.0, + 6500, 7.0, + 7000, 1.0, + 13000, 1.0 + ] + } + ], + "modes": + { + "auto": + { + "lo": 2500, + "hi": 8000 + }, + "incandescent": + { + "lo": 2500, + "hi": 3000 + }, + "tungsten": + { + "lo": 3000, + "hi": 3500 + }, + "fluorescent": + { + "lo": 4000, + "hi": 4700 + }, + "indoor": + { + "lo": 3000, + "hi": 5000 + }, + "daylight": + { + "lo": 5500, + "hi": 6500 + }, + "cloudy": + { + "lo": 7000, + "hi": 8600 + } + }, + "bayes": 1, + "ct_curve": + [ + 3200.0, 0.8663, 0.5414, + 5000.0, 0.7241, 0.6964, + 6420.0, 0.6597, 0.7718, + 7900.0, 0.6173, 0.8232, + 8800.0, 0.5982, 0.8468 + ], + "sensitivity_r": 1.0, + "sensitivity_b": 1.0, + "transverse_pos": 0.03, + "transverse_neg": 0.03 + } + }, + { + "rpi.agc": + { + "metering_modes": + { + "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 ] + }, + "matrix": + { + "weights": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ] + } + }, + "exposure_modes": + { + "normal": + { + "shutter": [ 100, 10000, 30000, 60000, 120000 ], + "gain": [ 1.0, 2.0, 4.0, 6.0, 6.0 ] + }, + "short": + { + "shutter": [ 100, 5000, 10000, 20000, 120000 ], + "gain": [ 1.0, 2.0, 4.0, 6.0, 6.0 ] + } + }, + "constraint_modes": + { + "normal": [ + { + "bound": "LOWER", + "q_lo": 0.98, + "q_hi": 1.0, + "y_target": + [ + 0, 0.5, + 1000, 0.5 + ] + } + ], + "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.165, + 10000, 0.17 + ] + } + }, + { + "rpi.alsc": + { + "omega": 1.3, + "n_iter": 100, + "luminance_strength": 0.5, + "calibrations_Cr": [ + { + "ct": 5440, + "table": + [ + 1.785, 1.781, 1.763, 1.751, 1.739, 1.737, 1.735, 1.735, 1.733, 1.734, 1.735, 1.739, 1.747, 1.758, 1.781, 1.784, + 1.781, 1.763, 1.751, 1.736, 1.725, 1.721, 1.717, 1.716, 1.717, 1.719, 1.719, 1.728, 1.735, 1.745, 1.763, 1.781, + 1.761, 1.748, 1.734, 1.723, 1.713, 1.707, 1.701, 1.699, 1.699, 1.703, 1.706, 1.711, 1.718, 1.729, 1.745, 1.758, + 1.748, 1.734, 1.722, 1.711, 1.702, 1.694, 1.689, 1.688, 1.688, 1.689, 1.694, 1.701, 1.709, 1.718, 1.729, 1.743, + 1.735, 1.723, 1.713, 1.702, 1.694, 1.688, 1.684, 1.681, 1.682, 1.686, 1.689, 1.694, 1.701, 1.709, 1.724, 1.739, + 1.735, 1.721, 1.711, 1.699, 1.691, 1.685, 1.681, 1.679, 1.679, 1.682, 1.686, 1.691, 1.699, 1.708, 1.721, 1.739, + 1.735, 1.721, 1.711, 1.699, 1.692, 1.685, 1.683, 1.679, 1.679, 1.681, 1.687, 1.691, 1.699, 1.709, 1.723, 1.741, + 1.738, 1.727, 1.716, 1.703, 1.696, 1.689, 1.685, 1.683, 1.683, 1.686, 1.689, 1.695, 1.702, 1.714, 1.726, 1.741, + 1.746, 1.734, 1.723, 1.712, 1.702, 1.696, 1.691, 1.688, 1.688, 1.689, 1.695, 1.702, 1.708, 1.719, 1.734, 1.745, + 1.758, 1.746, 1.731, 1.722, 1.712, 1.704, 1.699, 1.697, 1.697, 1.699, 1.702, 1.708, 1.718, 1.729, 1.744, 1.758, + 1.775, 1.759, 1.746, 1.732, 1.724, 1.717, 1.713, 1.709, 1.708, 1.709, 1.714, 1.721, 1.729, 1.743, 1.759, 1.775, + 1.777, 1.775, 1.758, 1.742, 1.735, 1.729, 1.727, 1.725, 1.724, 1.724, 1.726, 1.732, 1.741, 1.758, 1.775, 1.777 + ] + } + ], + "calibrations_Cb": [ + { + "ct": 5440, + "table": + [ + 1.547, 1.551, 1.558, 1.571, 1.579, 1.586, 1.587, 1.585, 1.587, 1.588, 1.588, 1.586, 1.578, 1.566, 1.558, 1.555, + 1.551, 1.554, 1.565, 1.582, 1.589, 1.597, 1.599, 1.596, 1.595, 1.596, 1.598, 1.597, 1.586, 1.576, 1.566, 1.558, + 1.561, 1.565, 1.577, 1.592, 1.602, 1.608, 1.612, 1.613, 1.613, 1.612, 1.613, 1.611, 1.601, 1.588, 1.575, 1.572, + 1.569, 1.575, 1.589, 1.605, 1.619, 1.623, 1.625, 1.626, 1.626, 1.626, 1.626, 1.623, 1.609, 1.595, 1.584, 1.584, + 1.581, 1.582, 1.596, 1.611, 1.623, 1.628, 1.629, 1.632, 1.633, 1.633, 1.633, 1.625, 1.617, 1.601, 1.589, 1.587, + 1.579, 1.584, 1.597, 1.614, 1.624, 1.631, 1.631, 1.632, 1.632, 1.633, 1.631, 1.629, 1.621, 1.605, 1.592, 1.587, + 1.577, 1.582, 1.599, 1.616, 1.626, 1.631, 1.631, 1.633, 1.633, 1.633, 1.633, 1.629, 1.622, 1.608, 1.592, 1.589, + 1.577, 1.581, 1.596, 1.614, 1.624, 1.627, 1.629, 1.631, 1.633, 1.634, 1.633, 1.628, 1.622, 1.605, 1.593, 1.591, + 1.575, 1.577, 1.592, 1.606, 1.619, 1.625, 1.627, 1.628, 1.629, 1.629, 1.631, 1.626, 1.613, 1.599, 1.591, 1.588, + 1.567, 1.569, 1.579, 1.597, 1.606, 1.615, 1.617, 1.616, 1.616, 1.621, 1.621, 1.617, 1.608, 1.592, 1.579, 1.573, + 1.549, 1.554, 1.563, 1.578, 1.589, 1.594, 1.597, 1.596, 1.597, 1.601, 1.599, 1.597, 1.584, 1.572, 1.562, 1.558, + 1.539, 1.548, 1.553, 1.566, 1.575, 1.578, 1.578, 1.579, 1.582, 1.584, 1.584, 1.583, 1.572, 1.562, 1.553, 1.546 + ] + } + ], + "luminance_lut": + [ + 1.317, 1.282, 1.245, 1.211, 1.191, 1.178, 1.164, 1.149, 1.149, 1.146, 1.171, 1.174, 1.201, 1.235, 1.269, 1.287, + 1.316, 1.259, 1.219, 1.191, 1.169, 1.147, 1.133, 1.121, 1.114, 1.123, 1.145, 1.157, 1.183, 1.212, 1.257, 1.285, + 1.285, 1.231, 1.196, 1.165, 1.139, 1.115, 1.103, 1.092, 1.085, 1.096, 1.115, 1.131, 1.161, 1.187, 1.227, 1.257, + 1.249, 1.213, 1.171, 1.141, 1.111, 1.091, 1.078, 1.068, 1.065, 1.069, 1.089, 1.128, 1.138, 1.174, 1.213, 1.244, + 1.234, 1.197, 1.151, 1.129, 1.096, 1.077, 1.066, 1.057, 1.049, 1.052, 1.074, 1.103, 1.123, 1.162, 1.199, 1.229, + 1.218, 1.179, 1.154, 1.116, 1.094, 1.071, 1.061, 1.054, 1.044, 1.049, 1.068, 1.085, 1.119, 1.145, 1.183, 1.218, + 1.222, 1.198, 1.151, 1.124, 1.099, 1.075, 1.058, 1.049, 1.048, 1.053, 1.064, 1.088, 1.109, 1.145, 1.176, 1.209, + 1.243, 1.203, 1.172, 1.139, 1.104, 1.094, 1.068, 1.056, 1.058, 1.062, 1.077, 1.088, 1.121, 1.155, 1.191, 1.227, + 1.264, 1.231, 1.185, 1.165, 1.131, 1.108, 1.091, 1.075, 1.075, 1.081, 1.096, 1.107, 1.135, 1.172, 1.209, 1.248, + 1.292, 1.251, 1.221, 1.184, 1.156, 1.143, 1.117, 1.104, 1.097, 1.107, 1.121, 1.138, 1.156, 1.197, 1.231, 1.275, + 1.336, 1.287, 1.251, 1.214, 1.186, 1.175, 1.151, 1.136, 1.133, 1.135, 1.148, 1.168, 1.184, 1.225, 1.265, 1.309, + 1.339, 1.323, 1.272, 1.239, 1.205, 1.184, 1.177, 1.166, 1.163, 1.172, 1.187, 1.199, 1.223, 1.246, 1.294, 1.321 + ], + "sigma": 0.005, + "sigma_Cb": 0.005 + } + }, + { + "rpi.contrast": + { + "ce_enable": 1, + "gamma_curve": + [ + 0,0, + 1024,5432.589474, + 2048,10065.38105, + 3072,13318.46737, + 4096,16504.72421, + 5120,19457.07789, + 6144,22409.43158, + 7168,24999.61263, + 8192,27749.32211, + 9216,30118.53474, + 10240,32374.56842, + 11264,34498.02105, + 12288,36621.47368, + 13312,38604.8, + 14336,40528.84211, + 15360,42218.98105, + 16384,43807.79789, + 18432,46757.99579, + 20480,49312.60632, + 22528,51472.70737, + 24576,53486.21474, + 26624,55245.33895, + 28672,56802.89684, + 30720,57986.42526, + 32768,59150.55158, + 36864,61452.93474, + 40960,63224.99368, + 45056,64624.10105, + 49152,65535, + 53248,65535, + 57344,65535, + 61440,65535, + 65535,65535 + ] + } + }, + { + "rpi.ccm": + { + "saturation": [0,0,100,0.6,1000,1,10000,1], + "ccms": [ + { + "ct": 3200, + "ccm": + [ + 1.58652, 0.12247, -0.70899, + -0.88406, 2.29465, -0.41059, + -0.56176, 0.41247, 1.14928 + ] + }, + { + "ct": 5000, + "ccm": + [ + 1.95623, 0.41006, -1.36629, + -0.78719, 2.27844, -0.49125, + -0.72722, 0.10062, 1.62659 + ] + }, + { + "ct": 6420, + "ccm": + [ + 1.81505, 0.31616, -1.13121, + -0.63029, 2.05535, -0.42506, + -0.50025, -0.11887, 1.61912 + ] + }, + { + "ct": 7900, + "ccm": + [ + 1.77947, 0.24161, -1.02108, + -0.55019, 1.96917, -0.41898, + -0.40238, -0.17695, 1.57932 + ] + }, + { + "ct": 8800, + "ccm": + [ + 1.77695, 0.21166, -0.98861, + -0.51589, 1.93469, -0.41881, + -0.36973, -0.19069, 1.56043 + ] + } + + ] + } + }, + { + "rpi.sharpen": { } + } + ] +} diff --git a/src/ipa/rpi/vc4/data/mira220_mono.json b/src/ipa/rpi/vc4/data/mira220_mono.json new file mode 100644 index 000000000..1a285ca01 --- /dev/null +++ b/src/ipa/rpi/vc4/data/mira220_mono.json @@ -0,0 +1,344 @@ +{ + "version": 2.0, + "target": "bcm2835", + "algorithms": [ + { + "rpi.black_level": + { + "black_level": 2500 + } + }, + { + "rpi.dpc": { } + }, + { + "rpi.lux": + { + "reference_shutter_speed": 33316, + "reference_gain": 1.0, + "reference_aperture": 1.0, + "reference_lux": 530, + "reference_Y": 9873 + } + }, + { + "rpi.noise": + { + "reference_constant": 0, + "reference_slope": 1.449 + } + }, + { + "rpi.geq": + { + "offset": 271, + "slope": 0.00179 + } + }, + { + "rpi.sdn": { } + }, + { + "rpi.awb": + { + "priors": [ + { + "lux": 0, + "prior": + [ + 2000, 1.0, + 3000, 0.0, + 13000, 0.0 + ] + }, + { + "lux": 800, + "prior": + [ + 2000, 0.0, + 6000, 2.0, + 13000, 2.0 + ] + }, + { + "lux": 1500, + "prior": + [ + 2000, 0.0, + 4000, 1.0, + 6000, 6.0, + 6500, 7.0, + 7000, 1.0, + 13000, 1.0 + ] + } + ], + "modes": + { + "auto": + { + "lo": 2500, + "hi": 8000 + }, + "incandescent": + { + "lo": 2500, + "hi": 3000 + }, + "tungsten": + { + "lo": 3000, + "hi": 3500 + }, + "fluorescent": + { + "lo": 4000, + "hi": 4700 + }, + "indoor": + { + "lo": 3000, + "hi": 5000 + }, + "daylight": + { + "lo": 5500, + "hi": 6500 + }, + "cloudy": + { + "lo": 7000, + "hi": 8600 + } + }, + "bayes": 1, + "ct_curve": + [ + 3200.0, 0.8663, 0.5414, + 5000.0, 0.7241, 0.6964, + 6420.0, 0.6597, 0.7718, + 7900.0, 0.6173, 0.8232, + 8800.0, 0.5982, 0.8468 + ], + "sensitivity_r": 1.0, + "sensitivity_b": 1.0, + "transverse_pos": 0.03, + "transverse_neg": 0.03 + } + }, + { + "rpi.agc": + { + "metering_modes": + { + "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 ] + }, + "matrix": + { + "weights": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ] + } + }, + "exposure_modes": + { + "normal": + { + "shutter": [ 100, 10000, 30000, 60000, 120000 ], + "gain": [ 1.0, 2.0, 4.0, 6.0, 6.0 ] + }, + "short": + { + "shutter": [ 100, 5000, 10000, 20000, 120000 ], + "gain": [ 1.0, 2.0, 4.0, 6.0, 6.0 ] + } + }, + "constraint_modes": + { + "normal": [ + { + "bound": "LOWER", + "q_lo": 0.98, + "q_hi": 1.0, + "y_target": + [ + 0, 0.5, + 1000, 0.5 + ] + } + ], + "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.165, + 10000, 0.17 + ] + } + }, + { + "rpi.alsc": + { + "omega": 1.3, + "n_iter": 100, + "luminance_strength": 0.5, + "calibrations_Cr": [ + { + "ct": 5440, + "table": + [ + 1.785, 1.781, 1.763, 1.751, 1.739, 1.737, 1.735, 1.735, 1.733, 1.734, 1.735, 1.739, 1.747, 1.758, 1.781, 1.784, + 1.781, 1.763, 1.751, 1.736, 1.725, 1.721, 1.717, 1.716, 1.717, 1.719, 1.719, 1.728, 1.735, 1.745, 1.763, 1.781, + 1.761, 1.748, 1.734, 1.723, 1.713, 1.707, 1.701, 1.699, 1.699, 1.703, 1.706, 1.711, 1.718, 1.729, 1.745, 1.758, + 1.748, 1.734, 1.722, 1.711, 1.702, 1.694, 1.689, 1.688, 1.688, 1.689, 1.694, 1.701, 1.709, 1.718, 1.729, 1.743, + 1.735, 1.723, 1.713, 1.702, 1.694, 1.688, 1.684, 1.681, 1.682, 1.686, 1.689, 1.694, 1.701, 1.709, 1.724, 1.739, + 1.735, 1.721, 1.711, 1.699, 1.691, 1.685, 1.681, 1.679, 1.679, 1.682, 1.686, 1.691, 1.699, 1.708, 1.721, 1.739, + 1.735, 1.721, 1.711, 1.699, 1.692, 1.685, 1.683, 1.679, 1.679, 1.681, 1.687, 1.691, 1.699, 1.709, 1.723, 1.741, + 1.738, 1.727, 1.716, 1.703, 1.696, 1.689, 1.685, 1.683, 1.683, 1.686, 1.689, 1.695, 1.702, 1.714, 1.726, 1.741, + 1.746, 1.734, 1.723, 1.712, 1.702, 1.696, 1.691, 1.688, 1.688, 1.689, 1.695, 1.702, 1.708, 1.719, 1.734, 1.745, + 1.758, 1.746, 1.731, 1.722, 1.712, 1.704, 1.699, 1.697, 1.697, 1.699, 1.702, 1.708, 1.718, 1.729, 1.744, 1.758, + 1.775, 1.759, 1.746, 1.732, 1.724, 1.717, 1.713, 1.709, 1.708, 1.709, 1.714, 1.721, 1.729, 1.743, 1.759, 1.775, + 1.777, 1.775, 1.758, 1.742, 1.735, 1.729, 1.727, 1.725, 1.724, 1.724, 1.726, 1.732, 1.741, 1.758, 1.775, 1.777 + ] + } + ], + "calibrations_Cb": [ + { + "ct": 5440, + "table": + [ + 1.547, 1.551, 1.558, 1.571, 1.579, 1.586, 1.587, 1.585, 1.587, 1.588, 1.588, 1.586, 1.578, 1.566, 1.558, 1.555, + 1.551, 1.554, 1.565, 1.582, 1.589, 1.597, 1.599, 1.596, 1.595, 1.596, 1.598, 1.597, 1.586, 1.576, 1.566, 1.558, + 1.561, 1.565, 1.577, 1.592, 1.602, 1.608, 1.612, 1.613, 1.613, 1.612, 1.613, 1.611, 1.601, 1.588, 1.575, 1.572, + 1.569, 1.575, 1.589, 1.605, 1.619, 1.623, 1.625, 1.626, 1.626, 1.626, 1.626, 1.623, 1.609, 1.595, 1.584, 1.584, + 1.581, 1.582, 1.596, 1.611, 1.623, 1.628, 1.629, 1.632, 1.633, 1.633, 1.633, 1.625, 1.617, 1.601, 1.589, 1.587, + 1.579, 1.584, 1.597, 1.614, 1.624, 1.631, 1.631, 1.632, 1.632, 1.633, 1.631, 1.629, 1.621, 1.605, 1.592, 1.587, + 1.577, 1.582, 1.599, 1.616, 1.626, 1.631, 1.631, 1.633, 1.633, 1.633, 1.633, 1.629, 1.622, 1.608, 1.592, 1.589, + 1.577, 1.581, 1.596, 1.614, 1.624, 1.627, 1.629, 1.631, 1.633, 1.634, 1.633, 1.628, 1.622, 1.605, 1.593, 1.591, + 1.575, 1.577, 1.592, 1.606, 1.619, 1.625, 1.627, 1.628, 1.629, 1.629, 1.631, 1.626, 1.613, 1.599, 1.591, 1.588, + 1.567, 1.569, 1.579, 1.597, 1.606, 1.615, 1.617, 1.616, 1.616, 1.621, 1.621, 1.617, 1.608, 1.592, 1.579, 1.573, + 1.549, 1.554, 1.563, 1.578, 1.589, 1.594, 1.597, 1.596, 1.597, 1.601, 1.599, 1.597, 1.584, 1.572, 1.562, 1.558, + 1.539, 1.548, 1.553, 1.566, 1.575, 1.578, 1.578, 1.579, 1.582, 1.584, 1.584, 1.583, 1.572, 1.562, 1.553, 1.546 + ] + } + ], + "luminance_lut": + [ + 1.317, 1.282, 1.245, 1.211, 1.191, 1.178, 1.164, 1.149, 1.149, 1.146, 1.171, 1.174, 1.201, 1.235, 1.269, 1.287, + 1.316, 1.259, 1.219, 1.191, 1.169, 1.147, 1.133, 1.121, 1.114, 1.123, 1.145, 1.157, 1.183, 1.212, 1.257, 1.285, + 1.285, 1.231, 1.196, 1.165, 1.139, 1.115, 1.103, 1.092, 1.085, 1.096, 1.115, 1.131, 1.161, 1.187, 1.227, 1.257, + 1.249, 1.213, 1.171, 1.141, 1.111, 1.091, 1.078, 1.068, 1.065, 1.069, 1.089, 1.128, 1.138, 1.174, 1.213, 1.244, + 1.234, 1.197, 1.151, 1.129, 1.096, 1.077, 1.066, 1.057, 1.049, 1.052, 1.074, 1.103, 1.123, 1.162, 1.199, 1.229, + 1.218, 1.179, 1.154, 1.116, 1.094, 1.071, 1.061, 1.054, 1.044, 1.049, 1.068, 1.085, 1.119, 1.145, 1.183, 1.218, + 1.222, 1.198, 1.151, 1.124, 1.099, 1.075, 1.058, 1.049, 1.048, 1.053, 1.064, 1.088, 1.109, 1.145, 1.176, 1.209, + 1.243, 1.203, 1.172, 1.139, 1.104, 1.094, 1.068, 1.056, 1.058, 1.062, 1.077, 1.088, 1.121, 1.155, 1.191, 1.227, + 1.264, 1.231, 1.185, 1.165, 1.131, 1.108, 1.091, 1.075, 1.075, 1.081, 1.096, 1.107, 1.135, 1.172, 1.209, 1.248, + 1.292, 1.251, 1.221, 1.184, 1.156, 1.143, 1.117, 1.104, 1.097, 1.107, 1.121, 1.138, 1.156, 1.197, 1.231, 1.275, + 1.336, 1.287, 1.251, 1.214, 1.186, 1.175, 1.151, 1.136, 1.133, 1.135, 1.148, 1.168, 1.184, 1.225, 1.265, 1.309, + 1.339, 1.323, 1.272, 1.239, 1.205, 1.184, 1.177, 1.166, 1.163, 1.172, 1.187, 1.199, 1.223, 1.246, 1.294, 1.321 + ], + "sigma": 0.005, + "sigma_Cb": 0.005 + } + }, + { + "rpi.contrast": + { + "ce_enable": 1, + "gamma_curve": + [ + 0,0, + 1024,5432.589474, + 2048,10065.38105, + 3072,13318.46737, + 4096,16504.72421, + 5120,19457.07789, + 6144,22409.43158, + 7168,24999.61263, + 8192,27749.32211, + 9216,30118.53474, + 10240,32374.56842, + 11264,34498.02105, + 12288,36621.47368, + 13312,38604.8, + 14336,40528.84211, + 15360,42218.98105, + 16384,43807.79789, + 18432,46757.99579, + 20480,49312.60632, + 22528,51472.70737, + 24576,53486.21474, + 26624,55245.33895, + 28672,56802.89684, + 30720,57986.42526, + 32768,59150.55158, + 36864,61452.93474, + 40960,63224.99368, + 45056,64624.10105, + 49152,65535, + 53248,65535, + 57344,65535, + 61440,65535, + 65535,65535 + ] + } + }, + { + "rpi.ccm": + { + "saturation": [0,0,100,0.6,1000,1,10000,1], + "ccms": [ + { + "ct": 2500, + "ccm": + [ + 0.33334, 0.33332, 0.33337, + 0.33337, 0.33331, 0.33333, + 0.33334, 0.33333, 0.33335 + ] + }, + + { + "ct": 7400, + "ccm": + [ + 0.33334, 0.33332, 0.33337, + 0.33337, 0.33331, 0.33333, + 0.33334, 0.33333, 0.33335 + ] + } + + ] + } + }, + { + "rpi.sharpen": { } + } + ] +} diff --git a/src/libcamera/sensor/camera_sensor_properties.cpp b/src/libcamera/sensor/camera_sensor_properties.cpp index 263ccb03d..f912e5469 100644 --- a/src/libcamera/sensor/camera_sensor_properties.cpp +++ b/src/libcamera/sensor/camera_sensor_properties.cpp @@ -162,6 +162,17 @@ const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen }, .sensorDelays = { }, } }, + { "mira220", { + .unitCellSize = { 1600, 1400 }, + .testPatternModes = { + { controls::draft::TestPatternModeOff, 0 }, + { controls::draft::TestPatternModeColorBars, 1 }, + { controls::draft::TestPatternModeSolidColor, 2 }, + { controls::draft::TestPatternModeColorBarsFadeToGray, 3 }, + { controls::draft::TestPatternModePn9, 4 }, + }, + } }, + { "imx219", { .unitCellSize = { 1120, 1120 }, .testPatternModes = { From 3ae5613267f32ef9ad906882579a95f211a28adc Mon Sep 17 00:00:00 2001 From: philippe baetens Date: Wed, 12 Mar 2025 17:09:03 +0100 Subject: [PATCH 2/3] add delay parameter --- .../sensor/camera_sensor_properties.cpp | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/libcamera/sensor/camera_sensor_properties.cpp b/src/libcamera/sensor/camera_sensor_properties.cpp index f912e5469..5f82b9b89 100644 --- a/src/libcamera/sensor/camera_sensor_properties.cpp +++ b/src/libcamera/sensor/camera_sensor_properties.cpp @@ -163,16 +163,21 @@ const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen .sensorDelays = { }, } }, { "mira220", { - .unitCellSize = { 1600, 1400 }, - .testPatternModes = { - { controls::draft::TestPatternModeOff, 0 }, - { controls::draft::TestPatternModeColorBars, 1 }, - { controls::draft::TestPatternModeSolidColor, 2 }, - { controls::draft::TestPatternModeColorBarsFadeToGray, 3 }, - { controls::draft::TestPatternModePn9, 4 }, - }, - } }, - + .unitCellSize = { 1600, 1400 }, + .testPatternModes = { + { controls::draft::TestPatternModeOff, 0 }, + { controls::draft::TestPatternModeColorBars, 1 }, + { controls::draft::TestPatternModeSolidColor, 2 }, + { controls::draft::TestPatternModeColorBarsFadeToGray, 3 }, + { controls::draft::TestPatternModePn9, 4 }, + }, + .sensorDelays = { + .exposureDelay = 1, + .gainDelay = 1, + .vblankDelay = 2, + .hblankDelay = 2 + }, + } }, { "imx219", { .unitCellSize = { 1120, 1120 }, .testPatternModes = { From b7af1b4e37780200b6fa2765f60fdd6c16df7471 Mon Sep 17 00:00:00 2001 From: philippe baetens Date: Fri, 14 Mar 2025 14:53:14 +0100 Subject: [PATCH 3/3] make mira220 work on both vc4 and pisp. libcamera-dev must be removed --- src/ipa/libipa/camera_sensor_helper.cpp | 6 + src/ipa/rpi/cam_helper/cam_helper_mira220.cpp | 208 +++++------------- 2 files changed, 63 insertions(+), 151 deletions(-) diff --git a/src/ipa/libipa/camera_sensor_helper.cpp b/src/ipa/libipa/camera_sensor_helper.cpp index 7c66cd57d..d47554ce7 100644 --- a/src/ipa/libipa/camera_sensor_helper.cpp +++ b/src/ipa/libipa/camera_sensor_helper.cpp @@ -567,6 +567,12 @@ class CameraSensorHelperImx296 : public CameraSensorHelper }; REGISTER_CAMERA_SENSOR_HELPER("imx296", CameraSensorHelperImx296) +class CameraSensorHelperMira220 : public CameraSensorHelper +{ +}; +REGISTER_CAMERA_SENSOR_HELPER("mira220", CameraSensorHelperMira220) + + class CameraSensorHelperImx327 : public CameraSensorHelperImx290 { }; diff --git a/src/ipa/rpi/cam_helper/cam_helper_mira220.cpp b/src/ipa/rpi/cam_helper/cam_helper_mira220.cpp index 0ff4b6fe1..5a9640be7 100644 --- a/src/ipa/rpi/cam_helper/cam_helper_mira220.cpp +++ b/src/ipa/rpi/cam_helper/cam_helper_mira220.cpp @@ -1,156 +1,62 @@ /* SPDX-License-Identifier: BSD-2-Clause */ /* - * Copyright (C) 2019, Raspberry Pi (Trading) Limited + * Copyright (C) 2024, Raspberry Pi Ltd * - * cam_helper_mira220.cpp - camera helper for mira220 sensor + * cam_helper_Mira220.cpp - camera information for Mira220 sensor */ -#include -#include -#include -#include - -/* - * We have observed that the mira220 embedded data stream randomly returns junk - * register values. Do not rely on embedded data until this has been resolved. - */ -#define ENABLE_EMBEDDED_DATA 0 - -#include "cam_helper.h" -#if ENABLE_EMBEDDED_DATA -#include "md_parser.h" -#endif - -using namespace RPiController; -using namespace libcamera; -using libcamera::utils::Duration; -using namespace std::literals::chrono_literals; -namespace libcamera { -LOG_DECLARE_CATEGORY(IPARPI) -} -/* - * We care about one gain register and a pair of exposure registers. Their I2C - * addresses from the mira220 datasheet: - */ -constexpr uint32_t gainReg = 0x400A; -constexpr uint32_t expHiReg = 0x1013; -constexpr uint32_t expLoReg = 0x1012; -constexpr uint32_t frameLengthHiReg = 0x1013; -constexpr uint32_t frameLengthLoReg = 0x1012; -constexpr std::initializer_list registerList [[maybe_unused]] - = { expHiReg, expLoReg, gainReg, frameLengthHiReg, frameLengthLoReg }; - -class CamHelperMira220 : public CamHelper -{ -public: - CamHelperMira220(); - uint32_t gainCode(double gain) const override; - double gain(uint32_t gain_code) const override; - // uint32_t exposureLines(const Duration exposure, const Duration lineLength) const override; - // Duration exposure(uint32_t exposureLines, const Duration lineLength) const override; - // unsigned int mistrustFramesModeSwitch() const override; - // bool sensorEmbeddedDataPresent() const override; - -private: - static constexpr uint32_t minExposureLines = 1; - /* - * Smallest difference between the frame length and integration time, - * in units of lines. - */ - static constexpr int frameIntegrationDiff = 4; - /* - * ROW_TIME_US = ROW_LENGTH * CLK_IN_PERIOD_NS / 1000 - * MIRA220_ROW_TIME_1600x1400_1000GBS_US=(300*26.04/1000)=7.8us - * MIRA220_ROW_TIME_640x480_1000GBS_US=(450*26.04/1000)=11.7us - */ - // static constexpr Duration timePerLine_1600x1400_1000gbs = (7.8 / 1.0e6) * 1.0s; - // static constexpr Duration timePerLine_640x480_1000gbs = (11.7 / 1.0e6) * 1.0s; - // void populateMetadata(const MdParser::RegisterMap ®isters, - // Metadata &metadata) const override; -}; - -CamHelperMira220::CamHelperMira220() -#if ENABLE_EMBEDDED_DATA - : CamHelper(std::make_unique(registerList), frameIntegrationDiff) -#else - : CamHelper({}, frameIntegrationDiff) -#endif -{ -} - -uint32_t CamHelperMira220::gainCode(double gain) const -{ - return (uint32_t)(gain); -} - -double CamHelperMira220::gain(uint32_t gainCode) const -{ - return (double)(gainCode); -} - -// uint32_t CamHelperMira220::exposureLines(const Duration exposure, -// [[maybe_unused]] const Duration lineLength) const -// { -// Duration timePerLine; -// if (mode_.width == 640) { -// timePerLine = timePerLine_640x480_1000gbs; -// } else { -// timePerLine = timePerLine_1600x1400_1000gbs; -// } -// return std::max(minExposureLines, exposure / timePerLine); - -// } - - -// Duration CamHelperMira220::exposure(uint32_t exposureLines, -// [[maybe_unused]] const Duration lineLength) const -// { -// Duration timePerLine; -// LOG(IPARPI, Warning) << "Philippe cam_helper220.cpp exposurefun " ; - -// if (mode_.width == 640) { -// timePerLine = timePerLine_640x480_1000gbs; -// } else { -// timePerLine = timePerLine_1600x1400_1000gbs; -// } -// return std::max(minExposureLines, exposureLines) * timePerLine; -// } - - -// unsigned int CamHelperMira220::mistrustFramesModeSwitch() const -// { -// /* -// * For reasons unknown, we do occasionally get a bogus metadata frame -// * at a mode switch (though not at start-up). Possibly warrants some -// * investigation, though not a big deal. -// */ -// return 1; -// } - -// bool CamHelperMira220::sensorEmbeddedDataPresent() const -// { -// return ENABLE_EMBEDDED_DATA; -// } - -// void CamHelperMira220::populateMetadata(const MdParser::RegisterMap ®isters, -// Metadata &metadata) const -// { -// DeviceStatus deviceStatus; - -// deviceStatus.shutterSpeed = exposure(registers.at(expHiReg) * 256 + registers.at(expLoReg), deviceStatus.lineLength); -// deviceStatus.analogueGain = gain(registers.at(gainReg)); -// deviceStatus.frameLength = registers.at(frameLengthHiReg) * 256 + registers.at(frameLengthLoReg); -// LOG(IPARPI, Warning) << "Philippe cam_helper220.cpp shutterspeed " << deviceStatus.shutterSpeed; -// LOG(IPARPI, Warning) << "Philippe cam_helper220.cpp anag " << deviceStatus.analogueGain; -// LOG(IPARPI, Warning) << "Philippe cam_helper220.cpp framelen " << deviceStatus.frameLength; - -// metadata.set("device.status", deviceStatus); -// } - -static CamHelper *create() -{ - return new CamHelperMira220(); -} - -static RegisterCamHelper reg("mira220", &create); - + #include + + #include "cam_helper.h" + + using namespace RPiController; + + class CamHelperMira220 : public CamHelper + { + public: + CamHelperMira220(); + uint32_t gainCode(double gain) const override; + double gain(uint32_t gainCode) const override; + unsigned int hideFramesModeSwitch() const override; + + private: + /* + * Smallest difference between the frame length and integration time, + * in units of lines. + */ + static constexpr int frameIntegrationDiff = 4; + }; + + /* + * Mira220 doesn't output metadata, so we have to use the delayed controls which + * works by counting frames. + */ + + CamHelperMira220::CamHelperMira220() + : CamHelper({}, frameIntegrationDiff) + { + } + + uint32_t CamHelperMira220::gainCode(double gain) const + { + return static_cast(2048.0 - 2048.0 / gain); + } + + double CamHelperMira220::gain(uint32_t gainCode) const + { + return static_cast(2048.0 / (2048 - gainCode)); + } + + unsigned int CamHelperMira220::hideFramesModeSwitch() const + { + /* After a mode switch, we seem to get 1 bad frame. */ + return 1; + } + + static CamHelper *create() + { + return new CamHelperMira220(); + } + + static RegisterCamHelper reg("mira220", &create); + \ No newline at end of file