A Version Control System for Point Clouds
Abstract
:1. Introduction
2. Previous Works
3. Version Control Foundations
4. Our Approach to Point Cloud Version Control
- Modifications to point clouds can be made from the same software that uses the VCS (managed modifications) or from external third-party tools (unmanaged modifications). The difference is that with an integrated tool, the nature of the changes that occur at each point are always known, while with third-party tools, it is necessary to use a difference calculation algorithm for inferring change information (Section 4.1). This is especially important for the coordinates of the points. If there is any unmanaged modification in them from a third-party tool, it is impossible to know if a point has moved in space. The consequence in the VCS is that a point deletion is recorded, followed by the creation of a new one (when actually they are the same point). The only drawback is the loss of metadata associated with the change operation for documentation purposes. Moreover, version delta data tend to compress a bit less. This is explained in Section 4.3.
- Given a point with multiple attributes, it is considered to have changed when any of its attributes or its position have also changed. As explained above, the 3D coordinates of the point cannot be considered when performing unmanaged operations; that is, when third-party software has been used.
- There are two options for working with deleted points: (a) mark the points as deleted and keep them, and (b) actually delete the points. The LAZ format used in the prototype allows points to be marked as deleted, so our system offers both options. It should be noted that with the proposed VCS, deleted points can be selectively recovered from previous versions and merged with the latest version. This is a special operation that is not available in conventional VCSs since it uses point-cloud-specific semantics. It is always more efficient to effectively delete the points (this is the option used in the tests) since otherwise, in successive versions, they must be processed and stored.
- To calculate the differences (delta) between two point clouds, the file format used must preserve the order of the points since it is necessary to reference them by their indices in external metadata files.
- The latest version of each dataset should be ready for direct use. This implies that changes must be stored not as increments over the previous version but as decrements over the next version. This affects the data that are stored for the description of each delta, as well as the rollback algorithm (see Figure 3).
4.1. Calculation of Point-Level Cloud Differences
- Points in A that are not in B. This implies that those points have been removed.
- Points in B that are not in A. This implies that those points have been created or loaded.
- Points in A that are also in B, but with some attributes with a different value. This implies that the properties of those points have been modified.
- Points in A that are also in B, with all their attributes unchanged. This implies that those points have not been edited and are exactly the same as before.
4.2. Rollback Data Storage
4.3. Rollback Command Data Compression Algorithm
- Point strip restore command. Bits 27 to 30 (4 bits) of the first 32-bit code are set to the value 1111, leaving the first 27 bits available to indicate an index sequence length code; that is, the length of a point strip. A second 32-bit code stores the index of the first point of the strip to be restored. The maximum length of a point strip is approximately 134 million points. If a larger strip is detected, it will be divided into several consecutive ones with their respective restore commands.
- Single point restore command. The first 31 bits of the first and only 32-bit code directly specify the index of the point to restore. Bits 27 to 30 (4 bits) cannot contain the value 1111, as this would be indicative of a point strip restore command. The highest value allowed for these bits is 1110, which together with the rest of the bits of the 31-bit code, allows an indexing range of up to approximately 2 billion points, which, logically, will be the maximum number of points for each point cloud that the VCS can manage.
4.4. Managed Editing Operations
- Add points. New points are added to a cloud or dataset. In this case, the new points will have consecutive indices following the indices of the pre-existing points. This produces a single strip of unmodified points and a single strip of new points, so the rollback command data will be a few bytes in size.
- Delete points. A selection of points is removed from the current version of the point cloud or dataset. In this case, the main advantage is that the point cloud comparison algorithm is not needed to locate the deleted points. For the resulting cloud version, the points will be compacted into the new array and the indices will change. However, the new index for each point in the resulting cloud is known.
- Change points’ attributes. The attributes of a selection of points are changed. In this case, it is not necessary to use the point cloud comparison algorithm either. In addition, it is known in advance that there are no changes in the indices of the points.
- Sort points. Points are reordered in the array in memory without altering their coordinates or their attributes. However, the indices change and must be recorded in an RCMD. The reordering of points can be performed by various criteria. The most relevant is ordering points in 3D to increase compression with formats such as LAZ, which take advantage of spatial coherence to perform a coordinates delta compression. The relative coordinates of a given point with respect to the previous one (in 3D space) will have smaller magnitudes and therefore a lower entropy, which increases the efficiency of the compressor. Sorting 3D points is usually conducted using Hilbert or Morton space filling curves using a spatial data structure, such as quadtree or octree. Logically, reordering with 3D spatial criteria entails a change in the indices of the points in the array where they are stored, which must be recorded in the RCMD.
4.5. Unmanaged Editing Operations
4.6. The Undo/Redo Stack
5. Results and Discussion
5.1. A-RLE Algorithm
5.2. Overall VCS Performance
6. Conclusions and Future Work
Author Contributions
Funding
Data Availability Statement
Conflicts of Interest
References
- Spinellis, D. Git. IEEE Softw. 2012, 29, 100–101. [Google Scholar] [CrossRef]
- Kart—Distributed Version-Control for Geospatial and Tabular Data. Available online: https://kartproject.org/ (accessed on 2 September 2023).
- Poux, F. The Smart Point Cloud: Structuring 3D Intelligent Point Data. Ph.D. Thesis, Université de Liège, Liège, Belgique, 2019. [Google Scholar] [CrossRef]
- Bräunl, T. Lidar Sensors. In Robot Adventures in Python and C; Springer International Publishing: Cham, Switzerland, 2020; pp. 47–51. [Google Scholar]
- Deng, X.; Liu, P.; Liu, X.; Wang, R.; Zhang, Y.; He, J.; Yao, Y. Geospatial Big Data: New Paradigm of Remote Sensing Applications. IEEE J. Sel. Top. Appl. Earth Obs. Remote Sens. 2019, 12, 3841–3851. [Google Scholar] [CrossRef]
- Evans, M.R.; Oliver, D.; Zhou, X.; Shekhar, S. Spatial Big Data. Case studies on volume, velocity, and varitety. In Big Data: Techniques and Technologies in Geoinformatics; CRC Press: Boca Raton, FL, USA, 2014. [Google Scholar]
- Lee, J.G.; Kang, M. Geospatial Big Data: Challenges and Opportunities. Big Data Res. 2015, 2, 74–81. [Google Scholar] [CrossRef]
- Pääkkönen, P.; Pakkala, D. Reference Architecture and Classification of Technologies, Products and Services for Big Data Systems. Big Data Res. 2015, 2, 166–186. [Google Scholar] [CrossRef]
- Boehler, W.; Marbs, A.; Bordas, V. OGC Testbed-14: Point Cloud Data Handling Engineering Report; Technical Report, I3mainz; Institute for Spatial Information and Surveying Technology: Mainz, Germany, 2018. [Google Scholar]
- Schutz, M.; Krosl, K.; Wimmer, M. Real-Time Continuous Level of Detail Rendering of Point Clouds. In Proceedings of the IEEE VR 2019, Osaka, Japan, 23–27 March 2019; pp. 103–110. [Google Scholar]
- Bohak, C.; Slemenik, M.; Kordež, J.; Marolt, M. Aerial LiDAR Data Augmentation for Direct Point-Cloud Visualisation. Sensors 2020, 20, 2089. [Google Scholar] [CrossRef] [PubMed]
- Guiotte, F.; Pham, M.T.; Dambreville, R.; Corpetti, T.; Lefèvre, S. Semantic Segmentation of LiDAR Points Clouds: Rasterization Beyond Digital Elevation Models. IEEE Geosci. Remote Sens. Lett. 2020, 17, 2016–2019. [Google Scholar] [CrossRef]
- Xie, Y.; Tian, J.; Zhu, X.X. Linking Points With Labels in 3D: A Review of Point Cloud Semantic Segmentation. IEEE Geosci. Remote Sens. Mag. 2020, 8, 38–59. [Google Scholar] [CrossRef]
- Mongus, D.; Žalik, B. Parameter-free ground filtering of LiDAR data for automatic DTM generation. ISPRS J. Photogramm. Remote Sens. 2012, 67, 1–12. [Google Scholar] [CrossRef]
- Cen, J.; Yun, P.; Zhang, S.; Cai, J.; Luan, D.; Wang, M.Y.; Liu, M.; Tang, M. Open-world Semantic Segmentation for LIDAR Point Clouds. arXiv 2022, arXiv:2207.01452. [Google Scholar]
- Zolkifli, N.N.; Ngah, A.; Deraman, A. Version control system: A review. Procedia Comput. Sci. 2018, 135, 408–415. [Google Scholar] [CrossRef]
- Ruparelia, N.B. The history of version control. ACM Sigsoft Softw. Eng. Notes 2010, 35, 5–9. [Google Scholar] [CrossRef]
- Swierstra, W.; Löh, A. The semantics of version control. In Proceedings of the 2014 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software, Portland, OR, USA, 20–24 October 2014; pp. 43–54. [Google Scholar] [CrossRef]
- Nizamuddin, N.; Salah, K.; Azad, M.A.; Arshad, J.; Rehman, M. Decentralized document version control using ethereum blockchain and IPFS. Comput. Electr. Eng. 2019, 76, 183–197. [Google Scholar] [CrossRef]
- Firmenich, B.; Koch, C.; Richter, T.; Beer, D.G. Versioning structured object sets using text based Version Control Systems. In Proceedings of the 22nd CIB-W78, Melbourne, Australia, 27–30 June 2022. [Google Scholar]
- Tichy, W.F. RCS—A system for version control. Softw. Pract. Exp. 1985, 15, 637–654. [Google Scholar] [CrossRef]
- Collins-Sussman, B.; Fitzpatrick, B.W.; Pilato, C.M. Version Control with Subversion; O’Reilly, California: St. Mountain View, CA, USA, 2007. [Google Scholar]
- Kuryazov, D.; Winter, A.; Reussner, R. Collaborative Modeling Enabled By Version Control. In Proceedings of the Modellierung 2018; Schaefer, I., Karagiannis, D., Vogelsang, A., Méndez, D., Seidl, C., Eds.; Gesellschaft für Informatik e.V.: Bonn, Germany, 2018; pp. 183–198. [Google Scholar]
- Doboš, J.; Mitra, N.J.; Steed, A. 3D Timeline: Reverse engineering of a part-based provenance from consecutive 3D models: 3D Timeline: Reverse engineering of a part-based provenance from consecutive 3D models. Comput. Graph. Forum 2014, 33, 135–144. [Google Scholar] [CrossRef]
- Khudyakov, P.Y.; Kisel’nikov, A.Y.; Startcev, I.; Kovalev, A. Version control system of CAD documents and PLC projects. J. Phys. Conf. Ser. 2018, 1015, 042020. [Google Scholar] [CrossRef]
- Esser, S.; Vilgertshofer, S.; Borrmann, A. Graph-based version control for asynchronous BIM collaboration. Adv. Eng. Inform. 2022, 53, 101664. [Google Scholar] [CrossRef]
- da Silva Junior, J.R.; Clua, E.; Murta, L. Efficient image-aware version control systems using GPU. Softw. Pract. Exp. 2016, 46, 1011–1033. [Google Scholar] [CrossRef]
- Isenburg, M. LASzip: Lossless compression of LiDAR data. Photogramm. Eng. Remote Sens. 2013, 79, 209–217. [Google Scholar] [CrossRef]
- Bunting, P.; Armston, J.; Lucas, R.M.; Clewley, D. Sorted pulse data (SPD) library. Part I: A generic file format for LiDAR data from pulsed laser systems in terrestrial environments. Comput. Geosci. 2013, 56, 197–206. [Google Scholar] [CrossRef]
- Cao, C.; Preda, M.; Zaharia, T. 3D Point Cloud Compression: A Survey. In Proceedings of the 24th International Conference on 3D Web Technology, Los Angeles, CA, USA, 26–28 July 2019; pp. 1–9. [Google Scholar] [CrossRef]
- Sugimoto, K.; Cohen, R.A.; Tian, D.; Vetro, A. Trends in efficient representation of 3D point clouds. In Proceedings of the 2017 Asia-Pacific Signal and Information Processing Association Annual Summit and Conference (APSIPA ASC), Kuala Lumpur, Malaysia, 12–15 December 2017; pp. 364–369. [Google Scholar] [CrossRef]
- Boehm, J. File-centric Organization of large LiDAR Point Clouds in a Big Data context. In Proceedings of the Workshop on Processing Large Geospatial Data, Cardiff, UK, 8 July 2014. [Google Scholar]
- Hongchao, M.; Wang, Z. Distributed data organization and parallel data retrieval methods for huge laser scanner point clouds. Comput. Geosci. 2011, 37, 193–201. [Google Scholar] [CrossRef]
- Schön, B.; Mosa, A.S.M.; Laefer, D.F.; Bertolotto, M. Octree-based indexing for 3D pointclouds within an Oracle Spatial DBMS. Comput. Geosci. 2013, 51, 430–438. [Google Scholar] [CrossRef]
- Baert, J.; Lagae, A.; Dutré, P. Out-of-Core Construction of Sparse Voxel Octrees. Comput. Graph. Forum 2014, 33, 220–227. [Google Scholar] [CrossRef]
- Richter, R.; Discher, S.; Döllner, J. Out-of-Core Visualization of Classified 3D Point Clouds. In 3D Geoinformation Science; Breunig, M., Al-Doori, M., Butwilowski, E., Kuper, P.V., Benner, J., Haefele, K.H., Eds.; Springer: Cham, Switzerland, 2015; pp. 227–242. [Google Scholar] [CrossRef]
- van Oosterom, P.; Martinez-Rubi, O.; Ivanova, M.; Horhammer, M.; Geringer, D.; Ravada, S.; Tijssen, T.; Kodde, M.; Gonçalves, R. Massive point cloud data management: Design, implementation and execution of a point cloud benchmark. Comput. Graph. 2015, 49, 92–125. [Google Scholar] [CrossRef]
- Schütz, M.; Ohrhallinger, S.; Wimmer, M. Fast Out-of-Core Octree Generation for Massive Point Clouds. Comput. Graph. Forum 2020, 39, 155–167. [Google Scholar] [CrossRef]
- Lokugam Hewage, C.N.; Laefer, D.F.; Vo, A.V.; Le-Khac, N.A.; Bertolotto, M. Scalability and Performance of LiDAR Point Cloud Data Management Systems: A State-of-the-Art Review. Remote Sens. 2022, 14, 5277. [Google Scholar] [CrossRef]
- Huang, L.; Wang, S.; Wong, K.; Liu, J.; Urtasun, R. OctSqueeze: Octree-Structured Entropy Model for LiDAR Compression. arXiv 2020, arXiv:2005.0717. [Google Scholar] [CrossRef]
- Lu, B.; Wang, Q.; Li, A. Massive Point Cloud Space Management Method Based on Octree-Like Encoding. Arab. J. Sci. Eng. 2019, 44, 9397–9411. [Google Scholar] [CrossRef]
- Schuetz, M. Potree: Rendering Large Point Clouds in Web Browsers. Ph.D. Thesis, TU Wien, Vienna, Austria, 2016. [Google Scholar]
- Ströter, D.; Mueller-Roemer, J.S.; Stork, A.; Fellner, D.W. OLBVH: Octree linear bounding volume hierarchy for volumetric meshes. Vis. Comput. 2020, 36, 2327–2340. [Google Scholar] [CrossRef]
- Salomon, D. Data Compression: The Complete Reference; With Contributions by Giovanni Motta and David Bryant; Springer: New York, NY, USA, 2007. [Google Scholar]
- Deutsch, P. Rfc1951: Deflate Compressed Data Format Specification Version 1.3. 1996. Available online: https://www.rfc-editor.org/rfc/rfc1951 (accessed on 9 July 2023).
- Girardeau-Montaut, D. CloudCompare. Available online: https://www.danielgm.net/cc/ (accessed on 9 July 2023).
- City of New York. Topobathymetric LiDAR Data. 2017. Available online: https://data.cityofnewyork.us/City-Government/Topobathymetric-LiDAR-Data-2017-/7sc8-jtbz/data (accessed on 9 July 2023).
- Armeni, I.; Sener, O.; Zamir, A.R.; Jiang, H.; Brilakis, I.; Fischer, M.; Savarese, S. 3D Semantic Parsing of Large-Scale Indoor Spaces. In Proceedings of the IEEE International Conference on Computer Vision and Pattern Recognition, Las Vegas, NV, USA, 27–30 June 2016. [Google Scholar] [CrossRef]
Flags | Size | Values |
---|---|---|
Data origin | 1 bit | 0 = RPCL; 1 = current version point cloud |
First number is a block length | 31 bits | Upper bits = 1111, effective range = [0–134,217,727] |
First number is an array index | 31 bits | Upper bits ≠ 1111, effective range = [0–2,013,265,919] |
RAW | VCS | ||||||
---|---|---|---|---|---|---|---|
Operation | Type | Points | % Points | Inc (MB) | Total (MB) | Inc (MB) | Total (MB) |
Insert new points | New | 41.33 M | 12.7% | 1750.63 | 3501.25 | <0.01 | 1750.63 |
Noise filter | Change | 26.04 M | 7.1% | 1932.65 | 5615.92 | 280.53 | 2213.18 |
Intensity-based colorization | Change | 366.76 M | 100% | 2708.39 | 9100.05 | 1932.65 | 4921.57 |
Manual point deletion | Delete | 4.11 M | 1.1% | 2683.58 | 11,758.82 | 60.04 | 4956.80 |
Manual point deletion | Delete | 2.90 M | 0.8% | 2665.91 | 14,407.06 | 43.55 | 4982.68 |
Manual point deletion | Delete | 11.51 M | 3.2% | 2595.08 | 16,931.30 | 155.12 | 5066.96 |
Manual point deletion | Delete | <0.01 M | <0.01% | 2595.08 | 19,526.38 | <0.01 | 5066.96 |
Automatic classification | Change | 348.24 M | 100% | 2595.11 | 22,121.53 | 2595.08 | 7662.08 |
Manual point reclassification | Change | 11.84 M | 3.4% | 2519.72 | 24,565.86 | 113.07 | 7699.76 |
Manual point reclassification | Change | 51.47 M | 15.3% | 2181.89 | 26,409.91 | 421.20 | 7783.13 |
Manual point reclassification | Change | 14.53 M | 5.1% | 2086.74 | 28,401.50 | 149.59 | 7837.57 |
Manual point reclassification | Change | 2.97 M | 1.1% | 2066.38 | 30,447.52 | 27.94 | 7845.16 |
Point extraction (new branch) | Branch | 213.14 M | 79.7% | 2031.83 | 32,479.35 | 2031.83 | 9876.98 |
Subsampling | Delete | 144.17 M | 30% | 1206.30 | 34,891.94 | 785.61 | 11,868.89 |
RAW | VCS | ||||||
---|---|---|---|---|---|---|---|
Operation | Type | Points | % Points | Last Version | Unmanaged Diff | Delta | Last Version |
Insert new points | New | 41.33 M | 12.7% | 118.481 s | 152.111 s | 0.474 s | 100.123 s |
Noise filter | Change | 26.04 M | 7.1% | 108.133 s | 171.510 s | 31.691 s | 102.983 s |
Intensity-based colorization | Change | 366.76 M | 100% | 109.903 s | 184.606 s | 113.112 s | 107.748 s |
Manual point deletion | Delete | 4.11 M | 1.1% | 110.365 s | 189.984 s | 5.082 s | 105.110 s |
Manual point deletion | Delete | 2.90 M | 0.8% | 105.988 s | 192.948 s | 3.710 s | 103.910 s |
Manual point deletion | Delete | 11.51 M | 3.2% | 101.674 s | 197.074 s | 13.368 s | 100.667 s |
Manual point deletion | Delete | <0.01 M | <0.01% | 102.930 s | 189.990 s | 0.802 s | 101.910 s |
Automatic classification | Change | 348.24 M | 100% | 103.475 s | 192.723 s | 110.279 s | 101.446 s |
Manual point reclassification | Change | 11.84 M | 3.4% | 100.775 s | 196.411 s | 9.922 s | 98.799 s |
Manual point reclassification | Change | 51.47 M | 15.3% | 85.978 s | 182.331 s | 33.0812 s | 82.671 s |
Manual point reclassification | Change | 14.53 M | 5.1% | 80.087 s | 160.793 s | 13.893 s | 78.517 s |
Manual point reclassification | Change | 2.97 M | 1.1% | 81.077 s | 157.523 s | 2.676 s | 80.275 s |
Point extraction (new branch) | Branch | 213.14 M | 79.7% | 258.448 s | 161.532 s | 0.450 s | 136.973 s |
Subsampling | Delete | 144.17 M | 30% | 69.013 s | 343.423 s | 114.627 s | 94.799 s |
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |
© 2023 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https://creativecommons.org/licenses/by/4.0/).
Share and Cite
Ogayar-Anguita, C.J.; López-Ruiz, A.; Segura-Sánchez, R.J.; Rueda-Ruiz, A.J. A Version Control System for Point Clouds. Remote Sens. 2023, 15, 4635. https://doi.org/10.3390/rs15184635
Ogayar-Anguita CJ, López-Ruiz A, Segura-Sánchez RJ, Rueda-Ruiz AJ. A Version Control System for Point Clouds. Remote Sensing. 2023; 15(18):4635. https://doi.org/10.3390/rs15184635
Chicago/Turabian StyleOgayar-Anguita, Carlos J., Alfonso López-Ruiz, Rafael J. Segura-Sánchez, and Antonio J. Rueda-Ruiz. 2023. "A Version Control System for Point Clouds" Remote Sensing 15, no. 18: 4635. https://doi.org/10.3390/rs15184635
APA StyleOgayar-Anguita, C. J., López-Ruiz, A., Segura-Sánchez, R. J., & Rueda-Ruiz, A. J. (2023). A Version Control System for Point Clouds. Remote Sensing, 15(18), 4635. https://doi.org/10.3390/rs15184635