Understanding the Open Photogrammetry Format (OPF)
The Open Photogrammetry Format (OPF) is a fully open and free specification established by Pix4D to standardize the storage, exchange, and collaborative use of photogrammetric project data across different software tools and users. Through a consistent, extensible project format, it streamlines data sharing, integration, and processing for both end users and developers.
IN THIS ARTICLE
What is OPF?
Features
Why does OPF matter?
What's inside an OPF project?
Using OPF in practice
Developer access
Compatible tools
Learn more
What is OPF?
The Open Photogrammetry Format (OPF) is an open and free file format specification for photogrammetry data established by Pix4D. It is designed to facilitate the storage, exchange, and collaboration of photogrammetric data across different software products and users. An OPF project typically consists of a main project container file (.opf) that references other project components, such as camera parameters and point clouds.
Features
- Human-readable: Based as much as possible on simple, human-readable JSON files. It leverages efficient binary formats where a text-based representation would be impractical (e.g., point cloud data).
- Structured Data: Organizes photogrammetry data in a structured manner, allowing for easy access and retrieval of information. The data model includes information on both the input and output of the photogrammetry process:
- Input data: Includes information about input cameras (camera list, input camera parameters), the coordinate reference system, control points, scale and orientation constraints, etc.
- Output data: Includes information about camera calibration (sparse point cloud, calibrated cameras) and the dense reconstructed point clouds.
- Efficient Storage: The point cloud format for ATPs (sparse point cloud) and dense point cloud included in this specification is based on the open standard glTF and is designed to be memory-mappable and spatially partitioned. This enables both efficient processing and progressive rendering of massive point clouds. The format retains information on the point visibility on images, normals, custom attributes, and more.
- Flexible Extension System: Designed to be highly extensible and customizable, allowing for easy expansion of data representation as needed. It will be improved on an ongoing basis to support additional photogrammetric outputs.
- Stable Format: Has strict schema semantic versioning rules, giving strong compatibility guarantees and peace of mind for the implementers. JSON schemas are provided for validation.
Why does OPF matter?
For Non-technical users
Even without writing code, users working with photogrammetry projects, whether capturing, processing, or reviewing, can benefit from the OPF format in several practical ways:
- Simplified Data Transfer: Eliminates concerns about missing files or broken links. Whether sharing with colleagues or transitioning from fieldwork to office processing, all project components remain intact.
- Seamless Integration: OPF offers seamless integration across multiple Pix4D applications, enabling smooth data transfer from capture (PIX4Dcatch) to processing (PIX4Dmatic) and beyond. Support for additional products is planned.
For developers and technical users
For users building automation workflows, custom pipelines, or software integrations, OPF provides key advantages:
- A consistent file structure and metadata access.
- Machine and human-readable, JSON-based configuration, enabling interoperability and schema validation.
- Integration potential through open tools like pyopf.
- Support for custom data through an extension mechanism.
What's inside an OPF project?
An OPF folder typically contains:
- project.opf: The central JSON file that describes the project.
- Input Data:
- Images: Original photos used for reconstruction, along with their input parameters.
- Control Points: Ground control points (GCPs), checkpoints, and scale/orientation constraints, including their corresponding marks in images.
- Output Data: Processed outputs such as calibrated cameras and sparse and dense point clouds (in glTF format).
Data within an OPF project is typically stored in JSON format. For large datasets like point clouds, glTF is utilized as the streaming format. The OPF specification uses a strict subset of the glTF file format and incorporates custom glTF extensions. This means an OPF glTF point cloud is a fully valid glTF file, though not every glTF file is necessarily a valid OPF glTF point cloud.
An OPF-glTF point cloud is built upon the open-source glTF 2.0 standard. It is designed for efficiency, enabling:
- Memory-Mappability: Facilitates rapid data access by directly mapping data into program memory, eliminating the need for slow parsing and loading.
- Spatial Partitioning: Divides the point cloud into manageable spatial chunks, allowing for:
- Efficient processing: Software can selectively load and process only the necessary parts of the point cloud, which is crucial when dealing with massive datasets.
- Progressive rendering: This allows for a fast initial visualization of the point cloud, with more detail being loaded in as needed. This is particularly useful for interactive applications where a quick response time is important.
In addition to the point cloud geometry, the OPF-glTF format also retains important metadata, including:
- Point visibility on images: Information about which cameras could see each point.
- Normals: The orientation of the surface at each point.
- Custom attributes: The format is extensible and allows for the storage of additional, user-defined data for each point.
Using OPF in practice
Pix4D’s ecosystem provides seamless integration with OPF, enabling an efficient end-to-end workflow with PIX4Dcatch and PIX4Dmatic.
- Capture: Use PIX4Dcatch to collect project data. An OPF folder is automatically generated during capture.
- Transfer: Move the OPF folder to your desktop environment or share it with collaborators.
- Open: Launch PIX4Dmatic and open the project.opf file. All associated data is automatically imported and ready for processing.
This workflow eliminates the need to manually import images, ground control points, or adjust settings. Simply open the OPF file to begin processing.
For more information on PIX4Dcatch: Using OPF from PIX4Dcatch to PIX4Dmatic
Developer access
While OPF is designed for ease of use by end users, it also provides advanced capabilities for developers:
- Access and modify OPF content using the open-source pyopf Python library.
- Validate OPF files against versioned schemas available on GitHub.
- Integrate OPF into custom pipelines for automation, data conversion, or extended processing workflows.
Even without custom development, all users benefit from the structured, reliable format that OPF offers.
An example of how to integrate OPF file format with external frameworks is shown in this Pix4D Labs article, which describes the use of OPF together with NeRF tools. It can be used as a detailed example to integrate OPF in an external package.
Compatible tools
- PIX4Dcatch: Mobile capture app that exports OPF projects.
- PIX4Dmatic: Desktop photogrammetry software that imports and exports OPF projects.
Learn more
Additional resources:
- OPF on Pix4D Labs: https://www.pix4d.com/labs/opf-open-photogrammetry-format/
- OPF GitHub Specification: https://github.com/Pix4D/opf-spec
- pyopf Toolkit: https://github.com/Pix4D/pyopf