29 {
30 master_sensor_name_ = options.calibrator_working_sensor_name;
31 sensor_name_ = options.calibrator_working_sensor_name;
32
33 auto &name_intrinsic_map = options.name_intrinsic_map;
34 ACHECK(name_intrinsic_map.find(master_sensor_name_) !=
35 name_intrinsic_map.end());
36 CameraStatus camera_status;
37 name_camera_status_map_.clear();
38 for (auto iter = name_intrinsic_map.begin(); iter != name_intrinsic_map.end();
39 ++iter) {
40 camera_status.k_matrix[0] = static_cast<double>(iter->second(0, 0));
41 camera_status.k_matrix[4] = static_cast<double>(iter->second(1, 1));
42 camera_status.k_matrix[2] = static_cast<double>(iter->second(0, 2));
43 camera_status.k_matrix[5] = static_cast<double>(iter->second(1, 2));
44 camera_status.k_matrix[8] = 1.0;
45 name_camera_status_map_.insert(
46 std::pair<std::string, CameraStatus>(iter->first, camera_status));
47 }
48
49 CalibratorInitOptions calibrator_init_options;
50 calibrator_init_options.image_width = options.image_width;
51 calibrator_init_options.image_height = options.image_height;
52 calibrator_init_options.focal_x = static_cast<float>(
53 name_camera_status_map_[master_sensor_name_].k_matrix[0]);
54 calibrator_init_options.focal_y = static_cast<float>(
55 name_camera_status_map_[master_sensor_name_].k_matrix[4]);
56 calibrator_init_options.cx = static_cast<float>(
57 name_camera_status_map_[master_sensor_name_].k_matrix[2]);
58 calibrator_init_options.cy = static_cast<float>(
59 name_camera_status_map_[master_sensor_name_].k_matrix[5]);
60 calibrator_.reset(
61 BaseCalibratorRegisterer::GetInstanceByName(options.calibrator_method));
62 ACHECK(calibrator_ !=
nullptr);
63 ACHECK(calibrator_->Init(calibrator_init_options))
64 << "Failed to init " << options.calibrator_method;
65 return true;
66}