ReUseX  0.0.5
3D Point Cloud Processing for Building Reuse
Loading...
Searching...
No Matches
arkitscenes.hpp File Reference
#include <array>
#include <cstddef>
#include <filesystem>
#include <optional>
#include <string>
#include <vector>
Include dependency graph for arkitscenes.hpp:

Go to the source code of this file.

Classes

struct  reusex::io::ArkitPincam
 Parsed contents of an ARKitScenes .pincam intrinsics line. More...
struct  reusex::io::ArkitPoseSample
 One trajectory sample: a device-relative timestamp and the optical-to-world (camera->world) pose at that instant, row-major 4x4. More...

Namespaces

namespace  reusex
namespace  reusex::io

Typedefs

using reusex::io::ArkitTrajectory = std::vector<ArkitPoseSample>
 Trajectory as a timestamp-ascending sequence of camera->world samples.

Functions

ArkitPincam reusex::io::parse_pincam (const std::string &line)
 Parse a single ARKitScenes .pincam line: width height fx fy cx cy (six whitespace-separated doubles).
std::array< double, 16 > reusex::io::arkit_traj_to_optical_world (double rx, double ry, double rz, double tx, double ty, double tz)
 Convert one ARKitScenes trajectory pose to an optical-to-world 4x4 matrix (row-major, 16 doubles).
ArkitTrajectory reusex::io::load_arkit_trajectory (const std::filesystem::path &traj_path)
 Parse the trajectory file into timestamp-sorted camera->world poses.
std::optional< std::array< double, 16 > > reusex::io::interpolate_pose (const ArkitTrajectory &traj, double ts, double max_gap=kArkitMaxPoseGap)
 Interpolate the camera->world pose at ts from the bracketing trajectory samples: SLERP on the rotation, linear interpolation on the camera position.
bool reusex::io::parse_frame_timestamp (const std::filesystem::path &file, double &ts)
 Extract the timestamp encoded in an ARKitScenes stream filename such as 41069021_452.395.png: drop the extension, then take everything after the last underscore (a bare std::stod would stop at the video-id prefix).
std::size_t reusex::io::import_arkitscenes (ProjectDB &db, const std::filesystem::path &scene_dir)
 Import an ARKitScenes scene (lowres iPad-LiDAR streams) into a ReUseX project.

Variables

constexpr double reusex::io::kArkitMaxPoseGap = 0.5
 Largest bracketing interval interpolate_pose will interpolate across.