MCPcopy Create free account
hub / github.com/darglein/ADOP / IntrinsicsModuleImpl

Method IntrinsicsModuleImpl

src/lib/data/NeuralStructure.cpp:64–133  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

62}
63
64IntrinsicsModuleImpl::IntrinsicsModuleImpl(std::shared_ptr<SceneData> scene)
65{
66 SAIGA_ASSERT(!scene->scene_cameras.empty());
67
68 if (scene->dataset_params.camera_model == CameraModel::PINHOLE_DISTORTION)
69 {
70 std::vector<Eigen::Matrix<float, 13, 1>> intrinsics_data;
71
72
73 for (auto& cam : scene->scene_cameras)
74 {
75 vec5 a = cam.K.coeffs();
76 vec8 b = cam.distortion.Coeffs();
77
78
79 Eigen::Matrix<float, 13, 1> data;
80
81 data.head<5>() = a;
82 data.tail<8>() = b;
83
84 intrinsics_data.push_back(data);
85 }
86
87
88
89 intrinsics = torch::from_blob(intrinsics_data.data(), {(long)intrinsics_data.size(), 13L},
90 torch::TensorOptions().dtype(torch::kFloat32))
91 .clone()
92 .cuda();
93
94
95 register_parameter("intrinsics", intrinsics);
96 std::cout << "Pinhole Intrinsics:" << std::endl;
97 PrintTensorInfo(intrinsics);
98 }
99 else if (scene->dataset_params.camera_model == CameraModel::OCAM)
100 {
101 std::cout << "ocam Intrinsics:" << std::endl;
102
103 long count = scene->scene_cameras.front().ocam.NumProjectParams();
104
105 std::vector<float> intrinsics_data(count * scene->scene_cameras.size());
106
107 for (int i = 0; i < scene->scene_cameras.size(); ++i)
108 {
109 auto c = scene->scene_cameras[i].ocam;
110 SAIGA_ASSERT(c.NumProjectParams() == count);
111
112 float* ptr = intrinsics_data.data() + (count * i);
113
114 auto params = c.ProjectParams();
115
116 for (int i = 0; i < params.size(); ++i)
117 {
118 ptr[i] = params(i);
119 }
120 }
121

Callers

nothing calls this directly

Calls 1

sizeMethod · 0.80

Tested by

no test coverage detected