-
Notifications
You must be signed in to change notification settings - Fork 13
Home
A cross-platform outcrop point cloud processing system.
Structrock is released under the terms of the BSD license, and thus free for commercial and research use. Feel free to analyze your own outcrop point cloud data, to add Structrock into your own project. You are welcomed to make contributions to this project. Email [email protected], or open an issue here on GitHub for support.
Citation (more to be added soon):
@article{Wang17,
title={A region-growing approach for automatic outcrop fracture extraction from a three-dimensional point cloud},
author={Wang, Xin and Zou, Lejun and Shen, Xiaohua and Ren, Yupeng and Qin, Yi},
journal={Computers \& Geosciences},
volume={99},
pages={100-106},
year={2017},
doi={10.1016/j.cageo.2016.11.002},
publisher={Elsevier},
}
@article{Wang_arxiv2017,
title={Outcrop fracture characterization on suppositional planes cutting through digital outcrop models (DOMs)},
author={Wang, Xin and Zou, Lejun and Ren, Yupeng and Qin, Yi and Guo, Zhonghao and Shen, Xiaohua},
journal={arXiv preprint arXiv:1707.03437},
year={2017}
}
Detailed results obtained from a portion of the point cloud. (a) A portion of the outcrop and (b) its point cloud. (c) Segmentation results obtained using the proposed algorithm. Different fracture regions are shown in various colors, and the non-fracture regions are shown in red. (d) Estimated fracture planes obtained from the segmentation results.
(a) The outcrop used to test the proposed algorithm and (b) the segmentation results. Different fracture regions are shown by different colors, and the non-fracture regions are shown in red.
PCL is a standalone, large scale, open project for 2D/3D image and point cloud processing. Official website: http://pointclouds.org/. Github repository: https://github.com/PointCloudLibrary/pcl.
Version required: 1.6, still having compatibility problems with versions > 1.6.
Qt is a cross-platform C++ application development framework. Official website: http://www.qt.io/.
Version required: >= 4.8.
PostgreSQL often simply Postgres, is an object-relational database management system (ORDBMS) with an emphasis on extensibility and standards-compliance. It is used to support an experimental function of structrock: accessing very large LiDAR datasets stored in PostgreSQL databases.
Structrock provide a platform on which workflows of processing outcrop point clouds can be designed. A region-growing algorithm for automatic outcrop fracture extraction from a three-dimensional point cloud is implemented.
Structrock can run in both GUI and command-line modes. In GUI mode, users interact with Structrock to perform certain processing action and provide processing parameters through input dialogs. In command-line mode, Structrock receive the path to a text file (we call it the workflow file) that contains processing actions and parameters. Lines of actions are separated by ";" and parameters are separated by ",". It will do these processing actions one by one until the end or errors occur.
An example of workflow file:
openpcd,E:\Downloads\parameters_test\0134067-Data-ready.pcd,mute;
knnormal,30,mute;
rgsegmentation,9,0.06,20,4,30,false,mute;
saveclusters,E:\Downloads\parameters_test\Clusters\Data_9_20.bin,mute;
quitsession;
First, all dependencies, PCL(1.6), Qt, boost, Eigen, FLANN, VTK, QHull and OpenNI should be installed properly.
Download and install CMake, Official website: https://cmake.org/.
Make a new folder named "build" beside the folder containing source files (call it, say, "src").
Make sure Visual Studio 2010 is properly installed. Open CMake, set "Where is the source code" to the path to "src" and set "Where to build the binary" to the path to "build". Click "Configure", and select Visual Studio 10 2010, if no errors occur, click "Generate". Open generated "structrock.sln" file, set "structrock" as the "StartUp Project", add "/ENTRY:mainCRTStartup" to "structrock"'s "Linker->Command Line" properties, start compilation.
Open terminal window, go to "build" folder, run "cmake ../src", then run "make".
Description: Open a .pcd file.
Parameters:
-
"The path and file name of the file to open" (required),
-
mute (optional, follow required parameters, if declared, the result of this action will not be displayed on the screen),
-
nolog (optional, follow required parameters, if declared, this action and the time it takes to perform this action will not be logged)
Description: Open a .txt file that contains 3 columns: x, y, z.
Parameters:
-
"The path and file name of the file to open" (required),
-
mute (optional, follow required parameters, if declared, the result of this action will not be displayed on the screen),
-
nolog (optional, follow required parameters, if declared, this action and the time it takes to perform this action will not be logged)
Description: Save current data to .pcd file with ASCII encoding.
Parameters:
- "The path and file name of the file to save" (required)
Description: Save current data to .pcd file with binary encoding.
Parameters:
- "The path and file name of the file to save" (required)
Description: Save current normals to .pcd file.
Parameters:
- "The path and file name of the file to save" (required)
Description: Perform post-outcrop-fracture-extraction actions and save the results into .bin and txt files.
Parameters:
-
"The path and file name of the file to save" (required),
-
mute (optional, follow required parameters, if declared, the result of this action will not be displayed on the screen),
-
nolog (optional, follow required parameters, if declared, this action and the time it takes to perform this action will not be logged)
Description: downsample the point cloud given the minimum point distance (meter).
Parameters:
-
"Minimum point distance" (required, double),
-
mute (optional, follow required parameters, if declared, the result of this action will not be displayed on the screen),
-
nolog (optional, follow required parameters, if declared, this action and the time it takes to perform this action will not be logged)
Description: resample the point cloud given the search radius (meter).
Parameters:
-
"Search radius" (required, double),
-
mute (optional, follow required parameters, if declared, the result of this action will not be displayed on the screen),
-
nolog (optional, follow required parameters, if declared, this action and the time it takes to perform this action will not be logged)
Description: find k nearest neighbors given k, and calculate the normal of the neighbors.
Parameters:
-
"Number of neoghbor points" (required, int),
-
showcurvature (optional, follow required parameters, but before "mute" and "nolog", if declared, the curvature map on the point cloud will be displayed on the screen),
-
mute (optional, follow required parameters, if declared, the result of this action will not be displayed on the screen),
-
nolog (optional, follow required parameters, if declared, this action and the time it takes to perform this action will not be logged)
Description: find the neighbors given the search radius, and calculate the normal of the neighbors.
Parameters:
-
"Search radius" (required, double),
-
showcurvature (optional, follow required parameters, but before "mute" and "nolog", if declared, the curvature map on the point cloud will be displayed on the screen),
-
mute (optional, follow required parameters, if declared, the result of this action will not be displayed on the screen),
-
nolog (optional, follow required parameters, if declared, this action and the time it takes to perform this action will not be logged)
Description: statistically remove the outliers of the point cloud given the standard deviation.
Parameters:
-
"Standard deviation" (required, double),
-
mute (optional, follow required parameters, if declared, the result of this action will not be displayed on the screen),
-
nolog (optional, follow required parameters, if declared, this action and the time it takes to perform this action will not be logged)
Description: perform the Region Growing Segmentation given the parameters.
Parameters:
-
"Local surface normal deviation threshold" (required, double, degree),
-
"Curvature threshold" (required, double, only used when the smooth mode is on),
-
"Transmission error threshold" (required, double, degree, only used when the smooth mode is off),
-
"Minimum number of point a segmented patch must have to be recorded" (required, int),
-
"The number of neighbors will participate in the region growing" (required, int),
-
"Is it on smooth mode?" (required, boolean),
-
mute (optional, follow required parameters, if declared, the result of this action will not be displayed on the screen),
-
nolog (optional, follow required parameters, if declared, this action and the time it takes to perform this action will not be logged)
Description: Show different kinds of features on the fracture faces or on the outcrop. Features include the fracture faces' roughness, area, linear features, circular features, wave-like features, and etc.
Parameters:
-
"The name of the feature" (required, currently "roughness" and "area" are included.)
-
"Percentage Out threshold" (Optional; Less than 0.5 and bigger than 0.0. If provided, drop the head and the tail in the distribution of the feature to show the variation of the majority of the feature data.)
Description: quit Structrock.
Parameters:
No parameters.
Description: Show and save (as PDF) the stereonet plot of the fracture data.
Parameters:
- "The path and file name of the file to save" (required)