Skip to content

Commit

Permalink
Publish OPF 1.0.3 (#8)
Browse files Browse the repository at this point in the history
  • Loading branch information
krahenbuhl authored Jun 8, 2023
1 parent af910e1 commit 243a432
Show file tree
Hide file tree
Showing 29 changed files with 618 additions and 457 deletions.
427 changes: 427 additions & 0 deletions LICENSE

Large diffs are not rendered by default.

10 changes: 8 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
This repository contains the specification for the _Open Photogrammetry Format_, also known as _OPF_.

The _Open Photogrammetry Format_ is an open format for interchange of photogrammetry data.
The specification defines the core elements of photogrammetry projects, such as the input and output of photogrammetric calibration and dense reconstruction. The format is designed to be [extensible](#extensions).
The specification defines the core elements of photogrammetry projects, such as the input and output of photogrammetric calibration and dense reconstruction. The format is designed to be modular and [extensible](#extensions). Typically, a project is made of a "project container" file (`.opf`) which references the other project components, such as the files storing the camera parameters or point clouds.


The following are defined in this specification:

- [Project structure][2]
- [Project container][2]
- Cameras
- [Camera list][3]
- [Input Cameras][4]
Expand Down Expand Up @@ -104,6 +105,11 @@ These extensions are described below:

In addition, in the spirit of forward compatibility, we relax the requirement of JSON schemas with respect to the `enum` keyword, which we redefine as an open-ended list of values for the purpose of this specification.

## Existing Tooling

- PIX4Dmatic: import and export (commercial, free for visualisation, since v1.46)
- [Python](https://github.com/Pix4D/pyopf)

## Citation

If you use the OPF specification in your research or projects, we kindly request that you cite it as follows:
Expand Down
5 changes: 4 additions & 1 deletion docs/_sources/index.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ What is OPF?

OPF is the specification for a standardized file format designed for photogrammetry data.
The specification is open and free and aims at making it easy to store, exchange, and collaborate on photogrammetric data between different parties and software products.
Typically, a project is made of a "project container" file (`.opf`) which references the other project components, such as the files storing the camera parameters or point clouds.

Features
==========
Expand Down Expand Up @@ -57,7 +58,9 @@ We try to maintain here a non-comprehensive list of tools that implement the OPF
- the source of the `the OPF specification and documentation <https://github.com/Pix4D/opf-spec/tree/main/docs>`_.
- JSON `schemas <https://github.com/Pix4D/opf-spec/tree/main/schema>`_.

- `Pix4Dmatic <https://www.pix4d.com/download/pix4dmatic/>`_ (commercial software). Minimum version required: v1.46.
- `Pix4Dmatic <https://www.pix4d.com/download/pix4dmatic/>`_ (commercial software, free for visualisation). Minimum version required: v1.46.

- Python `library and tooling <https://github.com/Pix4D/pyopf>`_ (open source).

Citation
==========
Expand Down
151 changes: 35 additions & 116 deletions docs/_sources/specification/project.md.txt
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ The point cloud in the project is represented as a `glTF` file of type `model/gl
"type": "camera_list",
"resources": [
{
"uri": "cameras.json",
"uri": "camera-list.json",
"format": "application/opf-camera-list+json"
}
],
Expand All @@ -265,7 +265,7 @@ The point cloud in the project is represented as a `glTF` file of type `model/gl
"type": "input_cameras",
"resources": [
{
"uri": "input_cameras.json",
"uri": "input-cameras.json",
"format": "application/opf-input-cameras+json"
}
],
Expand All @@ -281,7 +281,7 @@ The point cloud in the project is represented as a `glTF` file of type `model/gl
"type": "input_control_points",
"resources": [
{
"uri": "input_control_points.json",
"uri": "control_points/input-control-points.json",
"format": "application/opf-input-control-points+json"
}
],
Expand All @@ -297,7 +297,7 @@ The point cloud in the project is represented as a `glTF` file of type `model/gl
"type": "scene_reference_frame",
"resources": [
{
"uri": "processing_spatial_reference.json",
"uri": "arbitrary-scene-reference-frame.json",
"format": "application/opf-scene-reference-frame+json"
}
],
Expand All @@ -308,7 +308,7 @@ The point cloud in the project is represented as a `glTF` file of type `model/gl
"type": "projected_input_cameras",
"resources": [
{
"uri": "projected_input_cameras.json",
"uri": "projected-input-cameras.json",
"format": "application/opf-projected-input-cameras+json"
}
],
Expand All @@ -328,7 +328,7 @@ The point cloud in the project is represented as a `glTF` file of type `model/gl
"type": "projected_control_points",
"resources": [
{
"uri": "projected_control_points.json",
"uri": "control_points/projected-control-points.json",
"format": "application/opf-projected-control-points+json"
}
],
Expand All @@ -343,6 +343,22 @@ The point cloud in the project is represented as a `glTF` file of type `model/gl
}
]
},
{
"id": "a71bf97a-045c-11ee-be56-0242ac120002",
"type": "constraints",
"resources": [
{
"uri": "control_points/constraints.json",
"format": "application/opf-constraints+json"
}
],
"sources": [
{
"id": "dad66aa8-6e52-4d7c-8cec-c6fd9da2aae6",
"type": "input_control_points"
}
]
},
{
"id": "6e12d73b-c8c0-4059-9c13-0a5ff2afaed7",
"type": "calibration",
Expand Down Expand Up @@ -374,145 +390,48 @@ The point cloud in the project is represented as a `glTF` file of type `model/gl
],
"resources": [
{
"uri": "tracks/tracks.gltf",
"uri": "point_cloud/point_cloud.gltf",
"format": "model/gltf+json"
},
{
"uri": "tracks/track-positions.bin",
"uri": "point_cloud/track-positions.bin",
"format": "application/gltf-buffer+bin"
},
{
"uri": "tracks/track-matchPointIndexRanges.bin",
"uri": "point_cloud/track-matchPointIndexRanges.bin",
"format": "application/gltf-buffer+bin"
},
{
"uri": "tracks/track-matchCameraIds.bin",
"uri": "point_cloud/track-matchCameraIds.bin",
"format": "application/gltf-buffer+bin"
},
{
"uri": "tracks/track-matchImagePointPixelCoordinates.bin",
"uri": "point_cloud/track-matchImagePointPixelCoordinates.bin",
"format": "application/gltf-buffer+bin"
},
{
"uri": "tracks/track-matchImagePointFeatureIds.bin",
"uri": "point_cloud/track-matchImagePointFeatureIds.bin",
"format": "application/gltf-buffer+bin"
},
{
"uri": "tracks/track-matchImagePointScales.bin",
"uri": "point_cloud/track-matchImagePointScales.bin",
"format": "application/gltf-buffer+bin"
},
{
"uri": "tracks/track-matchImagePointDepths.bin",
"uri": "point_cloud/track-matchImagePointDepths.bin",
"format": "application/gltf-buffer+bin"
},
{
"uri": "calibrated_cameras.json",
"uri": "calibrated-cameras.json",
"format": "application/opf-calibrated-cameras+json"
},
{
"uri": "gps_bias.json",
"format": "application/opf-gps-bias+json"
},
{
"uri": "some_additional_calib_data.json",
"format": "application/ext-pix4d-myteam-myalgo-settings"
}
]
},
{
"id": "f99cfd9a-eb41-4af9-a9e9-d60f4bd383c5",
"type": "point_cloud",
"name": "Corridor",
"labels": [
"opf-origin:images",
"opf-origin:depth"
],
"sources": [
{
"id": "83291b5e-d239-4d94-93fb-226f70d7cd3c",
"type": "scene_reference_frame"
},
{
"id": "6e12d73b-c8c0-4059-9c13-0a5ff2afaed7",
"type": "calibration"
}
],
"resources": [
{
"uri": "pcl.gltf",
"format": "model/gltf+json"
"uri": "control_points/calibrated-control-points.json",
"format": "application/opf-calibrated-control-points+json"
},
{
"uri": "partition.bin",
"format": "application/gltf-buffer+bin"
},
{
"uri": "positions.bin",
"format": "application/gltf-buffer+bin"
},
{
"uri": "normals.bin",
"format": "application/gltf-buffer+bin"
},
{
"uri": "colors.bin",
"format": "application/gltf-buffer+bin"
},
{
"uri": "camera-groups.bin",
"format": "application/gltf-buffer+bin"
},
{
"uri": "camera-visibility-index-ranges.bin",
"format": "application/gltf-buffer+bin"
}
]
},
{
"id": "df2694f3-105a-4ee7-ba6e-86e2accd0fd6",
"type": "point_cloud",
"name": "Living room",
"labels": [
"opf-origin:images"
],
"sources": [
{
"id": "83291b5e-d239-4d94-93fb-226f70d7cd3c",
"type": "scene_reference_frame"
},
{
"id": "6e12d73b-c8c0-4059-9c13-0a5ff2afaed7",
"type": "calibration"
}
],
"resources": [
{
"uri": "pcl2.gltf",
"format": "model/gltf+json"
},
{
"uri": "partition2.bin",
"format": "application/gltf-buffer+bin"
},
{
"uri": "positions2.bin",
"format": "application/gltf-buffer+bin"
},
{
"uri": "normals2.bin",
"format": "application/gltf-buffer+bin"
},
{
"uri": "colors2.bin",
"format": "application/gltf-buffer+bin"
},
{
"uri": "camera-groups2.bin",
"format": "application/gltf-buffer+bin"
},
{
"uri": "camera-visibility-index-ranges2.bin",
"format": "application/gltf-buffer+bin"
"uri": "gps-bias.json",
"format": "application/opf-gps-bias+json"
}
]
}
Expand Down
2 changes: 1 addition & 1 deletion docs/_static/documentation_options.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
var DOCUMENTATION_OPTIONS = {
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
VERSION: '1.0.2',
VERSION: '1.0.3',
LANGUAGE: 'None',
COLLAPSE_INDEX: false,
BUILDER: 'html',
Expand Down
8 changes: 3 additions & 5 deletions docs/annexes.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Annexes &mdash; Open Photogrammetry Format Specification 1.0.2 documentation</title>
<title>Annexes &mdash; Open Photogrammetry Format Specification 1.0.3 documentation</title>



Expand Down Expand Up @@ -387,10 +387,10 @@
<li>OPF /</li>

<li>
Version 1.0.2 /
Version 1.0.3 /
</li>

<li class="dateInfo">May 2023</li>
<li class="dateInfo">June 2023</li>



Expand Down Expand Up @@ -463,8 +463,6 @@ <h1>Annexes<a class="headerlink" href="#annexes" title="Permalink to this headli
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script src="https://unpkg.com/[email protected]/dist/mermaid.min.js"></script>
<script>mermaid.initialize({startOnLoad:true});</script>



Expand Down
8 changes: 3 additions & 5 deletions docs/calibration.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Calibration &mdash; Open Photogrammetry Format Specification 1.0.2 documentation</title>
<title>Calibration &mdash; Open Photogrammetry Format Specification 1.0.3 documentation</title>



Expand Down Expand Up @@ -387,10 +387,10 @@
<li>OPF /</li>

<li>
Version 1.0.2 /
Version 1.0.3 /
</li>

<li class="dateInfo">May 2023</li>
<li class="dateInfo">June 2023</li>



Expand Down Expand Up @@ -465,8 +465,6 @@ <h1>Calibration<a class="headerlink" href="#calibration" title="Permalink to thi
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script src="https://unpkg.com/[email protected]/dist/mermaid.min.js"></script>
<script>mermaid.initialize({startOnLoad:true});</script>



Expand Down
8 changes: 3 additions & 5 deletions docs/cameras.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Cameras &mdash; Open Photogrammetry Format Specification 1.0.2 documentation</title>
<title>Cameras &mdash; Open Photogrammetry Format Specification 1.0.3 documentation</title>



Expand Down Expand Up @@ -387,10 +387,10 @@
<li>OPF /</li>

<li>
Version 1.0.2 /
Version 1.0.3 /
</li>

<li class="dateInfo">May 2023</li>
<li class="dateInfo">June 2023</li>



Expand Down Expand Up @@ -465,8 +465,6 @@ <h1>Cameras<a class="headerlink" href="#cameras" title="Permalink to this headli
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script src="https://unpkg.com/[email protected]/dist/mermaid.min.js"></script>
<script>mermaid.initialize({startOnLoad:true});</script>



Expand Down
Loading

0 comments on commit 243a432

Please sign in to comment.