6 #include "../src/ds5/ds5-private.h"
12 :
dev(
dev), _not_model(not_model)
72 #define UPDC32(octet, crc) (crc_32_tab[((crc) ^ (octet)) & 0xff] ^ ((crc) >> 8))
75 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
76 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
77 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
78 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
79 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
80 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
81 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
82 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
83 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
84 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
85 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
86 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
87 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
88 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
89 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
90 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
91 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
92 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
93 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
94 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
95 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
96 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
97 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
98 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
99 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
100 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
101 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
102 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
103 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
104 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
105 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
106 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
107 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
108 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
109 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
110 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
111 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
112 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
113 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
114 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
115 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
116 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
117 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
124 for (; bufsize; --bufsize, ++
buf)
132 const auto window_name =
"Calibration Window";
142 catch(std::exception
e)
144 error_message =
e.what();
151 bool changed =
false;
173 std::string title_message =
"CAMERA CALIBRATION";
192 table->baseline = cf.
get(
"baseline");
208 load_float3x4(
"intrinsic_left",
table->intrinsic_left);
209 load_float3x4(
"intrinsic_right",
table->intrinsic_right);
210 load_float3x4(
"world2left_rot",
table->world2left_rot);
211 load_float3x4(
"world2right_rot",
table->world2right_rot);
215 table->rect_params[
i].x = cf.
get(std::string(
to_string() <<
"rectified." <<
i <<
".fx").c_str());
216 table->rect_params[
i].y = cf.
get(std::string(
to_string() <<
"rectified." <<
i <<
".fy").c_str());
218 table->rect_params[
i].z = cf.
get(std::string(
to_string() <<
"rectified." <<
i <<
".ppx").c_str());
219 table->rect_params[
i].w = cf.
get(std::string(
to_string() <<
"rectified." <<
i <<
".ppy").c_str());
225 catch (
const std::exception& ex)
227 error_message = ex.what();
244 cf.
set(
"baseline",
table->baseline);
260 save_float3x4(
"intrinsic_left",
table->intrinsic_left);
261 save_float3x4(
"intrinsic_right",
table->intrinsic_right);
262 save_float3x4(
"world2left_rot",
table->world2left_rot);
263 save_float3x4(
"world2right_rot",
table->world2right_rot);
268 int w = xy.x;
int h = xy.y;
270 cf.
set(std::string(
to_string() <<
"rectified." <<
i <<
".width").c_str(),
w);
271 cf.
set(std::string(
to_string() <<
"rectified." <<
i <<
".height").c_str(),
h);
273 cf.
set(std::string(
to_string() <<
"rectified." <<
i <<
".fx").c_str(),
table->rect_params[
i].x);
274 cf.
set(std::string(
to_string() <<
"rectified." <<
i <<
".fy").c_str(),
table->rect_params[
i].y);
276 cf.
set(std::string(
to_string() <<
"rectified." <<
i <<
".ppx").c_str(),
table->rect_params[
i].z);
277 cf.
set(std::string(
to_string() <<
"rectified." <<
i <<
".ppy").c_str(),
table->rect_params[
i].w);
281 catch (
const std::exception& ex)
283 error_message = ex.what();
306 nm->add_notification({
to_string() <<
"Depth Calibration is reset to Factory Settings",
310 catch(
const std::exception& ex)
312 error_message = ex.what();
330 ImGui::SetTooltip(
"%s",
"Write selected calibration table to the device. For advanced users");
347 draw_float(
"Baseline",
table->baseline, orig_table->baseline, changed);
351 draw_float4x4(
"Left Intrinsics",
table->intrinsic_left, orig_table->intrinsic_left, changed);
352 draw_float4x4(
"Right Intrinsics",
table->intrinsic_right, orig_table->intrinsic_right, changed);
353 draw_float4x4(
"World to Left Rotation",
table->world2left_rot, orig_table->world2left_rot, changed);
354 draw_float4x4(
"World to Right Rotation",
table->world2right_rot, orig_table->world2right_rot, changed);
362 std::vector<std::string> resolution_names;
363 std::vector<const char*> resolution_names_char;
364 std::vector<int> resolution_offset;
368 int w = xy.x;
int h = xy.y;
370 resolution_offset.push_back(
i);
372 resolution_names.push_back(
name);
375 for (
size_t i = 0;
i < resolution_offset.size();
i++)
377 resolution_names_char.push_back(resolution_names[
i].c_str());
417 ImGui::SetTooltip(
"%s",
"Changing calibration will affect depth quality. Changes are persistent.\nThere is an option to get back to factory calibration, but it maybe worse than current calibration\nBefore writing to flash, we strongly recommend to make a file backup");
443 table->header.crc32 = crc;
449 catch (
const std::exception& ex)
451 error_message = ex.what();
469 ImGui::SetTooltip(
"%s",
"Write selected calibration table to the device. For advanced users");
481 catch (
const std::exception&)
489 catch (
const std::exception& ex)
491 error_message = ex.what();