{"id":26786984,"url":"https://github.com/pix4d/opf-spec","last_synced_at":"2025-04-19T19:34:36.601Z","repository":{"id":168964435,"uuid":"624403762","full_name":"Pix4D/opf-spec","owner":"Pix4D","description":"Specification for the Open Photogrammetry Format (OPF)","archived":false,"fork":false,"pushed_at":"2024-04-24T08:10:52.000Z","size":1342,"stargazers_count":66,"open_issues_count":0,"forks_count":3,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-03-29T12:17:26.282Z","etag":null,"topics":["geospatial","gis","gltf","opf","owner-open-photogrammetry-format","photogrammetry","point-cloud","sfm","structure-from-motion"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Pix4D.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-04-06T11:49:37.000Z","updated_at":"2025-02-24T18:29:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"94a4ffa2-27b5-4b4c-8b8b-e1d76cdf9284","html_url":"https://github.com/Pix4D/opf-spec","commit_stats":{"total_commits":5,"total_committers":3,"mean_commits":"1.6666666666666667","dds":0.6,"last_synced_commit":"a7d6c6d703edd4e8d8385b426da367a094983d54"},"previous_names":["pix4d/opf-spec"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pix4D%2Fopf-spec","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pix4D%2Fopf-spec/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pix4D%2Fopf-spec/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pix4D%2Fopf-spec/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Pix4D","download_url":"https://codeload.github.com/Pix4D/opf-spec/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249780520,"owners_count":21324561,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["geospatial","gis","gltf","opf","owner-open-photogrammetry-format","photogrammetry","point-cloud","sfm","structure-from-motion"],"created_at":"2025-03-29T12:17:31.898Z","updated_at":"2025-04-19T19:34:36.567Z","avatar_url":"https://github.com/Pix4D.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"## Open Photogrammetry Format (OPF)\n\nThis repository contains the specification for the _Open Photogrammetry Format_, also known as _OPF_.\n\nThe _Open Photogrammetry Format_ is an open format for interchange of photogrammetry data.\nThe 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.\n\n\nThe following are defined in this specification:\n\n- [Project container][2]\n- Cameras\n  - [Camera list][3]\n  - [Input Cameras][4]\n  - [Projected Cameras][5]\n  - [Calibrated Cameras][6]\n- [Control points][7]\n- [Geo-referencing information][8]\n- [Calibration][9]\n  - [Calibrated Cameras][6]\n  - [Calibrated control points][10]\n  - [GPS bias][11]\n- [Point cloud and tracks][12]\n\nA [glossary][1] is provided.\n\n[1]: https://pix4d.github.io/opf-spec/specification/glossary.html \"Glossary\"\n[2]: https://pix4d.github.io/opf-spec/specification/project.html \"Project format specification\"\n[3]: https://pix4d.github.io/opf-spec/specification/camera_list.html \"Camera list format\"\n[4]: https://pix4d.github.io/opf-spec/specification/input_cameras.html \"Input camera format\"\n[5]: https://pix4d.github.io/opf-spec/specification/projected_input_cameras.html \"Projected input camera format\"\n[6]: https://pix4d.github.io/opf-spec/specification/calibrated_cameras.html \"Calibrated camera format\"\n[7]: https://pix4d.github.io/opf-spec/specification/control_points.html \"Control Points\"\n[8]: https://pix4d.github.io/opf-spec/specification/scene_reference_frame.html \"Scene reference frame format\"\n[9]: https://pix4d.github.io/opf-spec/specification/calibration.html \"Calibration scene item\"\n[10]: https://pix4d.github.io/opf-spec/specification/control_points.html#format-specification-calibrated-control-points \"Calibrated control points\"\n[11]: https://pix4d.github.io/opf-spec/specification/gps_bias.html \"GPS bias\"\n[12]: https://pix4d.github.io/opf-spec/specification/point_cloud.html \"Point cloud\"\n\n\nExamples of OPF files are available under the `examples` subfolder.\n\n## JSON encoding\n\nJSON files used throughout this specification have the following restrictions on formatting and encoding.\n\n1. JSON must use UTF-8 encoding\n2. All strings defined in this spec (properties names, enums) use only ASCII charset and must be written as plain text.\n3. Names (keys) within JSON objects must be unique, i.e., duplicate keys aren't allowed.\n\n## URIs\n\nThis specification uses [URI references (RFC3986)](https://tools.ietf.org/html/rfc3986#section-4.1) to reference content.\n\n## Extensions\n\n### Purpose of extensions\n\nOPF extensions enable OPF implementers to create new functionalities or to expand functionalities of the OPF core specification.\nExtensions may expose features supported by a single vendor, but they can have multiple implementations.\nTo ease discovery, vetted extensions may become part of the OPF extension registry.\nExtensions are written against a specific version of the OPF specification and may be promoted to the core OPF specification in a later OPF specification version.\n\n### Extension mechanism\n\nExtensions extend the base model format. Extensions can introduce new properties (including properties that reference external data, and the extension can define the format of those data).\n\nAll object properties have an optional `extensions` object property that can contain new extension-specific properties. This allows extensions to extend any part of OPF.\n\nExtensions can't remove or redefine existing properties to mean something else.\n\nExtensions may add new properties and values.\nAs much as possible these feature additions are designed to allow safe fallback consumption in tools that do not recognize an extension.\nIn case an application imports a OPF project with an unknown extension and re-exports it, it is desirable to preserve the extension. Extensions should be designed to be resilient to changes to their parent objects.\n\nAn example of a hypothetical `PIX4D_spatial_ref_sys` extension of [geo-referencing information][7] to add the URI of the grid used would be this: [scene-reference-frame-extension.json](examples/scene-reference-frame-extension.json).\n\n### Creating Extensions\n\nAs per convention, the extension schema should allow additional properties to allow future extensibility of the extension.\n\nWhere an extension is meant to share data between teams or with a third party, its format should be specified and documented.\nThe specification of the extension should be documented under the \"/extensions/\u003cextension name\u003e/\" folder.\n\n### Naming\n\nExtensions names must be of the form:\n\n`\u003cUPPERCASE prefix\u003e_\u003cextension name\u003e`\n\nNames MUST use lowercase snake-case following the prefix, e.g. `OPF_some_extension`.\n\n## JSON schema\n\n[JSON schema](https://json-schema.org/) is the source of truth regarding conformance with the specification, with the caveat that not all the semantics in the specification can be captured in a schema. The schemas are located in the `schema` directory.\n\nNote that by convention schemas of this specification always allow additional properties, this is required to support forward compatibility of the format. Such additional properties are strictly reserved for future version of the specification and shall not be used for the purpose of extensions. Extensions of the specification are provided through the [extensions mechanism](#extensions) exclusively.\n\n### Custom extensions to JSON schema\n\nIn some instances we have slightly extended the JSON schema vocabularies in order to add additional data that may be used to further validate a compliance with the specification.\nThese extensions are described below:\n\n- New properties in project.schema.json : `required_resources_per_item_type`, `optional_resources_per_item_type`, `required_sources_per_item_type` and `optional_sources_per_item_type` dictionaries describe which _resources_ and which _sources_ are required and optional for a given item type.\n\nIn 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.\n\n## Existing Tooling\n\n- PIX4Dmatic: import and export (commercial, free for visualization, since v1.46)\n- [Python](https://github.com/Pix4D/pyopf)\n\n## Citation\n\nIf you use the OPF specification in your research or projects, we kindly request that you cite it as follows:\n\n`The Open Photogrammetry Format Specification, Grégoire Krähenbühl, Klaus Schneider-Zapp, Bastien Dalla Piazza, Juan Hernando, Juan Palacios, Massimiliano Bellomo, Mohamed-Ghaïth Kaabi, Christoph Strecha, Pix4D, 2023, retrived from https://pix4d.github.io/opf-spec/`\n\n## License\n\nCopyright (c) 2023-2024 Pix4D SA\n\nThis specification and all the associated files, including but not limited to the markdown files, json schemas and any automatically generated HTML and PDF files are licensed under the Creative Commons Attribution 4.0 International License (CC BY 4.0).\n\nAll scripts and/or code contained in this repository are licensed under Apache License 2.0.\n\nThird party documents or tools that are used or referred to in this specification are licensed under their own terms by their respective copyright owners.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpix4d%2Fopf-spec","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpix4d%2Fopf-spec","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpix4d%2Fopf-spec/lists"}