This Julia package loads and saves Bundler files, used in the context of Photogrammetry and Struture from Motion.
The package is available in the Julia package repository and can be installed in the Julia REPL package mode:
pkg> add FileIO BundlerIO
The dependencies are installed automatically. The package depends on Meshes.jl for the geometry representation, ImageProjectiveGeometry.jl for the representation of the cameras.
The loading and writing is done via the FileIO.jl interface:
using FileIO
bundle = load("bundle.out")
save("new_bundle.out", bundle)
The loaded data is in a Bundle
struct, that contains the points, cameras, views, and optionally colors and keypoints. The cameras are an array of Camera
objects from ImageProjectiveGeometry.jl, the 3D points are an 3xN array of the provided type (defaults to Float64
) and the views are a Dictionary
with a tuple of (camera_id, point_id)
as keys and the pixel coordinates of the projection of that point into the image of that camera as value. The colors are an array of Color
objects from ColorTypes.jl. The keypoints are in a similar dict to the views, where the values are the ID of the SIFT keypoints that have been computed during SfM. This data is not always present and only kept for completeness.