FlowEngine 7.530
Photogrammetry Software Development Kit
|
FlowEngine main computation interface. More...
#include <FlowEngine.h>
Public Member Functions | |
virtual FLE_DLL | ~FlowEngineInterface ()=default |
Default virtual destructor. | |
virtual FLE_DLL Result | computeStructureAndMotion (const SettingsInterface &settings, ProgressBarInterface &progressBar, LogListenerInterface &logListener, Buffer< CameraInterface * > inOutCameras, SparsePointCloudInterface &outPointCloud)=0 |
virtual FLE_DLL Result | computeStructureAndMotionConstrained (const SettingsInterface &settings, ProgressBarInterface &progressBar, LogListenerInterface &logListener, Buffer< CameraInterface * > inOutCameras, ConstBuffer< ControlPointConstraintInterface * > inPointConstraints, ConstBuffer< CameraConstraintInterface * > inCameraConstraints, SparsePointCloudInterface &outPointCloud)=0 |
virtual FLE_DLL Result | computeSparsePointCloudFromKnownPPM (const SettingsInterface &settings, ProgressBarInterface &progressBar, LogListenerInterface &logListener, Buffer< CameraInterface * > cameras, SparsePointCloudInterface &outPointCloud)=0 |
virtual FLE_DLL Result | performBundleAdjustment (const SettingsInterface &inSettings, ProgressBarInterface &inProgressBar, LogListenerInterface &inLogListener, ConstBuffer< ControlPointConstraintInterface * > inPointConstraints, ConstBuffer< CameraConstraintInterface * > inCameraConstraints, Buffer< CameraInterface * > inOutCameras, SparsePointCloudInterface &inOutPointCloud, Buffer< unsigned char > inOutCamerasStatus)=0 |
virtual FLE_DLL Result | computeDensePointCloud (const SettingsInterface &settings, ProgressBarInterface &progressBar, LogListenerInterface &logListener, const BoundingBoxInterface &boundingBox, Buffer< CameraInterface * > cameras, const SparsePointCloudInterface &pointCloud, StereoPointCloudInterface &outPointCloud)=0 |
virtual FLE_DLL Result | computeDensePointCloudFromInputMesh (const SettingsInterface &settings, ProgressBarInterface &progressBar, LogListenerInterface &logListener, const BoundingBoxInterface &boundingBox, Buffer< CameraInterface * > cameras, const SparsePointCloudInterface &pointCloud, const StereoMeshInterface &stereoMesh, StereoPointCloudInterface &outPointCloud)=0 |
virtual FLE_DLL Result | computeMesh (const SettingsInterface &settings, ProgressBarInterface &progressBar, LogListenerInterface &logListener, const BoundingBoxInterface &boundingBox, Buffer< CameraInterface * > cameras, const StereoPointCloudInterface &inStereoPointCloud, StereoMeshInterface &outStereoMesh)=0 |
virtual FLE_DLL Result | adaptMeshWithControlPoints (const SettingsInterface &settings, ProgressBarInterface &progressBar, LogListenerInterface &logListener, Buffer< ControlPointConstraintInterface * > inStartingConstraints, Buffer< ControlPointConstraintInterface * > inDestinationConstraints, const StereoMeshInterface &inDestinationMesh, StereoMeshInterface &inoutStartingMesh)=0 |
virtual FLE_DLL Result | adaptMeshWithOpticalFlow (const SettingsInterface &settings, ProgressBarInterface &progressBar, LogListenerInterface &logListener, Buffer< CameraInterface * > cameras, const StereoMeshInterface &inPivotMesh, const StereoMeshInterface &inDestinationMesh, StereoMeshInterface &inoutStartingMesh)=0 |
virtual FLE_DLL Result | morphMesh (const SettingsInterface &settings, ProgressBarInterface &progressBar, LogListenerInterface &logListener, const StereoMeshInterface &dataMesh, StereoMeshInterface &inoutTemplateMesh)=0 |
virtual FLE_DLL Result | computeTexturedMesh (const SettingsInterface &settings, ProgressBarInterface &progressBar, LogListenerInterface &logListener, Buffer< CameraInterface * > cameras, const StereoMeshInterface &mesh, StereoTexturedMeshInterface &outStereoTexturedMesh)=0 |
virtual FLE_DLL Result | computeTexturedMesh (const SettingsInterface &settings, ProgressBarInterface &progressBar, LogListenerInterface &logListener, Buffer< CameraInterface * > cameras, const StereoMeshInterface &mesh, ConstBuffer< TexCoords > uvCoords, StereoTexturedMeshInterface &outStereoTexturedMesh)=0 |
virtual FLE_DLL Result | computeOrthophoto (const SettingsInterface &settings, ProgressBarInterface &progressBar, LogListenerInterface &logListener, Buffer< CameraInterface * > cameras, const StereoMeshInterface &mesh, ConstBuffer< double > transform, OrthophotoInterface &outOrthophoto)=0 |
virtual FLE_DLL Result | computeOrthophotoFromPoints (const SettingsInterface &settings, ProgressBarInterface &progressBar, LogListenerInterface &logListener, const StereoPointCloudInterface &pointCloud, ConstBuffer< double > transform, OrthophotoInterface &outOrthophoto)=0 |
virtual FLE_DLL Result | detectMarkers (const SettingsInterface &settings, ProgressBarInterface &progressBar, LogListenerInterface &logListener, Buffer< CameraInterface * > cameras, ConstStringBuffer tagFamily, double subsampling, double blur, int *minimumPoints, double *maximumReprojectionError, double *minimumAngle, Buffer< ControlPointConstraintInterface * > inOutPoints)=0 |
virtual FLE_DLL Result | recomputeVisibility (const SettingsInterface &settings, ProgressBarInterface &progressBar, LogListenerInterface &logListener, Buffer< CameraInterface * > cameras, bool updateProperties, Index seedPoints, bool keepOnlySeedPoints, StereoPointCloudInterface &inOutPoints)=0 |
virtual FLE_DLL Result | recomputeVisibility (const SettingsInterface &settings, ProgressBarInterface &progressBar, LogListenerInterface &logListener, Buffer< CameraInterface * > cameras, bool updateProperties, StereoMeshInterface &inOutMesh)=0 |
virtual FLE_DLL Result | computeAndExportLodTexturedMesh (const SettingsInterface &settings, ProgressBarInterface &progressBar, LogListenerInterface &logListener, const StereoMeshInterface &mesh, ConstStringBuffer outputDirectory, ConstStringBuffer format, ConstStringBuffer textureFormat, int numberOfTiles, int targetMaxVerticesPerTile, int numberOfLevels, double decimationFactor, double textureDecimationFactor, bool useLocalCoordinates)=0 |
virtual FLE_DLL Result | abort ()=0 |
virtual FLE_DLL Result | pause ()=0 |
virtual FLE_DLL Result | resume ()=0 |
virtual FLE_DLL Result | getVersion (StringBuffer outVersion) const =0 |
virtual FLE_DLL void | getVersion (Version &outVersion) const =0 |
virtual FLE_DLL Size | getVersionLength () const =0 |
virtual FLE_DLL Result | isLatestVersion () const =0 |
virtual FLE_DLL bool | isFreeVersion () const =0 |
virtual FLE_DLL int | getCudaDeviceCount () const =0 |
virtual FLE_DLL Result | getCudaDeviceInfo (int device, CudaDeviceInfo &outInfo) const =0 |
virtual FLE_DLL void | setMaxNumberOfCores (Size numberOfCores)=0 |
virtual FLE_DLL void | setMemoryLimit (Size memoryLimit)=0 |
virtual FLE_DLL void | setLogTimestamp (bool logTimeStamp)=0 |
FlowEngine main computation interface.
|
virtualdefault |
Default virtual destructor.
|
pure virtual |
Send an abort signal to stop the computation. The cancellation might take some time.
|
pure virtual |
Warning: Experimental feature. This method adapts a mesh to another one using spatial constraints and 3Dto3D control points. The method will maintain the same topology for the input mesh.
[in] | settings | computation settings |
[in] | progressBar | computation progress bar for status management |
[in] | logListener | computation log listener for printing log information |
[in] | inStartingConstraints | 3D control points constraint vector. If the vector is empty or the size doesn't match inDestinationConstraints, only spatial constraints will be used. |
[in] | inDestinationConstraints | 3D control points constraint vector. If the vector is empty or the size doesn't match inStartingConstraints, only spatial constraints will be used. |
[in] | inDestinationMesh | destination mesh. The starting mesh will be adapted to this mesh using 3D constraints and control points (if available). |
[out] | inoutStartingMesh | the input stereo mesh. It will be adapted to the inDestinationMesh mesh using also control points constraints (if available). |
inOutCameras
is more than 50.
|
pure virtual |
This method adapts an input mesh, related a previous frame computation, to a new one of the current frame using 3D constraints and optical flow. The method will maintain the same topology for the input mesh. The cameras must contain also the information of the previous frames - please see CameraInterface::LoadImage for additional information.
[in] | settings | computation settings |
[in] | progressBar | computation progress bar for status management |
[in] | logListener | computation log listener for printing log information |
[in] | cameras | cameras vector to process. Cameras must be initialized with existing image files and must also contain previous frame information. A max of 50 cameras are supported in the free version. |
[in] | inPivotMesh | The initial template mesh in a standard pose that will be used for warping. Must have the same number of vertices as the inoutStartingMesh template mesh. |
[in] | inDestinationMesh | The destination stereo mesh, related to the current frame. The starting mesh will be adapted to this mesh using spatial constraints and optical flow. |
[out] | inoutStartingMesh | The last template mesh, related to the previous frame. This mesh will be adapted to the inDestinationMesh mesh using optical flow and spatial constraints. |
|
pure virtual |
Computes a textured mesh starting from a mesh and a set of cameras then exports it to a level-of-detail file format.
[in] | settings | a settings object to customize the texture generation phase. |
[in] | progressBar | computation progress bar for status management |
[in] | logListener | computation log listener for printing log information |
[in] | mesh | the mesh that will be used as source for the texture generation. |
[in] | outputDirectory | the directory where all the data will be saved to. Multiple subdirectories will be created. |
[in] | format | a string specifying the export file format for mesh data. Accepted values are: "obj", "gltf", "gltfgzip", "gltfgzip+obj". |
[in] | textureFormat | a string specifying the export file format for texture data. Accepted values are: "png", "jpg", "dds". |
[in] | numberOfTiles | the maximum number of tiles that will be generated per dimension. The final number of tiles will be computed by numberOfVerticesPerTile. Accepted values are in the range [2, 20] |
[in] | targetMaxVerticesPerTile | the number of desidered maximum vertices per tiles. The final number of tiles will be ultimately bound by the numberOfTiles. Accepted values are in the range [0, 50000000] |
[in] | numberOfLevels | the number of levels of details that will be generated for each tile. Accepted values are in the range [1, 20] |
[in] | decimationFactor | the amount of vertex decimation that occurs between different levels of detail. Accepted values are in the range [0.01, 1.0] |
[in] | textureDecimationFactor | the amount of texture rescaling that occurs between different levels of detail. Accepted values are in the range [0.01, 1.0] |
[in] | useLocalCoordinates | convert the mesh to local coordinates before exporting. |
outputDirectory
is not a valid string buffer or the directory does not exist.format
is not a valid string buffer or its value is not acceptable.textureFormat
is not a valid string buffer or its value is not acceptable.numberOfTiles
is not in the valid range.numberOfLevels
is not in the valid range.decimationFactor
is not in the valid range.textureDecimationFactor
is not in the valid range.
|
pure virtual |
Compute the dense point cloud using the Stasia Multiview Stereo pipeline, starting from the Samantha output (point cloud and cameras)
[in] | settings | computation settings |
[in] | progressBar | computation progress bar for status management |
[in] | logListener | computation log listener for printing log information |
[in] | boundingBox | bounding box information. Everything outside the specified bounding box will not be reconstructed |
[in] | cameras | cameras vector to process. Cameras must be initialized with existing image files. |
[in] | pointCloud | sparse point cloud. Must contain a valid point cloud in input |
[out] | outPointCloud | dense point cloud. It will be filled by the Multiview stereo process |
inOutCameras
is an invalid buffer or the buffer's element count is less than 3.inOutCameras
is more than 50.
|
pure virtual |
Compute the dense point cloud using the Stasia Multiview Stereo pipeline, starting from an input mesh. The input sparse point cloud will only be used to compute neighbor images, and not to initialize the depth range
[in] | settings | computation settings |
[in] | progressBar | computation progress bar for status management |
[in] | logListener | computation log listener for printing log information |
[in] | boundingBox | bounding box information. Everything outside the specified bounding box will not be reconstructed |
[in] | cameras | cameras vector to process. Cameras must be initialized with existing image files. |
[in] | pointCloud | sparse point cloud. Must contain a valid point cloud in input |
[in] | stereoMesh | input stereo mesh. Used for depth range initialization. |
[out] | outPointCloud | dense point cloud. It will be filled by the Multiview stereo process |
inOutCameras
is an invalid buffer or the buffer's element count is less than 3.inOutCameras
is more than 50.
|
pure virtual |
Compute the Mesh using the Sasha pipeline, starting from the Dense point cloud output
[in] | settings | computation settings |
[in] | progressBar | computation progress bar for status management |
[in] | logListener | computation log listener for printing log information |
[in] | boundingBox | bounding box information. Everything outside the specified bounding box will not be reconstructed |
[in] | cameras | cameras vector to process. Cameras must be initialized with existing image files. A max of 50 cameras are supported in the free version. |
[in] | inStereoPointCloud | dense point cloud. Must contain a valid dense point cloud object |
[out] | outStereoMesh | mesh object. It will be filled by the mesh extraction algorithms |
inOutCameras
is an invalid buffer or the buffer's element count is less than 3.inOutCameras
is more than 50.
|
pure virtual |
Compute a true orthophoto from a mesh object
[in] | settings | computation settings - The Orthophoto generation Parameters will be included in the "Orthophoto" section |
[in] | progressBar | computation progress bar for status management |
[in] | logListener | computation log listener for printing log information |
[in] | cameras | cameras vector to process. Cameras must be initialized with existing image files. |
[in] | mesh | mesh object. Must contain a valid mesh object |
[in] | transform | 4x4 orthographic transformation - stored as a rowmajor matrix, and composed by projection * view. Should map coordinates into the [-1 +1] canonical cube. Pixels projecting outside [-1 +1] (in x,y or z) will be discarded. |
[out] | outOrthophoto | orthophoto object. It will be filled by the orthophoto algorithms |
cameras
is not a valid buffer or the size of cameras
is less than 2.
|
pure virtual |
Compute a true orthophoto from points with colors
[in] | settings | computation settings - The Orthophoto generation Parameters will be included in the "Orthophoto" section |
[in] | progressBar | computation progress bar for status management |
[in] | logListener | computation log listener for printing log information |
[in] | pointCloud | pointcloud object. Must contain a valid dense point cloud object with valid colors associated |
[in] | transform | 4x4 orthographic transformation - stored as a rowmajor matrix, and composed by projection * view. Should map coordinates into the [-1 +1] canonical cube. Pixels projecting outside [-1 +1] (in x,y or z) will be discarded. |
[out] | outOrthophoto | orthophoto object. It will be filled by the orthophoto algorithms |
cameras
is not a valid buffer or the size of cameras
is less than 2.
|
pure virtual |
Compute the sparse point cloud (structure from motion) using the Samantha pipeline starting from fixed projection matrices.
[in] | settings | computation settings. |
[in] | progressBar | computation progress bar for status management. |
[in] | logListener | computation log listener for printing log information. |
[in] | cameras | cameras vector to process. Cameras must be initialized with existing image files and internal and external parameters. Cameras parameters won't be modified by the processing. |
[out] | outPointCloud | sparse point cloud. It will be filled by the structure from motion process |
inOutCameras
is an invalid buffer or the buffer's element count is less than 3.inOutCameras
is more than 50.
|
pure virtual |
Compute cameras parameters and the sparse point cloud (structure from motion) using the Samantha pipeline.
[in] | settings | computation settings. |
[in] | progressBar | computation progress bar for status management. |
[in] | logListener | computation log listener for printing log information. |
[in,out] | inOutCameras | cameras to process. Cameras must be initialized with existing image files. |
[out] | outPointCloud | sparse point cloud. It will be filled by the structure from motion process |
inOutCameras
is an invalid buffer or the buffer's element count is less than 3.inOutCameras
is more than 50.
|
pure virtual |
Compute cameras parameters and the sparse point cloud (structure from motion) using the Samantha pipeline. The reconstructed cameras and point cloud will satisfy the supplied set of constraints.
[in] | settings | computation settings. |
[in] | progressBar | computation progress bar for status management. |
[in] | logListener | computation log listener for printing log information. |
[in,out] | inOutCameras | cameras to process. Cameras must be initialized with existing image files. |
[in] | inPointConstraints | (optional) the control point constraints to use during reconstruction. |
[in] | inCameraConstraints | (optional) the camera constraints to use during reconstruction. |
[out] | outPointCloud | sparse point cloud. It will be filled by the structure from motion process |
inOutCameras
is an invalid buffer or the buffer's element count is less than 3.inOutCameras
is more than 50.
|
pure virtual |
Compute the Textured Mesh using the Tessa pipeline, starting from the a Stereo Mesh. This method will keep the same uv coords specified in the input textured mesh.
[in] | settings | computation settings |
[in] | progressBar | computation progress bar for status management |
[in] | logListener | computation log listener for printing log information |
[in] | cameras | cameras vector to process. Cameras must be initialized with existing image files. A max of 50 cameras are supported in the free version. |
[in] | mesh | mesh object. Must contain a valid dense point cloud object |
[in] | uvCoords | texture coordinates. A constant buffer of point texture coordinates. |
[out] | outStereoTexturedMesh | mesh object. It will be filled by the texturing algorithms |
cameras
is not a valid buffer or the size of cameras
is less than 2.uvCoords
is not a valid buffer.cameras
is more than 50.
|
pure virtual |
Warning: Experimental feature. Compute the Textured Mesh using the Tessa pipeline, starting from the a Stereo Mesh.
[in] | settings | computation settings. |
[in] | progressBar | computation progress bar for status management. |
[in] | logListener | computation log listener for printing log information. |
[in] | cameras | cameras vector to process. Cameras must be initialized with existing image files. |
[in] | mesh | mesh object. Must contain a previously computed stereo mesh object. |
[out] | outStereoTexturedMesh | mesh object. It will be filled by the texturing algorithms |
cameras
is not a valid buffer or the size of cameras
is less than 2.cameras
is more than 50.
|
pure virtual |
Detects markers in cameras.
[in] | settings | (optional) A settings object. This function requires a valid "TempPath". |
[in] | progressBar | computation progress bar for progress reporting. |
[in] | logListener | computation log listener for printing log information. |
[in] | cameras | a vector of valid camera objects. |
[in] | tagFamily | the tag family that will be searched for. See MarkerPrinter for more information. |
[in] | subsampling | image scaling used in the algorithm. Higher values means faster results at the expense of accuracy. |
[in] | blur | gaussian blur amount. |
[in] | minimumPoints | (optional) the minimum number of reprojected points allowed. Must be greater-equal than 2. |
[in] | maximumReprojectionError | (optional) the maximum reprojection error allowed. See notes. |
[in] | minimumAngle | (optional) the minimum reprojection angle (in radians) allowed. See notes. |
[in,out] | inOutPoints | a buffer of valid ControlPointConstraint objects that will be filled with markers matching information. this buffer must be at least dictionarySize long. |
maximumReprojectionError
and minimumAngle
cannot be used when input cameras are not reconstructed. cameras
is not a valid buffer or it doesn't contain valid Camera objects.dictionarySize
is not in the valid range.inOutPoints
is not a valid buffer or its size is not dictionarySize
or it doesn't contain valid ControlPointConstraint objects.
|
pure virtual |
|
pure virtual |
Returns information about a CUDA device.
[in] | device | the index of the device to be queried. Must be between 0 and getCudaDeviceCount(). |
[out] | outInfo | reference to a CudaDeviceInfo that will hold the information upon success. |
device
is out of the valid range.
|
pure virtual |
Returns the current FlowEngine version.
[out] | outVersion | string buffer that receives the current version of FlowEngine. |
outVersion
outVersion
is not a valid buffer.outVersion
is not big enough to receive the version string (i.e. at least FlowEngine::getVersionLength() long).
|
pure virtual |
Returns the current FlowEngine version.
[out] | outVersion | Version struct that receives the current version of FlowEngine. |
|
pure virtual |
|
pure virtual |
|
pure virtual |
Contact 3dflow.net servers to check if the running version of the SDK is the latest one.
|
pure virtual |
This method adapts an input mesh, related a previous frame computation, to a new one of the current frame using 3D constraints and optical flow. The method will maintain the same topology for the input mesh. The cameras must contain also the information of the previous frames - please see CameraInterface::LoadImage for additional information.
[in] | settings | computation settings |
[in] | progressBar | computation progress bar for status management |
[in] | logListener | computation log listener for printing log information |
[in] | dataMesh | the reference mesh |
[in] | inoutTemplateMesh | the mesh that will be morphed toward the reference mesh |
|
pure virtual |
Send a pause signal to pause the computation. The pausing might take some time.
|
pure virtual |
Optimizes camera parameters and the sparse point cloud using bundle adjustment and optional camera constraints and/or control points constraints.
[in] | inSettings | computation settings |
[in] | inProgressBar | computation progress bar for status management |
[in] | inLogListener | computation log listener for printing log information |
[in] | inPointConstraints | (optional) control points constraints to be used during bundle adjustment. |
[in] | inCameraConstraints | (optional) camera constraints to be used during bundle adjustment. |
[in,out] | inOutCameras | cameras vector to process. Cameras must be initialized with existing image files and internal and external parameters. Cameras parameters will be modified by the processing. |
[in,out] | inOutPointCloud | sparse point cloud. Must contain a valid point cloud in input that will be modified by the bundle adjustment process. |
[in,out] | inOutCamerasStatus | cameras vector to process. The vector must have the same size of the inOutCameras vector. The final status of the camera: 0 -> Valid Camera, 1 -> Invalidating camera (when setting ("BundleAdjustment","RemoveInvalidCameras") is false) , 2 -> Removed invalid camera (when setting ("BundleAdjustment","RemoveInvalidCameras") is true) |
inOutCameras
is an invalid buffer or the buffer's element count is less than 3.inOutCameras
is more than 50.
|
pure virtual |
Recompute the visibility for the current dense point cloud object, using the provided camera vector
[in] | settings | computation settings |
[in] | progressBar | computation progress bar for status management |
[in] | logListener | computation log listener for printing log information |
[in] | cameras | cameras vector to process. Cameras must be initialized with existing image files. A max of 50 cameras are supported in the free version. |
[in] | updateProperties | set to true to recompute the colors and normals after the visibility recomputation |
[in] | seedPoints | the number of seed points to keep. Seeds points are used for meshing. Use 0 for automatic. |
[in] | keepOnlySeedPoints | set to true to discard all non-seed points after the process (uses less memory) |
[in,out] | inOutPoints | the dense point cloud object. Must contain a valid dense point cloud object object |
cameras
is not a valid buffer or the size of cameras
is less than 2.cameras
is more than 50.
|
pure virtual |
Recompute the visibility for the current mesh object, using the provided camera vector
[in] | settings | computation settings |
[in] | progressBar | computation progress bar for status management |
[in] | logListener | computation log listener for printing log information |
[in] | cameras | cameras vector to process. Cameras must be initialized with existing image files. A max of 50 cameras are supported in the free version. |
[in] | updateProperties | set to true to recompute the colors and normals after the visibility recomputation |
[in,out] | inOutMesh | the inoutMesh object. Must contain a valid mesh object |
cameras
is not a valid buffer or the size of cameras
is less than 2.cameras
is more than 50.
|
pure virtual |
Send a resume signal to resume the computation after it has been paused.
|
pure virtual |
Enabled or disable the log timestamp write at the beginning of each line.
[in] | logTimeStamp | set to true to enable the timestamp, false to disable it. |
|
pure virtual |
Set the maximum number of cores that FlowEngine should use.
[in] | numberOfCores | the number of cores. Set to 0 to use all the available cores. |
|
pure virtual |
Set a RAM memory fixed limit for FlowEngine. When set, this limit will be used before any allocation check, instead of the available memory in the system. The specified limit will affect the computation splits and any out of memory error.
[in] | memoryLimit | the memory limit in bytes. Set to 0 to use all the available physical memory. |