SatDump 2.0.0-alpha-520736c72
Loading...
Searching...
No Matches
svissr_calibrator.h
1#pragma once
2
3#include "nlohmann/json.hpp"
5#include "products/image/image_calibrator.h"
6
7namespace fengyun_svissr
8{
9 class SvissrCalibrator : public satdump::products::ImageCalibrator
10 {
11 private:
12 nlohmann::json calib_cfg;
13 std::vector<double> wavenumbers;
14 std::array<float, 1024> ch1_lut;
15 std::array<float, 1024> ch2_lut;
16 std::array<float, 1024> ch3_lut;
17 std::array<float, 1024> ch4_lut;
18 std::array<float, 1024> ch5_lut;
19
20 public:
21 SvissrCalibrator(satdump::products::ImageProduct *p, nlohmann::json c) : satdump::products::ImageCalibrator(p, c)
22 {
23 calib_cfg = d_cfg;
24 for (size_t i = 0; i < d_pro->images.size(); i++)
25 wavenumbers.push_back(d_pro->images[i].wavenumber);
26 ch1_lut = c["ch1_lut"];
27 ch2_lut = c["ch2_lut"];
28 ch3_lut = c["ch3_lut"];
29 ch4_lut = c["ch4_lut"];
30 ch5_lut = c["ch5_lut"];
31 }
32
33 double compute(int channel, int /*pos_x*/, int /*pos_y*/, uint32_t px_val)
34 {
35 if (px_val > 1023)
36 return CALIBRATION_INVALID_VALUE;
37
38 if (channel == 0)
39 return ch1_lut[px_val];
40 else if (channel == 1)
41 return ch2_lut[px_val];
42 else if (channel == 2)
43 return ch3_lut[px_val];
44 else if (channel == 3)
45 return ch4_lut[px_val];
46 else if (channel == 4)
47 return ch5_lut[px_val];
48 else
49 return CALIBRATION_INVALID_VALUE;
50 };
51 };
52} // namespace fengyun_svissr
Definition image_calibrator.h:12
SatDump image product class.
Definition image_product.h:43