Release notes

pix4dvortex releases follow semantic versioning.

Release 2024.09 - semantic version 2.9.0

What’s new

  • New Geoid models:

    • Austria: “Austrian Geoid 2008 | GHA” for EPSG:5778

    • New Zealand:

      • EPSG:5759, “NZVD2016 | Auckland 1946”

      • EPSG:5760, “NZVD2016 | Bluff 1955”

      • EPSG:4458, “NZVD2016 | Dunedin-Bluff 1960”

      • EPSG:5761, “NZVD2016 | Dunedin 1958”

      • EPSG:5762, “NZVD2016 | Gisborne 1926”

      • EPSG:5763, “NZVD2016 | Lyttelton 1937”

      • EPSG:5764, “NZVD2016 | Moturiki 1953”

      • EPSG:5765, “NZVD2016 | Napier 1962”

      • EPSG:5766, “NZVD2016 | Nelson 1955”

      • EPSG:5767, “NZVD2016 | One Tree Point 1964”

      • EPSG:5772, “NZVD2016 | Stewart Island 1977”

      • EPSG:5769, “NZVD2016 | Taranaki 1970”

      • EPSG:5770, “NZVD2016 | Wellington 1953”

  • Camera support:

    • Fix parameter for MicaSense Altum-PT.

    • Changed DJI ZH20T, DJI ZH20T, DJI FC6310R, DJI FC6540, Mavic 2 Enterprise Advanced to default to ellipsoidal vertical CRS.

  • Additional configuration parameters can be provided to the GeoTIFF writer through io.geotiff.Settings.extra.

  • Expose complete OPF compatible camera classes in dmodel module:

    • dmodel.InputCameras

    • dmodel.ProjectedCameras

    • dmodel.CalibratedCameras

  • Added to_dict and from_dict conversion methods to the following dmodel classes:

    • dmodel.CRS

    • dmodel.CalibratedCamera

    • dmodel.CalibratedCameras

    • dmodel.CalibratedControlPoint

    • dmodel.CalibratedControlPoints

    • dmodel.CalibratedITP

    • dmodel.CalibratedIntersectionTiePoints

    • dmodel.CalibratedSensor

    • dmodel.Camera

    • dmodel.CameraList

    • dmodel.CaptureElement

    • dmodel.FisheyeInternals

    • dmodel.GPSBias

    • dmodel.Geolocation

    • dmodel.ITP

    • dmodel.InputCameras

    • dmodel.InputControlPoints

    • dmodel.IntersectionTiePoints

    • dmodel.PerspectiveInternals

    • dmodel.ProjectedCameras

    • dmodel.ProjectedCapture

    • dmodel.ProjectedControlPoints

    • dmodel.ProjectedSensor

    • dmodel.SceneRefFrame

    • dmodel.SensorElement

    • dmodel.SegmentGraphs2D

    • dmodel.SphericalInternals

API changes

  • Input camera creation functions cameras.make_input_cameras() and _multispec._make_input_cameras_with_radiometric_input() require session login.

  • Added pan_sharpening flag to ortho.Settings.

  • Type annotation syntax changed to use typing.Annotated. For example, shift: List[float[3]] changed to shift: Annotated[list[float], FixedSize(3)].

  • Optional and deprecated gsd parameter in io.geotiff functions is ignored. It is kept for API backwards compatibility only.

  • Added new setting use_optimized_internals in calib.ReoptSettings.

  • Added new setting use_itps in calib.Settings.

  • Added new function calib.analytics.compute_gsd_per_sensor().

  • Added new optional parameter strategy to calib.analytics.compute_gsd() with default min, this improves the GSD computation for projects which combine cameras with different resolution. The previous behavior is median.

  • Added setting dense.Settings.camera_filter with default RigReferenceCameras, which improves the densification for rig projects; the previous behaviour is NoFilter.

Bug Fixes

  • Suppress spurious exiv2 log messages, previously streamed to stdout.

  • Fix issue which resulted in cameras.InputCameras geolocation being lost in OPF serialization when set as external geotags.

Internal release 2.8.0

What’s new

  • Added support for the following camera models:

    • Mavic 2 Enterprise Advanced.

    • DJI FC3411 and FC7303.

    • Mavic 3M M3M 12.3 5280x3956.

  • Changed shutter type of camera model DJI FC220 to rolling.

Internal release 2.7.0

What’s new

  • Processing interruption mechanism added to most core processing algorithms. See API changes for more information.

Bug Fixes

  • Fixed issue which resulted in mesh texture generation occasionally taking orders of magnitude longer than expected.

API changes

  • Optional processing interruption parameter stop_function added to most core processing algorithms. The parameter is a callable that returns True if the processing is to be interrupted and False otherwise. A new exception type proc.StopProcessing is raised on processing interruption. The changes are backwards compatible. The processing functions affected are:

    • calib.calibrate()

    • calib.reoptimize()

    • dense.densification()

    • depth.gen_pcl()

    • depth.pcl_merge()

    • dsm.gen_tiled_dsm()

    • dsm.gen_tiled_dtm()

    • mesh.gen_mesh_geometry()

    • mesh.gen_mesh_texture()

    • mesh.gen_textured_mesh_lod()

    • ortho.gen_tiled_orthomosaic()

    • ortho._gen_tiled_orthomosaic_reflectance_map()

Release 2024.04 - semantic version 2.6.0

What’s new

  • Support for new camera model DJI M3T.

  • Change default vertical GPS CRS for (non-legacy) generic camera models from EGM96 to ellipsoidal.

  • New Geoid models:

    • Singapore SGeoid09 for EPSG:6916 “SHD height”.

    • Czech CR-2005 for EPSG:8357 “Baltic 1957 height”.

    • Portuguese GeodPT08 for EPSG:5780 “Cascais height”.

    • Corsica RAC23 for EPSG:5721 “NGF-IGN78 height”.

  • Extent of “CGVD28 height” increased to cover Newfoundland, Canada.

  • Updated model files for Danish geoid model DVR90.

  • Significantly improved calibration performance for larger projects on platforms with Intel processors.

Bug fixes

  • Issue which prevented exporting SLPK point clouds with io.slpk.write_pcl() when the working directory name contained non-ASCII characters.

  • cameras.GeoTag position accuracy units in string representation: tag LAT and LON accuracies as meters. Previously these were incorrectly tagged as degrees.

  • Issue which prevented generating pcl.PointCloud objects when using non-ASCII working directories (Windows only).

  • Fixed OBJ mesh export to files with paths containing non-ASCII characters.

  • Import missing pix4dvortex.io submodules geotiff and las into parent submodule. This allows to access them from the imported submodule, i.e. from pix4dvortex import io; io.geotiff; io.las. With this change, all io submodules (i.e. cesium, geotiff, las, obj, slpk) are accessible in the same manner.

  • Fix issue which prevented serializing point clouds to LAS/LAZ if the position data contained NaN values. These data are now excluded from the serialization.

  • Align cameras.DepthConfidence and cameras.DepthConfidenceInfo default values with each other and with expected values from Catch:

    • min = 0

    • max = 2

    • threshold = 1

  • Fix issue which resulted in depth pointcloud generation hanging indefinitely when depth and depth confidence data contained out of range values. The faulty entries are effectively ignored by assigning special values to them.

Internal release 2.5.0

What’s new

  • pix4dvortex.io.las.write_pcl() sets “pix4d-vortex-<version>” in the saved LAS file “System Identifier” metadata.

  • Public classes cameras.DepthInfo and cameras.DepthConfidenceInfo to optionally pass depth file information to cameras.make_input_cameras().

  • Improve performance for DSM IDW method.

  • Improve mesh texturing of projects with cameras coming from terrestrial and aerial sensors.

API changes

  • io.geotiff.write_geotiff() and io.geotiff.write_geotiff_tile() parameters gsd have been deprecated. They are kept for backwards compatibility, but It is recommended not to use them.

  • io.geotiff.write_geotiff() parameter gsd has been made optional. The correct value is internally taken from the input tiles.

  • io.geotiff.write_geotiff() raises ValueError if the tile resolutions are not all the same.

Bug fixes

  • Fixed issue that prevented processing of data samples obtained with fisheye lens cameras.

  • Scale projected camera sigma according to UoM. Previously, no scaling was applied (corresponding to UoM of meters).

  • Fix empty pixels when using DSM triangulation method.

Internal release 2.4.1

Bug fixes

  • Fixed edge artifacts in DSM tiles generated with the IDW method.

Internal release 2.4.0

What’s new

  • Support for new camera model Skydio X10.

  • Add a table of supported geoid models in documentation.

  • Faster mesh texturing (from ~20% faster, depending on data).

  • Depth processing use lower peak disk usage and the temporary files are removed immediately after use.

  • Expose coordsys.BaseToCanonCnv and coordsys.CanonToBaseCnv. These are convertors between the OPF base and translated canonical reference systems.

  • New __str__ methods in geom.Polygon2D and geom.Roi2D. These produce OGC geometry WKT strings and may be useful for inspecting the contents of geometry objects.

Bug fixes

  • Potential unexpected program termination.

  • Issue that resulted in cameras.make_input_cameras() failures when using depth files with non-ASCII paths on Windows.

  • Issue that resulted in in-place modifications of dmodel.GCP.geolocation.crs not being applied.

Internal release 2.3.0

What’s new

  • New geoid models:

    • GEOIDE-Ar16 (EPSG:5340+9255) “SRVN16 height”.

    • PL-geoid-2021 (EPSG:9702+9651) “EVRF2007-PL height”.

  • Enhancement to geoid model CGG2000/HTv2.0.

  • coordsys.SpatialReference.is_engineering() method.

  • Improvements in pix4dvortex.io.cesium API documentation.

  • Improvements in pix4dvortex.io.las API documentation.

  • New calibration setting calib.Settings.use_gcp_srs to enforce the usage of the GCP coordinate reference system to set the scene reference frame of the calibration. When this option is used, the CRS of all GCPs must be the same Cartesian isometric system. In particular, this enables the usage of GCPs in 3D engineering systems, which was not possible before.

Bug fixes

  • Calibration crashes resulting from faulty catch inputs.

  • Inconsistent behaviour in pix4dvortex.io.las.write_pcl() where in some cases the file extension and format (LAS/LAZ) did not match. This has been fixed by making the compress parameter have effect only when the format cannot be inferred from the file extension.

Release 2023.09 - semantic version 2.2.0

What’s new

  • New geoid models:

    • FIN2000 (EPSG:4258+5717) “N60 height”.

    • FIN2005N00 (EPSG:4258+3900) “N2000 height”.

    • LV14 (EPSG:4661+7700) “Latvia 2000 height”.

    • TWGEOID2018h (EPSG:8904) “TWVD 2001 height”.

  • Support for new camera models:

    • MicaSense Altum-PT.

    • MicaSense RedEdge-P.

  • Corrected and improved API documentation for cameras.GeoTag and related classes.

  • Improved DSM generation performance and quality.

  • cameras.make_input_cameras() reads GPS time for following camera models:

    • Parrot Sequoia.

    • SenseFly S.O.D.A.

    • SenseFly AeriaX.

    • Sony DSCWX220.

    • Wingtra RGB61.

    • Xacti CX GB100.

  • Improved densification performance up to 5% when using perspective cameras.

  • Improved mesh texturing by reducing seams visibility and improving texture segmentation.

  • cameras.GeoTag can be initialized from optional dmodel.GeoLocation and dmodel.YawPitchRoll OPF objects.

  • Added OPF Yaw-Pitch-Roll Orientation as dmodel.YawPitchRoll.

Bug fixes

  • Sporadic tiled orthomosaic generation failures due to incompatible DSM and ortho tile sizes.

  • Various minor quality and performance issues in ortho.gen_tiled_orthomosaic().

  • cameras.make_input_cameras() raises ValueError and logs DUPLICATE_IMAGE as failure reason. Previously the failure was erroneously logged as rig related.

  • Fix very long processing times on some cases of planar meshes in mesh texturing.

  • Exception resulting from ortho.gen_tiled_orthomosaic() failure due to a color balance error had incorrect message “Unknown error”. This has been replaced by “Color balance error”.

  • Loading OPF objects with CRS user input description fields such as "EPSG:2056+5773" instead of full WKT strings was leading to run time errors in some situations.

  • Removed erroneously exposed and problematic option coordsys.WktExportOptions.BIND_TO_WGS84.

Internal release 2.1.1

What’s new

  • Improvements in documentation.

Bug fixes

  • Fixed a regression in LAS 1.2 serialization of site localized point clouds (i.e. with CRS DERIVEDPROJCRS), which resulted in an exception being raised. The previous behaviour of generating the LAS file with inconsistent CRS information has been restored. Strictly speaking this is not a bug fix, since the regression was simply applying stricter correctness criteria.

Release 2023.06 - semantic version 2.1.0

What’s new

  • Improvements in documentation.

  • Windows GPU support upgraded to CUDA 11.7 compatible drivers.

  • Camera Support: ShareUAV 202S Pro.

  • Camera Support: WINGTRA RGB61_FE24mmF2.8G_24.0_9504x6336.

  • Camera Support: DJI M3M_4.3_2592x1944.

  • Slovenian geoid model SLO-VRP2016/Koper.

  • German geoid model GCG2016.

  • Support for NADCON5 grid files for USA. This may slightly change transformations in the USA.

  • Stability and performance improvements in GPU enhanced orthomosaic generation.

API changes

  • Type of mask paths in the mask map parameters of mesh.gen_mesh_geometry() and dense.densification() changed from str to os.PathLike. This change is backwards compatible.

  • Type of mask paths in the mask map returned by skyseg.gen_segment_masks() changed from str to pathlib.Path.

  • Type of output directory parameter of skyseg.gen_segment_masks() changed from str to os.PathLike. This change is backwards compatible.

  • pix4dvortex.io function parameters representing paths changed from str to os.PathLike. This change is backwards compatible.

  • pix4dvortex.proc.Resources.work_dir property is now represented as os.PathLike instead of str on set, which is backward compatible, and as pathlib.Path instead of str on get.

  • pix4dvortex.dmodel.io function parameters representing paths changed from str to os.PathLike. This change is backwards compatible.

Bug fixes

  • Fixed a bug in site calibration by which calibrations with big coordinates could end up with the site system up-side down.

  • Failure to run pix4dvortex.transform.transform() for point clouds when the supplied working directory does not exist.

Release 2023.05 - semantic version 2.0.0

What’s new

This is the initial release of the 2nd generation PIX4Dengine SDK. For the feature content refer to the latest feature list on the PIX4Dengine product page or contact the PIX4D sales team.