### Example JSON structure for a Calibration Project Item Source: https://github.com/pix4d/opf-spec/blob/main/docs/_sources/specification/calibration.md.txt This JSON example demonstrates the structure of a `calibration` project item, including its `id`, `type`, `sources` (such as input cameras and control points), and `resources` (like calibrated cameras and GLTF models). It illustrates how various data formats are linked within the project item. This example is a fragment and must be contained inside the `items` attribute of a file with format `application/opf-project+json`. ```json { "id": "6e12d73b-c8c0-4059-9c13-0a5ff2afaed7", "type": "calibration", "sources": [ { "id": "1fbfd8dd-188c-45dc-955c-30eac64ad4d7", "type": "ext_pix4d_myteam_myalgo_settings" }, { "id": "57608ca8-912d-4fee-b097-2648651474c4", "type": "input_cameras" }, { "id": "dad66aa8-6e52-4d7c-8cec-c6fd9da2aae6", "type": "input_control_points" }, { "id": "54b313cf-9a5d-4bd7-8f51-b06577dedad1", "type": "projected_input_cameras" }, { "id": "cf980832-21cd-4830-b02c-1e7f6faa7176", "type": "projected_control_points" }, { "id": "83291b5e-d239-4d94-93fb-226f70d7cd3c", "type": "scene_reference_frame" } ], "resources": [ { "uri": "tracks.gltf", "format": "model/gltf+json" }, { "uri": "track-positions.glbin", "format": "application/gltf-buffer+bin" }, { "uri": "track-matchPointIndexRanges.glbin", "format": "application/gltf-buffer+bin" }, { "uri": "track-matchCameraIds.glbin", "format": "application/gltf-buffer+bin" }, { "uri": "track-matchImagePointPixelCoordinates.glbin", "format": "application/gltf-buffer+bin" }, { "uri": "track-matchImagePointFeatureIds.glbin", "format": "application/gltf-buffer+bin" }, { "uri": "track-matchImagePointScales.glbin", "format": "application/gltf-buffer+bin" }, { "uri": "track-matchImagePointDepths.glbin", "format": "application/gltf-buffer+bin" }, { "uri": "calibrated_cameras.json", "format": "application/opf-calibrated-cameras+json" }, { "uri": "some_additional_calib_data.json", "format": "application/ext-pix4d-myteam-myalgo-settings" } ] } ``` -------------------------------- ### Example OPF Input Cameras JSON Structure Source: https://github.com/pix4d/opf-spec/blob/main/docs/_sources/specification/input_cameras.md.txt Illustrates the structure for defining multiple camera sensors, including their optical properties, internal parameters (fisheye, affine, polynomial), and rig relative positions for multi-sensor setups. Each sensor specifies its ID, name, bands, image size, pixel size, and shutter type. ```json { "format": "application/opf-input-cameras+json", "version": "1.0", "sensors": [ { "id": 18493134, "name": "Parrot_Sequoia_4_0_1280x960", "bands": [ { "name": "Green", "weight": 1 } ], "image_size_px": [ 1280, 960 ], "pixel_size_um": 3.75, "internals": { "type": "fisheye", "principal_point_px": [ 640, 480 ], "affine": [ 1674.33, 0.0, 0.0, 1674.33 ], "is_symmetric_affine": true, "polynomial": [ 0.0, 1.0, 0.0152646, -0.161096 ], "is_p0_zero": true }, "shutter_type": "global" }, { "id": 21845677, "name": "Parrot_Sequoia_4_0_1280x960", "bands": [ { "name": "Red", "weight": 1 } ], "image_size_px": [ 1280, 960 ], "pixel_size_um": 3.75, "internals": { "type": "fisheye", "principal_point_px": [ 640, 480 ], "affine": [ 1674.33, 0.0, 0.0, 1674.33 ], "is_symmetric_affine": true, "polynomial": [ 0.0, 1.0, 0.0152646, -0.161096 ], "is_p0_zero": true }, "rig_relatives": { "rotation": { "angles_deg": [ 0, 0, 0 ], "sigmas_deg": [ 0.05, 0.05, 0.05 ] }, "translation": { "values_m": [ -0.015, 0.015, 0.0 ], "sigmas_m": [ 0.001, 0.001, 0.001 ] } }, "shutter_type": "global" }, { "id": 65728243, "name": "Parrot_AnafiThermal_1.9_298x224", "bands": [ { "name": "TIR", "weight": 1 } ], "image_size_px": [ 298, 224 ], "pixel_size_um": 1.9, "internals": { "type": "fisheye", "principal_point_px": [ 150, 112 ], "affine": [ 496.084717, 0.0, 0.0, 496.084717 ], "is_symmetric_affine": true, "polynomial": [ 0.0, 1.0, 0.0, 0.0 ], "is_p0_zero": true }, "rig_relatives": { "rotation": { "angles_deg": [ 0, 0, 0 ], "sigmas_deg": [ 0.05, 0.05, 0.05 ] }, "translation": { "values_m": [ 0.0, 0.0, 0.0 ], "sigmas_m": [ 0.001, 0.001, 0.001 ] } }, "shutter_type": "global" }, { "id": 86926181, "name": "Parrot_AnafiThermal_4.0_3264x2448", "bands": [ { "name": "Red", "weight": 0.2126 }, { "name": "Green", "weight": 0.7152 }, { "name": "Blue", "weight": 0.0722 } ] } ``` -------------------------------- ### JSON Example: Calibrated Control Points Source: https://github.com/pix4d/opf-spec/blob/main/docs/_sources/specification/control_points.md.txt Provides a concrete JSON example demonstrating the structure of the 'Calibrated control points' specification. This example includes two entries, 'gcp0' and 'mtp1', with their respective IDs and 3D coordinates. ```json { "format": "application/opf-calibrated-control-points+json", "version": "1.0", "points": [ { "id": "gcp0", "coordinates": [ 3959232, 116595, 384 ] }, { "id": "mtp1", "coordinates": [ 3959500, 116595, 423 ] } ] } ``` -------------------------------- ### Example OPF UID Generator Object Source: https://github.com/pix4d/opf-spec/blob/main/docs/specification/camera_list.html An example JSON object demonstrating the structure of a `uid_generator` entry within the OPF specification, showing vendor, name, scope, and version. ```json { "vendor": "opf", "name": "xmp", "scope": "global", "version": 1 } ``` -------------------------------- ### Example OPF Project JSON Structure Source: https://github.com/pix4d/opf-spec/blob/main/docs/specification/project.html A comprehensive JSON example demonstrating the structure of an OPF project file. It includes top-level metadata like version, format, ID, name, and description, along with details for the 'generator' and an array of 'items' representing various project components such as custom settings, camera lists, input cameras, and input control points, each with their associated resources and sources. ```JSON { "version": "1.0", "format": "application/opf-project+json", "id": "caa7754e-90dc-11ec-b909-0242ac120002", "name": "Example of a calibration project", "description": "Show an example of a calibration project", "generator": { "name": "PIX4Dmatic", "version": "1.41.0" }, "items": [ { "id": "1fbfd8dd-188c-45dc-955c-30eac64ad4d7", "type": "ext_pix4d_myteam_myalgo_settings", "resources": [ { "uri": "myalgo-settings.json", "format": "application/ext-pix4d-myteam-myalgo-settings" } ], "sources": [] }, { "id": "0bc95642-e37f-46df-a2c6-3ddd65881807", "type": "camera_list", "resources": [ { "uri": "camera-list.json", "format": "application/opf-camera-list+json" } ], "sources": [] }, { "id": "57608ca8-912d-4fee-b097-2648651474c4", "type": "input_cameras", "resources": [ { "uri": "input-cameras.json", "format": "application/opf-input-cameras+json" } ], "sources": [ { "id": "0bc95642-e37f-46df-a2c6-3ddd65881807", "type": "camera_list" } ] }, { "id": "dad66aa8-6e52-4d7c-8cec-c6fd9da2aae6", "type": "input_control_points", "resources": [ { "uri": "control_points/input-control-points.json", "format": "application/opf-input-control-points+json" } ], "sources": [ { "id": "0bc95642-e37f-46df-a2c6-3ddd65881807", "type": "camera_list" } ] } ] } ``` -------------------------------- ### Example OPF Sensor Configuration JSON Source: https://github.com/pix4d/opf-spec/blob/main/docs/specification/input_cameras.html Illustrates a complete JSON structure for defining multiple sensors within the OPF specification, including details like sensor ID, name, bands, image size, pixel size, internal camera parameters (fisheye type, principal point, affine, polynomial), shutter type, and rig relative transformations (rotation and translation) for multi-sensor setups. ```JSON { "format": "application.opf-input-cameras+json", "version": "1.0", "sensors": [ { "id": 18493134, "name": "Parrot_Sequoia_4_0_1280x960", "bands": [ { "name": "Green", "weight": 1 } ], "image_size_px": [ 1280, 960 ], "pixel_size_um": 3.75, "internals": { "type": "fisheye", "principal_point_px": [ 640, 480 ], "affine": [ 1674.33, 0.0, 0.0, 1674.33 ], "is_symmetric_affine": true, "polynomial": [ 0.0, 1.0, 0.0152646, -0.161096 ], "is_p0_zero": true }, "shutter_type": "global" }, { "id": 21845677, "name": "Parrot_Sequoia_4_0_1280x960", "bands": [ { "name": "Red", "weight": 1 } ], "image_size_px": [ 1280, 960 ], "pixel_size_um": 3.75, "internals": { "type": "fisheye", "principal_point_px": [ 640, 480 ], "affine": [ 1674.33, 0.0, 0.0, 1674.33 ], "is_symmetric_affine": true, "polynomial": [ 0.0, 1.0, 0.0152646, -0.161096 ], "is_p0_zero": true }, "rig_relatives": { "rotation": { "angles_deg": [ 0, 0, 0 ], "sigmas_deg": [ 0.05, 0.05, 0.05 ] }, "translation": { "values_m": [ -0.015, 0.015, 0.0 ], "sigmas_m": [ 0.001, 0.001, 0.001 ] } }, "shutter_type": "global" }, { "id": 65728243, "name": "Parrot_AnafiThermal_1.9_298x224", "bands": [ { "name": "TIR", "weight": 1 } ], "image_size_px": [ 298, 224 ], "pixel_size_um": 1.9, "internals": { "type": "fisheye", "principal_point_px": [ 150, 112 ], "affine": [ 496.084717, 0.0, 0.0, 496.084717 ], "is_symmetric_affine": true, "polynomial": [ 0.0, 1.0, 0.0, 0.0 ], "is_p0_zero": true }, "rig_relatives": { "rotation": { "angles_deg": [ 0, 0, 0 ], "sigmas_deg": [ 0.05 ] } } } ] } ``` -------------------------------- ### Example JSON for Projected Input Cameras Format Source: https://github.com/pix4d/opf-spec/blob/main/docs/specification/projected_input_cameras.html A complete JSON example demonstrating the `application/opf-projected-input-cameras+json` data structure. It includes multiple `sensors` with `id` and `rig_translation`, and `captures` with `id`, `geolocation` (position and sigmas), and `orientation` (angles_deg and sigmas_deg). ```JSON { "format": "application/opf-projected-input-cameras+json", "version": "1.0", "sensors": [ { "id": 21845677, "rig_translation": { "values": [ -0.015, 0.015, 0.0 ], "sigmas": [ 0.001, 0.001, 0.001 ] } }, { "id": 65728243, "rig_translation": { "values": [ 0.0, 0.0, 0.0 ], "sigmas": [ 0.001, 0.001, 0.001 ] } } ], "captures": [ { "id": 94334, "geolocation": { "position": [ 382.20304, 3.292843, 2.238429 ], "sigmas": [ 1.69, 1.69, 2.4 ] }, "orientation": { "angles_deg": [ 3.3432, -5.2849554, 9.345113 ], "sigmas_deg": [ 0.0134, 0.08482, 0.016747 ] } }, { "id": 78291034, "geolocation": { "position": [ 45.3949, 10.38429, 6.3892923 ], "sigmas": [ 1.69, 1.69, 2.4 ] }, "orientation": { "angles_deg": [ 2.23443, -5.2849554, 5.54335 ], "sigmas_deg": [ 0.0134, 0.08482, 0.016747 ] } }, { "id": 92840, "geolocation": { "position": [ 12.19394, 22.2048393, 11.193748 ], "sigmas": [ 1.28947, 1.2331, 2.1923 ] }, "orientation": { "angles_deg": [ -6.392785, 3.28575, 13.27483 ], "sigmas_deg": [ 0.0134, 0.08482, 0.016747 ] } } ] } ``` -------------------------------- ### Example JSON for Calibrated Cameras and Sensors Source: https://github.com/pix4d/opf-spec/blob/main/docs/_sources/specification/calibrated_cameras.md.txt This JSON snippet provides a complete example of the 'application/opf-calibrated-cameras+json' format. It defines a list of calibrated cameras, each with a unique ID, orientation, position, and a reference to a sensor ID. The 'sensors' array details the internal parameters for each sensor, including different types like 'fisheye' (with affine, polynomial, principal point) and 'perspective' (with focal length, radial/tangential distortion). Some sensors also include 'rig_relatives' for multi-camera setups. ```json { "format": "application/opf-calibrated-cameras+json", "version": "1.0", "cameras": [ { "id": 47292894, "orientation_deg": [ 3.3432, -5.2849554, 9.345113 ], "position": [ 483.054, 13.957, 28.12 ], "sensor_id": 18493134 }, { "id": 57282923, "orientation_deg": [ 2.35224, -4.4422, 9.03452 ], "position": [ 483.04, 13.972, 28.12 ], "sensor_id": 21845677 }, { "id": 28493939, "orientation_deg": [ 1.4753, 10.5839, -2.94832 ], "position": [ 243.054, 521.957, 31.12 ], "sensor_id": 57282113 } ], "sensors": [ { "id": 18493134, "internals": { "affine": [ 1676.296432, 0.0, 0.0, 1676.296432 ], "is_p0_zero": true, "is_symmetric_affine": true, "polynomial": [ 0.0, 1.0, 0.0152646, -0.161096 ], "principal_point_px": [ 634.45, 481.23 ], "type": "fisheye" } }, { "id": 21845677, "internals": { "affine": [ 1637.34211, 0.0, 0.0, 1637.34211 ], "is_p0_zero": true, "is_symmetric_affine": true, "polynomial": [ 0.0, 1.0, 0.0152646, -0.161096 ], "principal_point_px": [ 641.12, 479.65 ], "type": "fisheye" }, "rig_relatives": { "rotation_angles_deg": [ -0.456, 1.027483, 0.39229 ], "translation": [ -0.015, 0.015, 0.0 ] } }, { "id": 57282113, "internals": { "principal_point_px": [ 3001.23, 2011.2434 ], "focal_length_px": 5312.353, "radial_distortion": [ -0.01444223, 0.012321123, -2.13311e-05 ], "tangential_distortion": [ 0.001239402, 0.000432234 ], "type": "perspective" } } ] } ``` -------------------------------- ### Example: Calibrated Rig Relatives JSON Structure Source: https://github.com/pix4d/opf-spec/blob/main/docs/_sources/specification/auxiliary_objects.md.txt Illustrates the JSON structure for a calibrated rig relatives object, showing typical translation and rotation values. This example provides a concrete representation of the defined properties. ```json { "translation": [ -0.015, 0.015, 0.0 ], "rotation_angles_deg": [ 0, 0, 0 ] } ``` -------------------------------- ### Example JSON for Custom OPF Extension Settings Source: https://github.com/pix4d/opf-spec/blob/main/docs/_sources/specification/project.md.txt This JSON snippet illustrates the structure for a custom extension, `ext-pix4d-myteam-myalgo-settings+json`, within the Open Project Format. It includes standard fields like format and version, along with a hypothetical vendor-specific setting, demonstrating how custom data can be embedded. ```json { "format": "ext-pix4d-myteam-myalgo-settings+json", "version": "0.1", "threshold": "14.2" } ``` -------------------------------- ### Example JSON for Projected Input Cameras Source: https://github.com/pix4d/opf-spec/blob/main/docs/_sources/specification/projected_input_cameras.md.txt Illustrates the structure of the "application/opf-projected-input-cameras+json" format, showing multiple sensor and capture entries with their respective geolocation and orientation data. ```json { "format": "application/opf-projected-input-cameras+json", "version": "1.0", "sensors": [ { "id": 21845677, "rig_translation": { "values": [ -0.015, 0.015, 0.0 ], "sigmas": [ 0.001, 0.001, 0.001 ] } }, { "id": 65728243, "rig_translation": { "values": [ 0.0, 0.0, 0.0 ], "sigmas": [ 0.001, 0.001, 0.001 ] } } ], "captures": [ { "id": 94334, "geolocation": { "position": [ 382.20304, 3.292843, 2.238429 ], "sigmas": [ 1.69, 1.69, 2.4 ] }, "orientation": { "angles_deg": [ 3.3432, -5.2849554, 9.345113 ], "sigmas_deg": [ 0.0134, 0.08482, 0.016747 ] } }, { "id": 78291034, "geolocation": { "position": [ 45.3949, 10.38429, 6.3892923 ], "sigmas": [ 1.69, 1.69, 2.4 ] }, "orientation": { "angles_deg": [ 2.23443, -5.2849554, 5.54335 ], "sigmas_deg": [ 0.0134, 0.08482, 0.016747 ] } }, { "id": 92840, "geolocation": { "position": [ 12.19394, 22.2048393, 11.193748 ], "sigmas": [ 1.28947, 1.2331, 2.1923 ] }, "orientation": { "angles_deg": [ -6.392785, 3.28575, 13.27483 ], "sigmas_deg": [ 0.0134, 0.08482, 0.016747 ] } } ] } ``` -------------------------------- ### Example Input Control Points JSON Source: https://github.com/pix4d/opf-spec/blob/main/docs/specification/control_points.html An example JSON structure demonstrating the `application/opf-input-control-points+json` format. This snippet illustrates how Ground Control Points (GCPs) and Multi-Target Points (MTPs) are represented, including their geolocation, marks, and checkpoint status. ```JSON { "format": "application/opf-input-control-points+json", "version": "1.0", "gcps": [ { "id": "gcp0", "geolocation": { "crs": { "definition": "EPSG:4265+5214", "geoid_height": 123 }, "coordinates": [ 1, 2, 3 ], "sigmas": [ 5, 5, 10 ] }, "marks": [ { "camera_id": 10000000, "position_px": [ 458, 668 ], "accuracy": 1.0 }, { "camera_id": 20000000, "position_px": [ 458, 668 ], "accuracy": 10.0 }, { "camera_id": 30000000, "position_px": [ 458, 668 ], "accuracy": 20.0 } ], "is_checkpoint": true } ], "mtps": [ { "id": "mtp0", "marks": [ { "camera_id": 10000000, "position_px": [ 458, 668 ], "accuracy": 1.0 }, { "camera_id": 20000000, "position_px": [ 458, 668 ], "accuracy": 10.0 }, { "camera_id": 30000000, "position_px": [ 458, 668 ], "accuracy": 20.0 } ], "is_checkpoint": false } ] } ``` -------------------------------- ### Example JSON for Projected Rig Translation Source: https://github.com/pix4d/opf-spec/blob/main/docs/specification/auxiliary_objects.html Provides a JSON example for projected rig translation, showing values and sigmas in processing CRS units. ```JSON { "values": [ -0.015, 0.015, 0.0 ], "sigmas": [ 0.001, 0.001, 0.001 ] } ``` -------------------------------- ### Example OPF Camera List JSON Structure Source: https://github.com/pix4d/opf-spec/blob/main/docs/_sources/specification/camera_list.md.txt This JSON example illustrates a complete OPF camera list document. It showcases the integration of the `uid_generator` configuration and an array of `camera` objects, each containing its unique `id` and `uri`. This structure is used to define all cameras associated with a capture within the OPF specification. ```json { "format": "application/opf-camera-list+json", "version": "1.0", "uid_generator": { "vendor": "pix4d", "name": "image_content_hashing", "scope": "global", "version": 1 }, "cameras": [ { "id": 47292894, "uri": "IMG_160929_114101_0001_GRE.tif" }, { "id": 42727834, "uri": "IMG_03849021.tiff#page=0" }, { "id": 84736329, "uri": "IMG_03849021.jpg" }, { "id": 86930102, "uri": "file:///c:/data/images/DJI_09572.jpg" }, { "id": 28493939, "uri": "Image_09573.jpg" }, { "id": 28493939, "uri": "Image_09573.jpg" }, { "id": 28436394, "uri": "DepthMap_09573.tiff" }, { "id": 92742343, "uri": "Confidence_09573.tiff" } ] } ``` -------------------------------- ### Example JSON for Calibration Project Item Source: https://github.com/pix4d/opf-spec/blob/main/docs/specification/calibration.html This JSON snippet demonstrates the structure of a 'calibration' project item, showing its unique identifier, type, and a list of associated source items with their respective IDs and types. It illustrates how different data sources like input cameras and control points are referenced within a calibration item. ```JSON { "id": "6e12d73b-c8c0-4059-9c13-0a5ff2afaed7", "type": "calibration", "sources": [ { "id": "1fbfd8dd-188c-45dc-955c-30eac64ad4d7", "type": "ext_pix4d_myteam_myalgo_settings" }, { "id": "57608ca8-912d-4fee-b097-2648651474c4", "type": "input_cameras" }, { "id": "dad66aa8-6e52-4d7c-8cec-c6fd9da2aae6", "type": "input_control_points" }, { "id": "54b313cf-9a5d-4bd7-8f51-b06577dedad1", "type": "projected_input_cameras" } ] } ``` -------------------------------- ### Geolocation Object Example (WKT) Source: https://github.com/pix4d/opf-spec/blob/main/docs/_sources/specification/auxiliary_objects.md.txt Example JSON payload for a Geolocation object using a WKT string for the Coordinate Reference System definition. ```json { "crs": { "definition": "GEOGCRS[\"WGS 84\",ENSEMBLE[\"World Geodetic System 1984 ensemble\",MEMBER[\"World Geodetic System 1984 (Transit)\"],MEMBER[\"World Geodetic System 1984 (G730)\"],MEMBER[\"World Geodetic System 1984 (G873)\"],MEMBER[\"World Geodetic System 1984 (G1150)\"],MEMBER[\"World Geodetic System 1984 (G1674)\"],MEMBER[\"World Geodetic System 1984 (G1762)\"],MEMBER[\"World Geodetic System 1984 (G2139)\"],ELLIPSOID[\"WGS 84\",6378137,298.257223563,LENGTHUNIT[\"metre\",1]],ENSEMBLEACCURACY[2.0]],PRIMEM[\"Greenwich\",0,ANGLEUNIT[\"degree\",0.0174532925199433]],CS[ellipsoidal,3],AXIS[\"geodetic latitude (Lat)\",north,ORDER[1],ANGLEUNIT[\"degree\",0.0174532925199433]],AXIS[\"geodetic longitude (Lon)\",east,ORDER[2],ANGLEUNIT[\"degree\",0.0174532925199433]],AXIS[\"ellipsoidal height (h)\",up,ORDER[3],LENGTHUNIT[\"metre\",1]],USAGE[SCOPE[\"Geodesy. Navigation and positioning using GPS satellite system.\"],AREA[\"World\"],BBOX[-90,-180,90,180]],ID[\"EPSG\",4979]]" }, "coordinates": [ 35.6762, 139.6503, 40 ], "sigmas": [ 0.02, 0.02, 0.05 ] } ``` -------------------------------- ### Example OPF Camera List with UID Generator Source: https://github.com/pix4d/opf-spec/blob/main/docs/specification/camera_list.html Illustrates a complete OPF camera list JSON structure, including the 'uid_generator' configuration and a list of camera entries with their unique IDs and URIs. This example demonstrates a 'global' scope UID generator from 'pix4d'. ```JSON { "format": "application/opf-camera-list+json", "version": "1.0", "uid_generator": { "vendor": "pix4d", "name": "image_content_hashing", "scope": "global", "version": 1 }, "cameras": [ { "id": 47292894, "uri": "IMG_160929_114101_0001_GRE.tif" }, { "id": 42727834, "uri": "IMG_03849021.tiff#page=0" }, { "id": 84736329, "uri": "IMG_03849021.jpg" }, { "id": 86930102, "uri": "file:///c:/data/images/DJI_09572.jpg" }, { "id": 28493939, "uri": "Image_09573.jpg" }, { "id": 28493939, "uri": "Image_09573.jpg" }, { "id": 28436394, "uri": "DepthMap_09573.tiff" }, { "id": 92742343, "uri": "Confidence_09573.tiff" } ] } ``` -------------------------------- ### Example OPF Constraints JSON Payload Source: https://github.com/pix4d/opf-spec/blob/main/docs/specification/control_points.html Illustrates a complete JSON payload for OPF constraints, including both scale and orientation constraint definitions. This example demonstrates the structure and required fields for submitting constraint data. ```JSON { "format": "application/opf-constraints+json", "version": "1.0", "scale_constraints": [ { "id": "sc1", "id_from": "gcp0", "id_to": "gcp1", "distance": 1.23, "sigma": 0.1 } ], "orientation_constraints": [ { "id": "oc1", "id_from": "gcp0", "id_to": "gcp1", "unit_vector": [ 0, 0, 1 ], "sigma_deg": 1.0 } ] } ``` -------------------------------- ### Example OPF Extension JSON Format Source: https://github.com/pix4d/opf-spec/blob/main/docs/specification/project.html Illustrates a hypothetical JSON structure for an extension's settings, demonstrating the format and content of a custom resource type. ```JSON { "format": "ext-pix4d-myteam-myalgo-settings+json", "version": "0.1", "threshold": "14.2" } ``` -------------------------------- ### CRS Object JSON Examples Source: https://github.com/pix4d/opf-spec/blob/main/docs/specification/auxiliary_objects.html Provides various JSON examples demonstrating how to instantiate a CRS object using different 'definition' formats, including simple EPSG codes, complex WKT strings, and combinations with 'geoid_height'. ```JSON { "definition": "EPSG:4326" } ``` ```JSON { "definition": "GEOGCRS[\"NAD83(2011)\",DATUM[\"NAD83 (National Spatial Reference System 2011)\",ELLIPSOID[\"GRS 1980\",6378137,298.257222101,LENGTHUNIT[\"metre\",1]]],PRIMEM[\"Greenwich\",0,ANGLEUNIT[\"degree\",0.0174532925199433]]],CS[ellipsoidal,3],AXIS[\"geodetic latitude (Lat)\",north,ORDER[1],ANGLEUNIT[\"degree\",0.0174532925199433]],AXIS[\"geodetic longitude (Lon)\",east,ORDER[2],ANGLEUNIT[\"degree\",0.0174532925199433]],AXIS[\"ellipsoidal height (h)\",up,ORDER[3],LENGTHUNIT[\"metre\",1]]],USAGE[SCOPE[\"Geodesy.\"],BBOX[14.92,167.65,74.71,-63.88]],ID[\"EPSG\",6319]]" } ``` ```JSON { "definition": "EPSG:4170+ESRI:115807", "geoid_height": 47.12 } ``` -------------------------------- ### OPF Specification JSON Structure Example Source: https://github.com/pix4d/opf-spec/blob/main/docs/_sources/specification/point_cloud.md.txt An example of the JSON data structure used in the OPF specification, showcasing required and used extensions, material properties, mesh attributes (including custom and matching attributes), and node transformations. This structure defines how 3D model data and its associated metadata are organized. ```APIDOC { "asset":{ "generator":"Pix4D OPF Exporter", "version":"1.0" }, "buffers":[ { "byteLength":16, "uri":"flags.bin" } ], "extensionsRequired":[ "KHR_materials_unlit" ], "extensionsUsed":[ "KHR_materials_unlit", "OPF_asset_version", "OPF_mesh_primitive_custom_attributes", "OPF_mesh_primitive_matches", "OPF_mesh_primitive_partitioning" ], "materials":[ { "extensions":{ "KHR_materials_unlit":{ } } } ], "meshes":[ { "primitives":[ { "attributes":{ "COLOR_0":2, "NORMAL":1, "POSITION":0 }, "extensions":{ "OPF_mesh_primitive_custom_attributes":{ "attributes":{ "class":13, "flag":15, "tag":14 } }, "OPF_mesh_primitive_matches":{ "cameraIds":3, "cameraUids":[ 0, 1, 2, 3 ], "imagePoints":{ "depths":8, "featureIds":6, "pixelCoordinates":5, "scales":7 }, "pointIndexRanges":4 }, "OPF_mesh_primitive_partitioning":{ "boundingBox":{ "max":[ 1.0, 1.0, 1.0 ], "min":[ -1.0, -1.0, -1.0 ] }, "childrenIndexing":10, "nodeAttributes":{ "parent":12 }, "nodeIndices":9, "nodeLevelIndexing":[ 0, 1, 9 ], "perNodeChunkIndexRanges":11 } }, "material":0, "mode":0 } ] } ], "nodes":[ { "matrix":[ 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0 ], "mesh":0 } ], "scene":0, "scenes":[ { "nodes":[ 0 ] } ] } ``` -------------------------------- ### Example JSON for Input Control Points Source: https://github.com/pix4d/opf-spec/blob/main/docs/_sources/specification/control_points.md.txt Illustrates the structure of the `application/opf-input-control-points+json` format, including ground control points (GCPs) and manual tie points (MTPs) with their geolocation, marks, and accuracy. ```json { "format": "application/opf-input-control-points+json", "version": "1.0", "gcps": [ { "id": "gcp0", "geolocation": { "crs": { "definition": "EPSG:4265+5214", "geoid_height": 123 }, "coordinates": [ 1, 2, 3 ], "sigmas": [ 5, 5, 10 ] }, "marks": [ { "camera_id": 10000000, "position_px": [ 458, 668 ], "accuracy": 1.0 }, { "camera_id": 20000000, "position_px": [ 458, 668 ], "accuracy": 10.0 }, { "camera_id": 30000000, "position_px": [ 458, 668 ], "accuracy": 20.0 } ], "is_checkpoint": true } ], "mtps": [ { "id": "mtp0", "marks": [ { "camera_id": 10000000, "position_px": [ 458, 668 ], "accuracy": 1.0 }, { "camera_id": 20000000, "position_px": [ 458, 668 ], "accuracy": 10.0 }, { "camera_id": 30000000, "position_px": [ 458, 668 ], "accuracy": 20.0 } ], "is_checkpoint": false } ] } ```