mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-13 07:19:45 +03:00
ipa: rpi: Add HDR support
Add support for the following HDR modes in the Raspberry Pi IPA: - Night mode - Single exposure mode - Multi-exposure (merged and unmerged) The algorithm is updated to expect the HDR short channel to meter explicitly for highlights. This means that it will not in general under-expose the short channel more than is actually necessary. When images don't have much saturation, it's good to detect this so that some of the boost we want to apply to the dark areas can be implemented as regular gain. This means we can then adjust the tone curve less, leading to less flat looking images. The impact on the HDR algorithm is then that this determines how we build tonemaps dynamically. The highlights are more-or-less correct now, so we have to build a power-type curve that gives us the appropriately configured targets in the lower part of the histogram. We allow the tuning file to supply the maximum spatial gain value, rather than the whole curve (though it can supply this if it wants). Some parameter defaults are tweaked to be generally better across the range of our cameras. Signed-off-by: David Plowman <david.plowman@raspberrypi.com> Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Acked-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
84ed4456fc
commit
706578ecc8
24 changed files with 3040 additions and 2583 deletions
|
@ -25,7 +25,6 @@
|
|||
#include "controller/contrast_algorithm.h"
|
||||
#include "controller/denoise_algorithm.h"
|
||||
#include "controller/hdr_algorithm.h"
|
||||
#include "controller/hdr_status.h"
|
||||
#include "controller/lux_status.h"
|
||||
#include "controller/sharpen_algorithm.h"
|
||||
#include "controller/statistics.h"
|
||||
|
@ -104,9 +103,8 @@ LOG_DEFINE_CATEGORY(IPARPI)
|
|||
namespace ipa::RPi {
|
||||
|
||||
IpaBase::IpaBase()
|
||||
: controller_(), frameLengths_(FrameLengthsQueueSize, 0s), statsMetadataOutput_(false),
|
||||
frameCount_(0), mistrustCount_(0), lastRunTimestamp_(0), firstStart_(true),
|
||||
flickerState_({ 0, 0s })
|
||||
: controller_(), frameLengths_(FrameLengthsQueueSize, 0s), stitchSwapBuffers_(false), frameCount_(0),
|
||||
mistrustCount_(0), lastRunTimestamp_(0), firstStart_(true), flickerState_({ 0, 0s })
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -299,6 +297,8 @@ void IpaBase::start(const ControlList &controls, StartResult *result)
|
|||
result->controls = std::move(ctrls);
|
||||
setCameraTimeoutValue();
|
||||
}
|
||||
/* Make a note of this as it tells us the HDR status of the first few frames. */
|
||||
hdrStatus_ = agcStatus.hdr;
|
||||
|
||||
/*
|
||||
* Initialise frame counts, and decide how many frames must be hidden or
|
||||
|
@ -402,11 +402,17 @@ void IpaBase::prepareIsp(const PrepareParams ¶ms)
|
|||
* sensor exposure/gain changes. So fetch it from the metadata list
|
||||
* indexed by the IPA cookie returned, and put it in the current frame
|
||||
* metadata.
|
||||
*
|
||||
* Note if the HDR mode has changed, as things like tonemaps may need updating.
|
||||
*/
|
||||
AgcStatus agcStatus;
|
||||
bool hdrChange = false;
|
||||
RPiController::Metadata &delayedMetadata = rpiMetadata_[params.delayContext];
|
||||
if (!delayedMetadata.get<AgcStatus>("agc.status", agcStatus))
|
||||
if (!delayedMetadata.get<AgcStatus>("agc.status", agcStatus)) {
|
||||
rpiMetadata.set("agc.delayed_status", agcStatus);
|
||||
hdrChange = agcStatus.hdr.mode != hdrStatus_.mode;
|
||||
hdrStatus_ = agcStatus.hdr;
|
||||
}
|
||||
|
||||
/*
|
||||
* This may overwrite the DeviceStatus using values from the sensor
|
||||
|
@ -417,7 +423,7 @@ void IpaBase::prepareIsp(const PrepareParams ¶ms)
|
|||
/* Allow a 10% margin on the comparison below. */
|
||||
Duration delta = (frameTimestamp - lastRunTimestamp_) * 1.0ns;
|
||||
if (lastRunTimestamp_ && frameCount_ > dropFrameCount_ &&
|
||||
delta < controllerMinFrameDuration * 0.9) {
|
||||
delta < controllerMinFrameDuration * 0.9 && !hdrChange) {
|
||||
/*
|
||||
* Ensure we merge the previous frame's metadata with the current
|
||||
* frame. This will not overwrite exposure/gain values for the
|
||||
|
@ -454,7 +460,7 @@ void IpaBase::prepareIsp(const PrepareParams ¶ms)
|
|||
reportMetadata(ipaContext);
|
||||
|
||||
/* Ready to push the input buffer into the ISP. */
|
||||
prepareIspComplete.emit(params.buffers, false);
|
||||
prepareIspComplete.emit(params.buffers, stitchSwapBuffers_);
|
||||
}
|
||||
|
||||
void IpaBase::processStats(const ProcessParams ¶ms)
|
||||
|
@ -701,14 +707,18 @@ static const std::map<int32_t, RPiController::AfAlgorithm::AfPause> AfPauseTable
|
|||
|
||||
static const std::map<int32_t, std::string> HdrModeTable = {
|
||||
{ controls::HdrModeOff, "Off" },
|
||||
{ controls::HdrModeMultiExposureUnmerged, "MultiExposureUnmerged" },
|
||||
{ controls::HdrModeMultiExposure, "MultiExposure" },
|
||||
{ controls::HdrModeSingleExposure, "SingleExposure" },
|
||||
{ controls::HdrModeNight, "Night" },
|
||||
};
|
||||
|
||||
void IpaBase::applyControls(const ControlList &controls)
|
||||
{
|
||||
using RPiController::AgcAlgorithm;
|
||||
using RPiController::AfAlgorithm;
|
||||
using RPiController::ContrastAlgorithm;
|
||||
using RPiController::DenoiseAlgorithm;
|
||||
using RPiController::HdrAlgorithm;
|
||||
|
||||
/* Clear the return metadata buffer. */
|
||||
|
@ -1200,9 +1210,32 @@ void IpaBase::applyControls(const ControlList &controls)
|
|||
break;
|
||||
}
|
||||
|
||||
if (hdr->setMode(mode->second) == 0)
|
||||
if (hdr->setMode(mode->second) == 0) {
|
||||
agc->setActiveChannels(hdr->getChannels());
|
||||
|
||||
/* We also disable adpative contrast enhancement if HDR is running. */
|
||||
ContrastAlgorithm *contrast =
|
||||
dynamic_cast<ContrastAlgorithm *>(controller_.getAlgorithm("contrast"));
|
||||
if (contrast) {
|
||||
if (mode->second == "Off")
|
||||
contrast->restoreCe();
|
||||
else
|
||||
contrast->enableCe(false);
|
||||
}
|
||||
|
||||
DenoiseAlgorithm *denoise =
|
||||
dynamic_cast<DenoiseAlgorithm *>(controller_.getAlgorithm("denoise"));
|
||||
if (denoise) {
|
||||
/* \todo - make the HDR mode say what denoise it wants? */
|
||||
if (mode->second == "Night")
|
||||
denoise->setConfig("night");
|
||||
else if (mode->second == "SingleExposure")
|
||||
denoise->setConfig("hdr");
|
||||
/* MultiExposure doesn't need extra extra denoise. */
|
||||
else
|
||||
denoise->setConfig("normal");
|
||||
}
|
||||
} else
|
||||
LOG(IPARPI, Warning)
|
||||
<< "HDR mode " << mode->second << " not supported";
|
||||
|
||||
|
@ -1360,12 +1393,31 @@ void IpaBase::reportMetadata(unsigned int ipaContext)
|
|||
libcameraMetadata_.set(controls::AfPauseState, p);
|
||||
}
|
||||
|
||||
const HdrStatus *hdrStatus = rpiMetadata.getLocked<HdrStatus>("hdr.status");
|
||||
if (hdrStatus) {
|
||||
if (hdrStatus->channel == "short")
|
||||
/*
|
||||
* THe HDR algorithm sets the HDR channel into the agc.status at the time that those
|
||||
* AGC parameters were calculated several frames ago, so it comes back to us now in
|
||||
* the delayed_status. If this frame is too soon after a mode switch for the
|
||||
* delayed_status to be available, we use the HDR status that came out of the
|
||||
* switchMode call.
|
||||
*/
|
||||
const AgcStatus *agcStatus = rpiMetadata.getLocked<AgcStatus>("agc.delayed_status");
|
||||
const HdrStatus &hdrStatus = agcStatus ? agcStatus->hdr : hdrStatus_;
|
||||
if (!hdrStatus.mode.empty() && hdrStatus.mode != "Off") {
|
||||
int32_t hdrMode = controls::HdrModeOff;
|
||||
for (auto const &[mode, name] : HdrModeTable) {
|
||||
if (hdrStatus.mode == name) {
|
||||
hdrMode = mode;
|
||||
break;
|
||||
}
|
||||
}
|
||||
libcameraMetadata_.set(controls::HdrMode, hdrMode);
|
||||
|
||||
if (hdrStatus.channel == "short")
|
||||
libcameraMetadata_.set(controls::HdrChannel, controls::HdrChannelShort);
|
||||
else if (hdrStatus->channel == "long")
|
||||
else if (hdrStatus.channel == "long")
|
||||
libcameraMetadata_.set(controls::HdrChannel, controls::HdrChannelLong);
|
||||
else if (hdrStatus.channel == "medium")
|
||||
libcameraMetadata_.set(controls::HdrChannel, controls::HdrChannelMedium);
|
||||
else
|
||||
libcameraMetadata_.set(controls::HdrChannel, controls::HdrChannelNone);
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include "controller/agc_status.h"
|
||||
#include "controller/camera_mode.h"
|
||||
#include "controller/controller.h"
|
||||
#include "controller/hdr_status.h"
|
||||
#include "controller/metadata.h"
|
||||
|
||||
namespace libcamera {
|
||||
|
@ -64,6 +65,12 @@ protected:
|
|||
ControlList libcameraMetadata_;
|
||||
bool statsMetadataOutput_;
|
||||
|
||||
/* Remember the HDR status after a mode switch. */
|
||||
HdrStatus hdrStatus_;
|
||||
|
||||
/* Whether the stitch block (if available) needs to swap buffers. */
|
||||
bool stitchSwapBuffers_;
|
||||
|
||||
private:
|
||||
/* Number of metadata objects available in the context list. */
|
||||
static constexpr unsigned int numMetadataContexts = 16;
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
|
||||
#include "hdr.h"
|
||||
|
||||
#include <cmath>
|
||||
|
||||
#include <libcamera/base/log.h>
|
||||
|
||||
#include "../agc_status.h"
|
||||
|
@ -39,8 +41,16 @@ void HdrConfig::read(const libcamera::YamlObject ¶ms, const std::string &mod
|
|||
channelMap[v.get<unsigned int>().value()] = k;
|
||||
|
||||
/* Lens shading related parameters. */
|
||||
if (params.contains("spatial_gain")) {
|
||||
spatialGain.read(params["spatial_gain"]);
|
||||
if (params.contains("spatial_gain_curve")) {
|
||||
spatialGainCurve.read(params["spatial_gain_curve"]);
|
||||
} else if (params.contains("spatial_gain")) {
|
||||
double spatialGain = params["spatial_gain"].get<double>(2.0);
|
||||
spatialGainCurve.append(0.0, spatialGain);
|
||||
spatialGainCurve.append(0.01, spatialGain);
|
||||
spatialGainCurve.append(0.06, 1.0); /* maybe make this programmable? */
|
||||
spatialGainCurve.append(1.0, 1.0);
|
||||
}
|
||||
|
||||
diffusion = params["diffusion"].get<unsigned int>(3);
|
||||
/* Clip to an arbitrary limit just to stop typos from killing the system! */
|
||||
const unsigned int MAX_DIFFUSION = 15;
|
||||
|
@ -48,16 +58,35 @@ void HdrConfig::read(const libcamera::YamlObject ¶ms, const std::string &mod
|
|||
diffusion = MAX_DIFFUSION;
|
||||
LOG(RPiHdr, Warning) << "Diffusion value clipped to " << MAX_DIFFUSION;
|
||||
}
|
||||
}
|
||||
|
||||
/* Read any tonemap parameters. */
|
||||
tonemapEnable = params["tonemap_enable"].get<int>(0);
|
||||
detailConstant = params["detail_constant"].get<uint16_t>(50);
|
||||
detailSlope = params["detail_slope"].get<double>(8.0);
|
||||
detailConstant = params["detail_constant"].get<uint16_t>(0);
|
||||
detailSlope = params["detail_slope"].get<double>(0.0);
|
||||
iirStrength = params["iir_strength"].get<double>(8.0);
|
||||
strength = params["strength"].get<double>(1.5);
|
||||
if (tonemapEnable)
|
||||
tonemap.read(params["tonemap"]);
|
||||
speed = params["speed"].get<double>(1.0);
|
||||
if (params.contains("hi_quantile_targets")) {
|
||||
hiQuantileTargets = params["hi_quantile_targets"].getList<double>().value();
|
||||
if (hiQuantileTargets.empty() || hiQuantileTargets.size() % 2)
|
||||
LOG(RPiHdr, Fatal) << "hi_quantile_targets much be even and non-empty";
|
||||
} else
|
||||
hiQuantileTargets = { 0.95, 0.65, 0.5, 0.28, 0.3, 0.25 };
|
||||
hiQuantileMaxGain = params["hi_quantile_max_gain"].get<double>(1.6);
|
||||
if (params.contains("quantile_targets")) {
|
||||
quantileTargets = params["quantile_targets"].getList<double>().value();
|
||||
if (quantileTargets.empty() || quantileTargets.size() % 2)
|
||||
LOG(RPiHdr, Fatal) << "quantile_targets much be even and non-empty";
|
||||
} else
|
||||
quantileTargets = { 0.2, 0.03, 1.0, 0.15 };
|
||||
powerMin = params["power_min"].get<double>(0.65);
|
||||
powerMax = params["power_max"].get<double>(1.0);
|
||||
if (params.contains("contrast_adjustments")) {
|
||||
contrastAdjustments = params["contrast_adjustments"].getList<double>().value();
|
||||
} else
|
||||
contrastAdjustments = { 0.5, 0.75 };
|
||||
|
||||
/* Read any stitch parameters. */
|
||||
stitchEnable = params["stitch_enable"].get<int>(0);
|
||||
|
@ -159,7 +188,7 @@ void Hdr::prepare(Metadata *imageMetadata)
|
|||
}
|
||||
|
||||
HdrConfig &config = it->second;
|
||||
if (config.spatialGain.empty())
|
||||
if (config.spatialGainCurve.empty())
|
||||
return;
|
||||
|
||||
AlscStatus alscStatus{}; /* some compilers seem to require the braces */
|
||||
|
@ -205,10 +234,61 @@ bool Hdr::updateTonemap([[maybe_unused]] StatisticsPtr &stats, HdrConfig &config
|
|||
return true;
|
||||
|
||||
/*
|
||||
* If we wanted to build or adjust tonemaps dynamically, this would be the place
|
||||
* to do it. But for now we seem to be getting by without.
|
||||
* Create a tonemap dynamically. We have three ingredients.
|
||||
*
|
||||
* 1. We have a list of "hi quantiles" and "targets". We use these to judge if
|
||||
* the image does seem to be reasonably saturated. If it isn't, we calculate
|
||||
* a gain that we will feed as a linear factor into the tonemap generation.
|
||||
* This prevents unsaturated images from beoming quite so "flat".
|
||||
*
|
||||
* 2. We have a list of quantile/target pairs for the bottom of the histogram.
|
||||
* We use these to calculate how much gain we must apply to the bottom of the
|
||||
* tonemap. We apply this gain as a power curve so as not to blow out the top
|
||||
* end.
|
||||
*
|
||||
* 3. Finally, when we generate the tonemap, we have some contrast adjustments
|
||||
* for the bottom because we know that power curves can start quite steeply and
|
||||
* cause a washed-out look.
|
||||
*/
|
||||
|
||||
/* Compute the linear gain from the headroom for saturation at the top. */
|
||||
double gain = 10; /* arbitrary, but hiQuantileMaxGain will clamp it later */
|
||||
for (unsigned int i = 0; i < config.hiQuantileTargets.size(); i += 2) {
|
||||
double quantile = config.hiQuantileTargets[i];
|
||||
double target = config.hiQuantileTargets[i + 1];
|
||||
double value = stats->yHist.interQuantileMean(quantile, 1.0) / 1024.0;
|
||||
double newGain = target / (value + 0.01);
|
||||
gain = std::min(gain, newGain);
|
||||
}
|
||||
gain = std::clamp(gain, 1.0, config.hiQuantileMaxGain);
|
||||
|
||||
/* Compute the power curve from the amount of gain needed at the bottom. */
|
||||
double min_power = 2; /* arbitrary, but config.powerMax will clamp it later */
|
||||
for (unsigned int i = 0; i < config.quantileTargets.size(); i += 2) {
|
||||
double quantile = config.quantileTargets[i];
|
||||
double target = config.quantileTargets[i + 1];
|
||||
double value = stats->yHist.interQuantileMean(0, quantile) / 1024.0;
|
||||
value = std::min(value * gain, 1.0);
|
||||
double power = log(target + 1e-6) / log(value + 1e-6);
|
||||
min_power = std::min(min_power, power);
|
||||
}
|
||||
double power = std::clamp(min_power, config.powerMin, config.powerMax);
|
||||
|
||||
/* Generate the tonemap, including the contrast adjustment factors. */
|
||||
Pwl tonemap;
|
||||
tonemap.append(0, 0);
|
||||
for (unsigned int i = 0; i <= 6; i++) {
|
||||
double x = 1 << (i + 9); /* x loops from 512 to 32768 inclusive */
|
||||
double y = pow(std::min(x * gain, 65535.0) / 65536.0, power) * 65536;
|
||||
if (i < config.contrastAdjustments.size())
|
||||
y *= config.contrastAdjustments[i];
|
||||
if (!tonemap_.empty())
|
||||
y = y * config.speed + tonemap_.eval(x) * (1 - config.speed);
|
||||
tonemap.append(x, y);
|
||||
}
|
||||
tonemap.append(65535, 65535);
|
||||
tonemap_ = tonemap;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -255,7 +335,7 @@ static void averageGains(std::vector<double> &src, std::vector<double> &dst, con
|
|||
|
||||
void Hdr::updateGains(StatisticsPtr &stats, HdrConfig &config)
|
||||
{
|
||||
if (config.spatialGain.empty())
|
||||
if (config.spatialGainCurve.empty())
|
||||
return;
|
||||
|
||||
/* When alternating exposures, only compute these gains for the short frame. */
|
||||
|
@ -270,7 +350,7 @@ void Hdr::updateGains(StatisticsPtr &stats, HdrConfig &config)
|
|||
double g = region.val.gSum / counted;
|
||||
double b = region.val.bSum / counted;
|
||||
double brightness = std::max({ r, g, b }) / 65535;
|
||||
gains_[0][i] = config.spatialGain.eval(brightness);
|
||||
gains_[0][i] = config.spatialGainCurve.eval(brightness);
|
||||
}
|
||||
|
||||
/* Ping-pong between the two gains_ buffers. */
|
||||
|
|
|
@ -26,7 +26,7 @@ struct HdrConfig {
|
|||
std::map<unsigned int, std::string> channelMap;
|
||||
|
||||
/* Lens shading related parameters. */
|
||||
Pwl spatialGain; /* Brightness to gain curve for different image regions. */
|
||||
Pwl spatialGainCurve; /* Brightness to gain curve for different image regions. */
|
||||
unsigned int diffusion; /* How much to diffuse the gain spatially. */
|
||||
|
||||
/* Tonemap related parameters. */
|
||||
|
@ -36,6 +36,14 @@ struct HdrConfig {
|
|||
double iirStrength;
|
||||
double strength;
|
||||
Pwl tonemap;
|
||||
/* These relate to adaptive tonemap calculation. */
|
||||
double speed;
|
||||
std::vector<double> hiQuantileTargets; /* quantiles to check for unsaturated images */
|
||||
double hiQuantileMaxGain; /* the max gain we'll apply when unsaturated */
|
||||
std::vector<double> quantileTargets; /* target values for histogram quantiles */
|
||||
double powerMin; /* minimum tonemap power */
|
||||
double powerMax; /* maximum tonemap power */
|
||||
std::vector<double> contrastAdjustments; /* any contrast adjustment factors */
|
||||
|
||||
/* Stitch related parameters. */
|
||||
bool stitchEnable;
|
||||
|
|
|
@ -131,22 +131,30 @@
|
|||
{
|
||||
"rpi.agc":
|
||||
{
|
||||
"channels":
|
||||
[
|
||||
"channels": [
|
||||
{
|
||||
"metering_modes":
|
||||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -229,15 +237,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -320,15 +337,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -654,15 +680,14 @@
|
|||
{
|
||||
"rpi.hdr":
|
||||
{
|
||||
"MultiExposure":
|
||||
"MultiExposureUnmerged":
|
||||
{
|
||||
"cadence": [ 1, 2 ],
|
||||
"channel_map": { "short": 1, "long": 2 }
|
||||
},
|
||||
"SingleExposure":
|
||||
"channel_map":
|
||||
{
|
||||
"cadence": [ 1 ],
|
||||
"channel_map": { "short": 1 }
|
||||
"short": 1,
|
||||
"long": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -47,22 +47,30 @@
|
|||
{
|
||||
"rpi.agc":
|
||||
{
|
||||
"channels":
|
||||
[
|
||||
"channels": [
|
||||
{
|
||||
"metering_modes":
|
||||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -145,15 +153,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -236,15 +253,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -588,15 +614,14 @@
|
|||
{
|
||||
"rpi.hdr":
|
||||
{
|
||||
"MultiExposure":
|
||||
"MultiExposureUnmerged":
|
||||
{
|
||||
"cadence": [ 1, 2 ],
|
||||
"channel_map": { "short": 1, "long": 2 }
|
||||
},
|
||||
"SingleExposure":
|
||||
"channel_map":
|
||||
{
|
||||
"cadence": [ 1 ],
|
||||
"channel_map": { "short": 1 }
|
||||
"short": 1,
|
||||
"long": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -52,15 +52,24 @@
|
|||
{
|
||||
"matrix":
|
||||
{
|
||||
"weights": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
|
|
@ -135,15 +135,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
|
|
@ -38,15 +38,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
|
|
@ -133,15 +133,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
|
|
@ -115,16 +115,16 @@
|
|||
"ct_curve":
|
||||
[
|
||||
2360.0, 0.6009, 0.3093,
|
||||
2848.0, 0.5071, 0.4000,
|
||||
2848.0, 0.5071, 0.4,
|
||||
2903.0, 0.4905, 0.4392,
|
||||
3628.0, 0.4261, 0.5564,
|
||||
3643.0, 0.4228, 0.5623,
|
||||
4660.0, 0.3529, 0.6800,
|
||||
5579.0, 0.3227, 0.7000,
|
||||
6125.0, 0.3129, 0.7100,
|
||||
6671.0, 0.3065, 0.7200,
|
||||
7217.0, 0.3014, 0.7300,
|
||||
7763.0, 0.2950, 0.7400,
|
||||
4660.0, 0.3529, 0.68,
|
||||
5579.0, 0.3227, 0.7,
|
||||
6125.0, 0.3129, 0.71,
|
||||
6671.0, 0.3065, 0.72,
|
||||
7217.0, 0.3014, 0.73,
|
||||
7763.0, 0.295, 0.74,
|
||||
9505.0, 0.2524, 0.7856
|
||||
],
|
||||
"sensitivity_r": 1.05,
|
||||
|
@ -136,22 +136,30 @@
|
|||
{
|
||||
"rpi.agc":
|
||||
{
|
||||
"channels":
|
||||
[
|
||||
"channels": [
|
||||
{
|
||||
"metering_modes":
|
||||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -234,15 +242,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -325,15 +342,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -659,15 +685,14 @@
|
|||
{
|
||||
"rpi.hdr":
|
||||
{
|
||||
"MultiExposure":
|
||||
"MultiExposureUnmerged":
|
||||
{
|
||||
"cadence": [ 1, 2 ],
|
||||
"channel_map": { "short": 1, "long": 2 }
|
||||
},
|
||||
"SingleExposure":
|
||||
"channel_map":
|
||||
{
|
||||
"cadence": [ 1 ],
|
||||
"channel_map": { "short": 1 }
|
||||
"short": 1,
|
||||
"long": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -47,22 +47,30 @@
|
|||
{
|
||||
"rpi.agc":
|
||||
{
|
||||
"channels":
|
||||
[
|
||||
"channels": [
|
||||
{
|
||||
"metering_modes":
|
||||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -145,15 +153,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -236,15 +253,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -615,15 +641,14 @@
|
|||
{
|
||||
"rpi.hdr":
|
||||
{
|
||||
"MultiExposure":
|
||||
"MultiExposureUnmerged":
|
||||
{
|
||||
"cadence": [ 1, 2 ],
|
||||
"channel_map": { "short": 1, "long": 2 }
|
||||
},
|
||||
"SingleExposure":
|
||||
"channel_map":
|
||||
{
|
||||
"cadence": [ 1 ],
|
||||
"channel_map": { "short": 1 }
|
||||
"short": 1,
|
||||
"long": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -148,15 +148,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
|
|
@ -138,15 +138,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
|
|
@ -133,15 +133,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
|
|
@ -139,22 +139,30 @@
|
|||
{
|
||||
"rpi.agc":
|
||||
{
|
||||
"channels":
|
||||
[
|
||||
"channels": [
|
||||
{
|
||||
"metering_modes":
|
||||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -228,15 +236,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -310,15 +327,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -630,15 +656,14 @@
|
|||
{
|
||||
"rpi.hdr":
|
||||
{
|
||||
"MultiExposure":
|
||||
"MultiExposureUnmerged":
|
||||
{
|
||||
"cadence": [ 1, 2 ],
|
||||
"channel_map": { "short": 1, "long": 2 }
|
||||
},
|
||||
"SingleExposure":
|
||||
"channel_map":
|
||||
{
|
||||
"cadence": [ 1 ],
|
||||
"channel_map": { "short": 1 }
|
||||
"short": 1,
|
||||
"long": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -139,22 +139,30 @@
|
|||
{
|
||||
"rpi.agc":
|
||||
{
|
||||
"channels":
|
||||
[
|
||||
"channels": [
|
||||
{
|
||||
"metering_modes":
|
||||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -228,15 +236,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -310,15 +327,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -729,15 +755,14 @@
|
|||
{
|
||||
"rpi.hdr":
|
||||
{
|
||||
"MultiExposure":
|
||||
"MultiExposureUnmerged":
|
||||
{
|
||||
"cadence": [ 1, 2 ],
|
||||
"channel_map": { "short": 1, "long": 2 }
|
||||
},
|
||||
"SingleExposure":
|
||||
"channel_map":
|
||||
{
|
||||
"cadence": [ 1 ],
|
||||
"channel_map": { "short": 1 }
|
||||
"short": 1,
|
||||
"long": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -129,22 +129,30 @@
|
|||
{
|
||||
"rpi.agc":
|
||||
{
|
||||
"channels":
|
||||
[
|
||||
"channels": [
|
||||
{
|
||||
"metering_modes":
|
||||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -218,15 +226,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -300,15 +317,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -641,15 +667,14 @@
|
|||
{
|
||||
"rpi.hdr":
|
||||
{
|
||||
"MultiExposure":
|
||||
"MultiExposureUnmerged":
|
||||
{
|
||||
"cadence": [ 1, 2 ],
|
||||
"channel_map": { "short": 1, "long": 2 }
|
||||
},
|
||||
"SingleExposure":
|
||||
"channel_map":
|
||||
{
|
||||
"cadence": [ 1 ],
|
||||
"channel_map": { "short": 1 }
|
||||
"short": 1,
|
||||
"long": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -129,22 +129,30 @@
|
|||
{
|
||||
"rpi.agc":
|
||||
{
|
||||
"channels":
|
||||
[
|
||||
"channels": [
|
||||
{
|
||||
"metering_modes":
|
||||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -218,15 +226,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -300,15 +317,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -632,15 +658,14 @@
|
|||
{
|
||||
"rpi.hdr":
|
||||
{
|
||||
"MultiExposure":
|
||||
"MultiExposureUnmerged":
|
||||
{
|
||||
"cadence": [ 1, 2 ],
|
||||
"channel_map": { "short": 1, "long": 2 }
|
||||
},
|
||||
"SingleExposure":
|
||||
"channel_map":
|
||||
{
|
||||
"cadence": [ 1 ],
|
||||
"channel_map": { "short": 1 }
|
||||
"short": 1,
|
||||
"long": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -131,22 +131,30 @@
|
|||
{
|
||||
"rpi.agc":
|
||||
{
|
||||
"channels":
|
||||
[
|
||||
"channels": [
|
||||
{
|
||||
"metering_modes":
|
||||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -225,20 +233,29 @@
|
|||
"base_ev": 1.25
|
||||
},
|
||||
{
|
||||
"base_ev": 0.125,
|
||||
"base_ev": 1.25,
|
||||
"metering_modes":
|
||||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -313,24 +330,32 @@
|
|||
0, 0.16,
|
||||
1000, 0.165,
|
||||
10000, 0.17
|
||||
],
|
||||
"base_ev": 1.25
|
||||
]
|
||||
},
|
||||
{
|
||||
"base_ev": 1.5,
|
||||
"base_ev": 1.25,
|
||||
"metering_modes":
|
||||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
@ -405,8 +430,7 @@
|
|||
0, 0.16,
|
||||
1000, 0.165,
|
||||
10000, 0.17
|
||||
],
|
||||
"base_ev": 1.25
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -657,15 +681,14 @@
|
|||
{
|
||||
"rpi.hdr":
|
||||
{
|
||||
"MultiExposure":
|
||||
"MultiExposureUnmerged":
|
||||
{
|
||||
"cadence": [ 1, 2 ],
|
||||
"channel_map": { "short": 1, "long": 2 }
|
||||
},
|
||||
"SingleExposure":
|
||||
"channel_map":
|
||||
{
|
||||
"cadence": [ 1 ],
|
||||
"channel_map": { "short": 1 }
|
||||
"short": 1,
|
||||
"long": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -51,15 +51,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
|
|
@ -35,7 +35,10 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 4, 4, 4, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"weights":
|
||||
[
|
||||
4, 4, 4, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
|
|
@ -133,15 +133,24 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"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 ]
|
||||
"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 ]
|
||||
"weights":
|
||||
[
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
|
|
@ -22,7 +22,10 @@
|
|||
{
|
||||
"centre-weighted":
|
||||
{
|
||||
"weights": [ 4, 4, 4, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]
|
||||
"weights":
|
||||
[
|
||||
4, 4, 4, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0
|
||||
]
|
||||
}
|
||||
},
|
||||
"exposure_modes":
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue