FlowEngine 7.517
Photogrammetry Software Development Kit
Loading...
Searching...
No Matches
FlowEngine::FlowEngineInterface Class Referenceabstract

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
 

Detailed Description

FlowEngine main computation interface.

Constructor & Destructor Documentation

◆ ~FlowEngineInterface()

virtual FLE_DLL FlowEngine::FlowEngineInterface::~FlowEngineInterface ( )
virtualdefault

Default virtual destructor.

Member Function Documentation

◆ abort()

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::abort ( )
pure virtual

Send an abort signal to stop the computation. The cancellation might take some time.

Returns
One of the following result codes:

◆ adaptMeshWithControlPoints()

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::adaptMeshWithControlPoints ( const SettingsInterface settings,
ProgressBarInterface progressBar,
LogListenerInterface logListener,
Buffer< ControlPointConstraintInterface * >  inStartingConstraints,
Buffer< ControlPointConstraintInterface * >  inDestinationConstraints,
const StereoMeshInterface inDestinationMesh,
StereoMeshInterface inoutStartingMesh 
)
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.

Parameters
[in]settingscomputation settings
[in]progressBarcomputation progress bar for status management
[in]logListenercomputation log listener for printing log information
[in]inStartingConstraints3D control points constraint vector. If the vector is empty or the size doesn't match inDestinationConstraints, only spatial constraints will be used.
[in]inDestinationConstraints3D control points constraint vector. If the vector is empty or the size doesn't match inStartingConstraints, only spatial constraints will be used.
[in]inDestinationMeshdestination mesh. The starting mesh will be adapted to this mesh using 3D constraints and control points (if available).
[out]inoutStartingMeshthe input stereo mesh. It will be adapted to the inDestinationMesh mesh using also control points constraints (if available).
Returns
One of the following result codes:
Note
This feature is experimental.

◆ adaptMeshWithOpticalFlow()

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::adaptMeshWithOpticalFlow ( const SettingsInterface settings,
ProgressBarInterface progressBar,
LogListenerInterface logListener,
Buffer< CameraInterface * >  cameras,
const StereoMeshInterface inPivotMesh,
const StereoMeshInterface inDestinationMesh,
StereoMeshInterface inoutStartingMesh 
)
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.

Parameters
[in]settingscomputation settings
[in]progressBarcomputation progress bar for status management
[in]logListenercomputation log listener for printing log information
[in]camerascameras 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]inPivotMeshThe 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]inDestinationMeshThe destination stereo mesh, related to the current frame. The starting mesh will be adapted to this mesh using spatial constraints and optical flow.
[out]inoutStartingMeshThe last template mesh, related to the previous frame. This mesh will be adapted to the inDestinationMesh mesh using optical flow and spatial constraints.

◆ computeAndExportLodTexturedMesh()

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::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 
)
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.

Parameters
[in]settingsa settings object to customize the texture generation phase.
[in]progressBarcomputation progress bar for status management
[in]logListenercomputation log listener for printing log information
[in]meshthe mesh that will be used as source for the texture generation.
[in]outputDirectorythe directory where all the data will be saved to. Multiple subdirectories will be created.
[in]formata string specifying the export file format for mesh data. Accepted values are: "obj", "gltf", "gltfgzip", "gltfgzip+obj".
[in]textureFormata string specifying the export file format for texture data. Accepted values are: "png", "jpg", "dds".
[in]numberOfTilesthe 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]targetMaxVerticesPerTilethe 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]numberOfLevelsthe number of levels of details that will be generated for each tile. Accepted values are in the range [1, 20]
[in]decimationFactorthe amount of vertex decimation that occurs between different levels of detail. Accepted values are in the range [0.01, 1.0]
[in]textureDecimationFactorthe amount of texture rescaling that occurs between different levels of detail. Accepted values are in the range [0.01, 1.0]
[in]useLocalCoordinatesconvert the mesh to local coordinates before exporting.
Returns
One of the following result codes:
  • Result::InvalidArgument
    • if outputDirectory is not a valid string buffer or the directory does not exist.
    • if format is not a valid string buffer or its value is not acceptable.
    • if textureFormat is not a valid string buffer or its value is not acceptable.
    • if numberOfTiles is not in the valid range.
    • if numberOfLevels is not in the valid range.
    • if decimationFactor is not in the valid range.
    • if textureDecimationFactor is not in the valid range.
  • Result::LicenseCheckFailed – if the license check failed (see Result::LicenseCheckFailed for more information).
  • Result::FeatureNotAvailable – if this method was called by the free version of the SDK.
  • Result::OutOfMemoryError – if the system reported a bad alloc.
  • Result::DiskWriteError – if the algorithm was unable to save data on disk.
  • Result::GenericError – if the algorithm failed for any reason.
Note
  • This feature is not available in the free version of the SDK.
  • When specifying the "gltf" export format, only the "dds" texture format is available.

◆ computeDensePointCloud()

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::computeDensePointCloud ( const SettingsInterface settings,
ProgressBarInterface progressBar,
LogListenerInterface logListener,
const BoundingBoxInterface boundingBox,
Buffer< CameraInterface * >  cameras,
const SparsePointCloudInterface pointCloud,
StereoPointCloudInterface outPointCloud 
)
pure virtual

Compute the dense point cloud using the Stasia Multiview Stereo pipeline, starting from the Samantha output (point cloud and cameras)

Parameters
[in]settingscomputation settings
[in]progressBarcomputation progress bar for status management
[in]logListenercomputation log listener for printing log information
[in]boundingBoxbounding box information. Everything outside the specified bounding box will not be reconstructed
[in]camerascameras vector to process. Cameras must be initialized with existing image files.
[in]pointCloudsparse point cloud. Must contain a valid point cloud in input
[out]outPointClouddense point cloud. It will be filled by the Multiview stereo process
Returns
One of the following result codes:
Note
A maximum of 50 cameras is allowed in the free version of the SDK.

◆ computeDensePointCloudFromInputMesh()

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::computeDensePointCloudFromInputMesh ( const SettingsInterface settings,
ProgressBarInterface progressBar,
LogListenerInterface logListener,
const BoundingBoxInterface boundingBox,
Buffer< CameraInterface * >  cameras,
const SparsePointCloudInterface pointCloud,
const StereoMeshInterface stereoMesh,
StereoPointCloudInterface outPointCloud 
)
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

Parameters
[in]settingscomputation settings
[in]progressBarcomputation progress bar for status management
[in]logListenercomputation log listener for printing log information
[in]boundingBoxbounding box information. Everything outside the specified bounding box will not be reconstructed
[in]camerascameras vector to process. Cameras must be initialized with existing image files.
[in]pointCloudsparse point cloud. Must contain a valid point cloud in input
[in]stereoMeshinput stereo mesh. Used for depth range initialization.
[out]outPointClouddense point cloud. It will be filled by the Multiview stereo process
Returns
One of the following result codes:
Note
A maximum of 50 cameras is allowed in the free version of the SDK.

◆ computeMesh()

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::computeMesh ( const SettingsInterface settings,
ProgressBarInterface progressBar,
LogListenerInterface logListener,
const BoundingBoxInterface boundingBox,
Buffer< CameraInterface * >  cameras,
const StereoPointCloudInterface inStereoPointCloud,
StereoMeshInterface outStereoMesh 
)
pure virtual

Compute the Mesh using the Sasha pipeline, starting from the Dense point cloud output

Parameters
[in]settingscomputation settings
[in]progressBarcomputation progress bar for status management
[in]logListenercomputation log listener for printing log information
[in]boundingBoxbounding box information. Everything outside the specified bounding box will not be reconstructed
[in]camerascameras vector to process. Cameras must be initialized with existing image files. A max of 50 cameras are supported in the free version.
[in]inStereoPointClouddense point cloud. Must contain a valid dense point cloud object
[out]outStereoMeshmesh object. It will be filled by the mesh extraction algorithms
Returns
One of the following result codes:
Note
A maximum of 50 cameras is allowed in the free version of the SDK.

◆ computeOrthophoto()

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::computeOrthophoto ( const SettingsInterface settings,
ProgressBarInterface progressBar,
LogListenerInterface logListener,
Buffer< CameraInterface * >  cameras,
const StereoMeshInterface mesh,
ConstBuffer< double >  transform,
OrthophotoInterface outOrthophoto 
)
pure virtual

Compute a true orthophoto from a mesh object

Parameters
[in]settingscomputation settings - The Orthophoto generation Parameters will be included in the "Orthophoto" section
[in]progressBarcomputation progress bar for status management
[in]logListenercomputation log listener for printing log information
[in]camerascameras vector to process. Cameras must be initialized with existing image files.
[in]meshmesh object. Must contain a valid mesh object
[in]transform4x4 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]outOrthophotoorthophoto object. It will be filled by the orthophoto algorithms
Returns
One of the following result codes:

◆ computeOrthophotoFromPoints()

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::computeOrthophotoFromPoints ( const SettingsInterface settings,
ProgressBarInterface progressBar,
LogListenerInterface logListener,
const StereoPointCloudInterface pointCloud,
ConstBuffer< double >  transform,
OrthophotoInterface outOrthophoto 
)
pure virtual

Compute a true orthophoto from points with colors

Parameters
[in]settingscomputation settings - The Orthophoto generation Parameters will be included in the "Orthophoto" section
[in]progressBarcomputation progress bar for status management
[in]logListenercomputation log listener for printing log information
[in]pointCloudpointcloud object. Must contain a valid dense point cloud object with valid colors associated
[in]transform4x4 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]outOrthophotoorthophoto object. It will be filled by the orthophoto algorithms
Returns
One of the following result codes:

◆ computeSparsePointCloudFromKnownPPM()

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::computeSparsePointCloudFromKnownPPM ( const SettingsInterface settings,
ProgressBarInterface progressBar,
LogListenerInterface logListener,
Buffer< CameraInterface * >  cameras,
SparsePointCloudInterface outPointCloud 
)
pure virtual

Compute the sparse point cloud (structure from motion) using the Samantha pipeline starting from fixed projection matrices.

Parameters
[in]settingscomputation settings.
[in]progressBarcomputation progress bar for status management.
[in]logListenercomputation log listener for printing log information.
[in]camerascameras 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]outPointCloudsparse point cloud. It will be filled by the structure from motion process
Returns
One of the following result codes:
Note
A maximum of 50 cameras is allowed in the free version of the SDK.

◆ computeStructureAndMotion()

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::computeStructureAndMotion ( const SettingsInterface settings,
ProgressBarInterface progressBar,
LogListenerInterface logListener,
Buffer< CameraInterface * >  inOutCameras,
SparsePointCloudInterface outPointCloud 
)
pure virtual

Compute cameras parameters and the sparse point cloud (structure from motion) using the Samantha pipeline.

Parameters
[in]settingscomputation settings.
[in]progressBarcomputation progress bar for status management.
[in]logListenercomputation log listener for printing log information.
[in,out]inOutCamerascameras to process. Cameras must be initialized with existing image files.
[out]outPointCloudsparse point cloud. It will be filled by the structure from motion process
Returns
One of the following result codes:
Note
A maximum of 50 cameras is allowed in the free version of the SDK.

◆ computeStructureAndMotionConstrained()

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::computeStructureAndMotionConstrained ( const SettingsInterface settings,
ProgressBarInterface progressBar,
LogListenerInterface logListener,
Buffer< CameraInterface * >  inOutCameras,
ConstBuffer< ControlPointConstraintInterface * >  inPointConstraints,
ConstBuffer< CameraConstraintInterface * >  inCameraConstraints,
SparsePointCloudInterface outPointCloud 
)
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.

Parameters
[in]settingscomputation settings.
[in]progressBarcomputation progress bar for status management.
[in]logListenercomputation log listener for printing log information.
[in,out]inOutCamerascameras 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]outPointCloudsparse point cloud. It will be filled by the structure from motion process
Returns
One of the following result codes:
Note
A maximum of 50 cameras is allowed in the free version of the SDK.

◆ computeTexturedMesh() [1/2]

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::computeTexturedMesh ( const SettingsInterface settings,
ProgressBarInterface progressBar,
LogListenerInterface logListener,
Buffer< CameraInterface * >  cameras,
const StereoMeshInterface mesh,
ConstBuffer< TexCoords uvCoords,
StereoTexturedMeshInterface outStereoTexturedMesh 
)
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.

Parameters
[in]settingscomputation settings
[in]progressBarcomputation progress bar for status management
[in]logListenercomputation log listener for printing log information
[in]camerascameras vector to process. Cameras must be initialized with existing image files. A max of 50 cameras are supported in the free version.
[in]meshmesh object. Must contain a valid dense point cloud object
[in]uvCoordstexture coordinates. A constant buffer of point texture coordinates.
[out]outStereoTexturedMeshmesh object. It will be filled by the texturing algorithms
Returns
One of the following result codes:
Note
A maximum of 50 cameras is supported in the free version of the SDK.

◆ computeTexturedMesh() [2/2]

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::computeTexturedMesh ( const SettingsInterface settings,
ProgressBarInterface progressBar,
LogListenerInterface logListener,
Buffer< CameraInterface * >  cameras,
const StereoMeshInterface mesh,
StereoTexturedMeshInterface outStereoTexturedMesh 
)
pure virtual

Warning: Experimental feature. Compute the Textured Mesh using the Tessa pipeline, starting from the a Stereo Mesh.

Parameters
[in]settingscomputation settings.
[in]progressBarcomputation progress bar for status management.
[in]logListenercomputation log listener for printing log information.
[in]camerascameras vector to process. Cameras must be initialized with existing image files.
[in]meshmesh object. Must contain a previously computed stereo mesh object.
[out]outStereoTexturedMeshmesh object. It will be filled by the texturing algorithms
Returns
One of the following result codes:
Note
A maximum of 50 cameras is supported in the free version of the SDK.
This feature is experimental.

◆ detectMarkers()

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::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 
)
pure virtual

Detects markers in cameras.

Parameters
[in]settings(optional) A settings object. This function requires a valid "TempPath".
[in]progressBarcomputation progress bar for progress reporting.
[in]logListenercomputation log listener for printing log information.
[in]camerasa vector of valid camera objects.
[in]tagFamilythe tag family that will be searched for. See MarkerPrinter for more information.
[in]subsamplingimage scaling used in the algorithm. Higher values means faster results at the expense of accuracy.
[in]blurgaussian 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]inOutPointsa buffer of valid ControlPointConstraint objects that will be filled with markers matching information. this buffer must be at least dictionarySize long.
Note
maximumReprojectionError and minimumAngle cannot be used when input cameras are not reconstructed.
Returns
One of the following result codes:

◆ getCudaDeviceCount()

virtual FLE_DLL int FlowEngine::FlowEngineInterface::getCudaDeviceCount ( ) const
pure virtual
Returns
the number of available CUDA devices.

◆ getCudaDeviceInfo()

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::getCudaDeviceInfo ( int  device,
CudaDeviceInfo outInfo 
) const
pure virtual

Returns information about a CUDA device.

Parameters
[in]devicethe index of the device to be queried. Must be between 0 and getCudaDeviceCount().
[out]outInforeference to a CudaDeviceInfo that will hold the information upon success.
Returns
One of the following result codes:

◆ getVersion() [1/2]

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::getVersion ( StringBuffer  outVersion) const
pure virtual

Returns the current FlowEngine version.

Parameters
[out]outVersionstring buffer that receives the current version of FlowEngine.
Returns
One of the following result codes:

◆ getVersion() [2/2]

virtual FLE_DLL void FlowEngine::FlowEngineInterface::getVersion ( Version outVersion) const
pure virtual

Returns the current FlowEngine version.

Parameters
[out]outVersionVersion struct that receives the current version of FlowEngine.

◆ getVersionLength()

virtual FLE_DLL Size FlowEngine::FlowEngineInterface::getVersionLength ( ) const
pure virtual
Returns
the length of the string containing the current version of FlowEngine (excluding the termination character).

◆ isFreeVersion()

virtual FLE_DLL bool FlowEngine::FlowEngineInterface::isFreeVersion ( ) const
pure virtual
Returns
true if this is the free version of the SDK, false otherwise.

◆ isLatestVersion()

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::isLatestVersion ( ) const
pure virtual

Contact 3dflow.net servers to check if the running version of the SDK is the latest one.

Returns
One of the following result codes:
Note
Requires an internet connection.

◆ morphMesh()

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::morphMesh ( const SettingsInterface settings,
ProgressBarInterface progressBar,
LogListenerInterface logListener,
const StereoMeshInterface dataMesh,
StereoMeshInterface inoutTemplateMesh 
)
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.

Parameters
[in]settingscomputation settings
[in]progressBarcomputation progress bar for status management
[in]logListenercomputation log listener for printing log information
[in]dataMeshthe reference mesh
[in]inoutTemplateMeshthe mesh that will be morphed toward the reference mesh

◆ pause()

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::pause ( )
pure virtual

Send a pause signal to pause the computation. The pausing might take some time.

Returns
One of the following result codes:

◆ performBundleAdjustment()

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::performBundleAdjustment ( const SettingsInterface inSettings,
ProgressBarInterface inProgressBar,
LogListenerInterface inLogListener,
ConstBuffer< ControlPointConstraintInterface * >  inPointConstraints,
ConstBuffer< CameraConstraintInterface * >  inCameraConstraints,
Buffer< CameraInterface * >  inOutCameras,
SparsePointCloudInterface inOutPointCloud,
Buffer< unsigned char >  inOutCamerasStatus 
)
pure virtual

Optimizes camera parameters and the sparse point cloud using bundle adjustment and optional camera constraints and/or control points constraints.

Parameters
[in]inSettingscomputation settings
[in]inProgressBarcomputation progress bar for status management
[in]inLogListenercomputation 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]inOutCamerascameras 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]inOutPointCloudsparse point cloud. Must contain a valid point cloud in input that will be modified by the bundle adjustment process.
[in,out]inOutCamerasStatuscameras 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)
Returns
One of the following result codes:
Note
A maximum of 50 cameras is allowed in the free version of the SDK.

◆ recomputeVisibility() [1/2]

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::recomputeVisibility ( const SettingsInterface settings,
ProgressBarInterface progressBar,
LogListenerInterface logListener,
Buffer< CameraInterface * >  cameras,
bool  updateProperties,
Index  seedPoints,
bool  keepOnlySeedPoints,
StereoPointCloudInterface inOutPoints 
)
pure virtual

Recompute the visibility for the current dense point cloud object, using the provided camera vector

Parameters
[in]settingscomputation settings
[in]progressBarcomputation progress bar for status management
[in]logListenercomputation log listener for printing log information
[in]camerascameras vector to process. Cameras must be initialized with existing image files. A max of 50 cameras are supported in the free version.
[in]updatePropertiesset to true to recompute the colors and normals after the visibility recomputation
[in]seedPointsthe number of seed points to keep. Seeds points are used for meshing. Use 0 for automatic.
[in]keepOnlySeedPointsset to true to discard all non-seed points after the process (uses less memory)
[in,out]inOutPointsthe dense point cloud object. Must contain a valid dense point cloud object object
Returns
One of the following result codes:
Note
This function is not supported in the free version of the SDK.
  • If the cameras vector is empty, the visibility will be reset to an empty status.

◆ recomputeVisibility() [2/2]

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::recomputeVisibility ( const SettingsInterface settings,
ProgressBarInterface progressBar,
LogListenerInterface logListener,
Buffer< CameraInterface * >  cameras,
bool  updateProperties,
StereoMeshInterface inOutMesh 
)
pure virtual

Recompute the visibility for the current mesh object, using the provided camera vector

Parameters
[in]settingscomputation settings
[in]progressBarcomputation progress bar for status management
[in]logListenercomputation log listener for printing log information
[in]camerascameras vector to process. Cameras must be initialized with existing image files. A max of 50 cameras are supported in the free version.
[in]updatePropertiesset to true to recompute the colors and normals after the visibility recomputation
[in,out]inOutMeshthe inoutMesh object. Must contain a valid mesh object
Returns
One of the following result codes:
Note
This function is not supported in the free version of the SDK.
  • If the cameras vector is empty, the visibility will be reset to an empty status.

◆ resume()

virtual FLE_DLL Result FlowEngine::FlowEngineInterface::resume ( )
pure virtual

Send a resume signal to resume the computation after it has been paused.

Returns
One of the following result codes:

◆ setLogTimestamp()

virtual FLE_DLL void FlowEngine::FlowEngineInterface::setLogTimestamp ( bool  logTimeStamp)
pure virtual

Enabled or disable the log timestamp write at the beginning of each line.

Parameters
[in]logTimeStampset to true to enable the timestamp, false to disable it.
Note
The default value is true (enabled).

◆ setMaxNumberOfCores()

virtual FLE_DLL void FlowEngine::FlowEngineInterface::setMaxNumberOfCores ( Size  numberOfCores)
pure virtual

Set the maximum number of cores that FlowEngine should use.

Parameters
[in]numberOfCoresthe number of cores. Set to 0 to use all the available cores.
Note
The default value is 0 (no limit).

◆ setMemoryLimit()

virtual FLE_DLL void FlowEngine::FlowEngineInterface::setMemoryLimit ( Size  memoryLimit)
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.

Parameters
[in]memoryLimitthe memory limit in bytes. Set to 0 to use all the available physical memory.
Note
The default value is 0 (no limit).