50 std::vector<uint>
addColorboard(
const helios::vec3 ¢relocation,
float patchsize,
const helios::vec3 &rotationrad,
const std::vector<std::vector<helios::RGBcolor>> &colorassignment = {},
51 const std::vector<std::vector<std::string>> &spectrumassignment = {});
62 std::vector<uint>
addColorboard(
const helios::vec3 ¢relocation,
float patchsize,
const helios::vec3 &rotationrad,
const std::vector<std::vector<helios::RGBcolor>> &colorassignment,
63 const std::vector<std::vector<std::string>> &spectrumassignment,
const std::string &colorboard_type);
123 bool writeSpectralXMLfile(
const std::string &filename,
const std::string ¬e,
const std::string &label, std::vector<helios::vec2> *spectrum);
131 bool loadXMLlabeldata(
const std::string &filename,
const std::string &labelname, std::vector<helios::vec2> &spectraldata);
141 float GradientDescent(std::vector<std::vector<float>> *expandedcameraspectra,
const std::vector<std::vector<float>> &expandedconstinput,
const float &learningrate,
const std::vector<std::vector<float>> &truevalues);
151 std::vector<float>
updateCameraResponseSpectra(
const std::vector<std::string> &camerareponselabels,
const std::string &cameralabel,
const std::map<
uint, std::vector<helios::vec2>> &simulatedinputspectra,
152 const std::vector<std::vector<float>> &truevalues);
156 float learningrate = 0.000001;
157 int maxiteration = 500;
158 float minloss = 0.01;
159 std::vector<float> camerarescales = {1, 1, 1};
173 void preprocessSpectra(
const std::vector<std::string> &sourcelabels,
const std::vector<std::string> &cameralabels, std::vector<std::string> &objectlabels,
helios::vec2 &wavelengthrange,
const std::string &targetlabel =
"");
184 void distortImage(
const std::string &cameralabel,
const std::vector<std::string> &bandlabels,
const helios::vec2 &focalxy, std::vector<double> &distCoeffs,
helios::int2 cameraresolution);
193 float getCameraResponseScale(
const std::string &cameralabel,
const helios::int2 cameraresolution,
const std::vector<std::string> &bandlabels,
const std::vector<std::vector<float>> &truevalues);
195 std::map<std::string, std::map<std::string, std::vector<helios::vec2>>> processedspectra;
219 LabColor(
float L_val,
float a_val,
float b_val) : L(L_val), a(a_val), b(b_val) {
248 std::map<std::string, std::vector<helios::vec2>> calibratedcameraspectra;
253 std::map<int, std::vector<std::vector<bool>>> generateColorBoardSegmentationMasks(
const std::string &camera_label,
const std::string &colorboard_type)
const;
262 std::vector<float> expandSpectrum(
const std::vector<helios::vec2> &targetspectrum,
float scale);
265 std::vector<uint> UUIDs_colorboard;
267 std::vector<uint> UUIDs_black;
269 std::vector<uint> UUIDs_white;
291 const std::vector<std::vector<helios::RGBcolor>> colorassignment_DGK = {{white_DGK_01, lightgray_DGK_02, mediumlightgray_DGK_03, mediumdarkgray_DGK_04, darkgray_DGK_05, black_DGK_06},
292 {red_DGK_07, yellow_DGK_08, green_DGK_09, skyblue_DGK_10, darkblue_DGK_11, magenta_DGK_12},
293 {brickred_DGK_13, orange_DGK_14, teal_DGK_15, mauve_DGK_16, lighttan_DGK_17, darktan_DGK_18}};
295 const std::vector<std::vector<std::string>> spectrumassignment_DGK = {{
"ColorReference_DGK_01",
"ColorReference_DGK_02",
"ColorReference_DGK_03",
"ColorReference_DGK_04",
"ColorReference_DGK_05",
"ColorReference_DGK_06"},
296 {
"ColorReference_DGK_07",
"ColorReference_DGK_08",
"ColorReference_DGK_09",
"ColorReference_DGK_10",
"ColorReference_DGK_11",
"ColorReference_DGK_12"},
297 {
"ColorReference_DGK_13",
"ColorReference_DGK_14",
"ColorReference_DGK_15",
"ColorReference_DGK_16",
"ColorReference_DGK_17",
"ColorReference_DGK_18"}};
325 const std::vector<std::vector<helios::RGBcolor>> colorassignment_Calibrite = {{brown_Calibrite_01, lighttan_Calibrite_02, bluegray_Calibrite_03, olive_Calibrite_04, lavender_Calibrite_05, bluegreen_Calibrite_06},
326 {orange_Calibrite_07, midblue_Calibrite_08, lightred_Calibrite_09, violet_Calibrite_10, yellowgreen_Calibrite_11, lightorange_Calibrite_12},
327 {blue_Calibrite_13, green_Calibrite_14, red_Calibrite_15, yellow_Calibrite_16, magenta_Calibrite_17, lightblue_Calibrite_18},
328 {white_Calibrite_19, lightgray_Calibrite_20, midlightgray_Calibrite_21, middarkgray_Calibrite_22, darkgray_Calibrite_23, black_Calibrite_24}};
330 const std::vector<std::vector<std::string>> spectrumassignment_Calibrite = {
331 {
"ColorReference_Calibrite_01",
"ColorReference_Calibrite_02",
"ColorReference_Calibrite_03",
"ColorReference_Calibrite_04",
"ColorReference_Calibrite_05",
"ColorReference_Calibrite_06"},
332 {
"ColorReference_Calibrite_07",
"ColorReference_Calibrite_08",
"ColorReference_Calibrite_09",
"ColorReference_Calibrite_10",
"ColorReference_Calibrite_11",
"ColorReference_Calibrite_12"},
333 {
"ColorReference_Calibrite_13",
"ColorReference_Calibrite_14",
"ColorReference_Calibrite_15",
"ColorReference_Calibrite_16",
"ColorReference_Calibrite_17",
"ColorReference_Calibrite_18"},
334 {
"ColorReference_Calibrite_19",
"ColorReference_Calibrite_20",
"ColorReference_Calibrite_21",
"ColorReference_Calibrite_22",
"ColorReference_Calibrite_23",
"ColorReference_Calibrite_24"}};
362 const std::vector<std::vector<helios::RGBcolor>> colorassignment_SpyderCHECKR = {{bluegreen_SpyderCHECKR_01, lavender_SpyderCHECKR_02, olive_SpyderCHECKR_03, bluegray_SpyderCHECKR_04, lighttan_SpyderCHECKR_05, brown_SpyderCHECKR_06},
363 {orange_SpyderCHECKR_07, midblue_SpyderCHECKR_08, lightred_SpyderCHECKR_09, violet_SpyderCHECKR_10, yellowgreen_SpyderCHECKR_11, lightorange_SpyderCHECKR_12},
364 {lightblue_SpyderCHECKR_13, magenta_SpyderCHECKR_14, yellow_SpyderCHECKR_15, red_SpyderCHECKR_16, green_SpyderCHECKR_17, blue_SpyderCHECKR_18},
365 {white_SpyderCHECKR_19, lightgray_SpyderCHECKR_20, midlightgray_SpyderCHECKR_21, middarkgray_SpyderCHECKR_22, darkgray_SpyderCHECKR_23, black_SpyderCHECKR_24}};
367 const std::vector<std::vector<std::string>> spectrumassignment_SpyderCHECKR = {
368 {
"ColorReference_SpyderCHECKR_01",
"ColorReference_SpyderCHECKR_02",
"ColorReference_SpyderCHECKR_03",
"ColorReference_SpyderCHECKR_04",
"ColorReference_SpyderCHECKR_05",
"ColorReference_SpyderCHECKR_06"},
369 {
"ColorReference_SpyderCHECKR_07",
"ColorReference_SpyderCHECKR_08",
"ColorReference_SpyderCHECKR_09",
"ColorReference_SpyderCHECKR_10",
"ColorReference_SpyderCHECKR_11",
"ColorReference_SpyderCHECKR_12"},
370 {
"ColorReference_SpyderCHECKR_13",
"ColorReference_SpyderCHECKR_14",
"ColorReference_SpyderCHECKR_15",
"ColorReference_SpyderCHECKR_16",
"ColorReference_SpyderCHECKR_17",
"ColorReference_SpyderCHECKR_18"},
371 {
"ColorReference_SpyderCHECKR_19",
"ColorReference_SpyderCHECKR_20",
"ColorReference_SpyderCHECKR_21",
"ColorReference_SpyderCHECKR_22",
"ColorReference_SpyderCHECKR_23",
"ColorReference_SpyderCHECKR_24"}};