DAVID4 SDK
1.8.7
|
Implements interface functions of IStructuredLightScanner using DAVID Low Level Library. More...
#include <StructuredLightScannerD4Lib.h>
Classes | |
struct | AcquisitionParams |
Parameters for acquisition. More... | |
struct | ResultFilteringParamsEx |
Extended parameters for result filtering. More... | |
Public Member Functions | |
StructuredLightScannerD4Lib (IShapeFusion *shapeFusion) | |
Constructor. More... | |
void | SetResultFilteringParamsEx (const ResultFilteringParamsEx ¶ms) |
Set StructuredLightScannerD4Lib::ResultFilteringParamsEx. More... | |
void | SetAcquisitionParams (const AcquisitionParams ¶ms) |
Set StructuredLightScannerD4Lib::AcquisitionParams. More... | |
void | SetFrequencies (int frequencies) |
Set number of frequencies (affects number of patterns). More... | |
virtual void | SetScreenID (int screenID) |
Set the new screen ID. More... | |
virtual std::vector< std::string > | GetAvailableCameraNames () |
Returns a list of available cameras. More... | |
virtual void | SelectCamera (const std::string &cameraName, const ImageFormat &imageFormat=ImageFormat()) |
Select a new camera. More... | |
virtual bool | CheckCamera () |
Check state of camera. More... | |
virtual void | SetCameraProperty (const std::string &propertyName, double value, enum CamPropsUsage camPropsUsage=CamPropsForAll) |
Set the camera property 'propertyName'. More... | |
virtual double | GetCameraProperty (const std::string &propertyName, enum CamPropsUsage camPropsUsage=CamPropsForScanning) |
Get the camera property 'propertyName'. More... | |
virtual std::vector< std::string > | GetCameraPropertyNames (bool onlyAvailable) |
Get a list of camera property names. More... | |
virtual void | SelectImageSequence (const std::string &directory) |
Selects a sequence of image files as "virtual camera". More... | |
virtual int | GetPatternCount () |
Get the current number of pattern for the complete sequence. More... | |
virtual void | GetPatternImage (uint8_t *data, int width, int height, PatternPixelFormat pixelFormat, int patternIndex) |
Get the pattern image with the zero based index 'patternIndex'. More... | |
virtual void | SetCapturedImage (const uint8_t *data, int width, int height, CapturedPixelFormat pixelFormat, int patternIndex) |
Set the captured image for given pattern with zero based index 'patternIndex'. More... | |
virtual void | SetTextureImage (const uint8_t *data, int width, int height, PixelFormat pixelFormat) |
Set the texture image analog to SetCapturedImage. More... | |
virtual void | GetLiveImage (std::vector< uint8_t > &pixelValues, int &width, int &height) |
Get the current grayscale live image from the camera. More... | |
virtual void | SetCodedLightPhaseShiftMode (const CodedLightPhaseShiftParams ¶ms) |
Select scan mode Coded Light + Phase Shift (standard DAVID4 mode) and sets the parameters. More... | |
virtual CodedLightPhaseShiftParams | GetCodedLightPhaseShiftParams () |
Get current SLS params for Coded Light and Phase Shift. More... | |
virtual void | SetResultFiltering (const ResultFilteringParams ¶ms) |
Set the result filtering parameters for SL scans. More... | |
virtual ResultFilteringParams | GetResultFiltering () |
Get the result filtering parameters for SL scans. More... | |
virtual void | ImportCalibration (const std::string &camCalibFilename, const std::string &projectorCalibFilename) |
Import camera and projector calibration from XML files. More... | |
virtual void | ExportCalibration (const std::string &camCalibFilename, const std::string &projectorCalibFilename) |
Export camera and projector calibration to XML files. More... | |
virtual void | ChangeCameraCalibrationResolution (int newWidth, int newHeight) |
Change resolution of image format used camera calibration. More... | |
virtual std::vector< CalibPoint > | Calibrate (double scale) |
Trigger automatic calibration of the Structured Light Scanner. More... | |
virtual int | Scan (bool grabTexture=false, bool setAsBackground=false) |
Trigger a Structured Light Scan. More... | |
virtual void | GrabTexture () |
Grab a new texture. | |
virtual void | AutoWhiteBalance () |
Execute an auto white balancing procedure. | |
virtual int | AddScanToShapeFusion () |
Add the current scan to 'Shape Fusion' module. More... | |
virtual void | ExportMesh (const std::string &filename) |
Export the current scan as a triangular mesh. More... | |
virtual void | ExportBackgroundDepthmap (const std::string &filename) |
Export the current background as a depth map file (.PFM). More... | |
virtual void | ImportBackgroundDepthmap (const std::string &filename) |
Import background from a depth map file (.PFM). More... | |
virtual void | GetBackgroundDepthmap (std::vector< float > &depthValues, int &width, int &height) |
Gets the currently used background scan as depth map. More... | |
virtual void | SetBackgroundDepthmap (const std::vector< float > &depthValues, int width, int height) |
Sets the background scan, giving a depth map. More... | |
virtual void | SetBackgroundPlanes (const std::vector< Plane > &planes) |
Sets the "background scan" from a given list of planes. More... | |
![]() | |
virtual | ~IStructuredLightScanner () |
Destructor. | |
Protected Types | |
typedef std::recursive_mutex | Mutex |
Used mutex. | |
typedef std::lock_guard< Mutex > | Guard |
Guard for automatic unlocking. | |
Protected Member Functions | |
void | CaptureSequence () |
Capture a SLS sequence using the current settings. More... | |
void | CaptureTexture (bool applyWhiteBalance) |
Capture a texture using the current settings. More... | |
void | SwitchCameraProperties (CamPropsUsage usage) |
Switch camera properties. More... | |
void | DisplaySetupImage () |
Show setup image. | |
bool | DisplayChessboardImage () |
Display chessboard image for validation of calibration. More... | |
virtual void | OnCalibrationDone (const std::vector< d4calib_CalibPoint > &calibPoints) |
Is called after successful calibration. More... | |
Protected Attributes | |
Mutex | m_mutex |
Mutex used for synchronization. | |
std::shared_ptr< d4cam > | m_cam |
Handle to camera. | |
std::shared_ptr< d4calib > | m_camCalib |
Handle to camera calibration. | |
std::shared_ptr< d4projector > | m_projector |
Handle to projector. | |
std::shared_ptr< d4calib > | m_projectorCalib |
Handle to projector calibration. | |
std::shared_ptr< d4img > | m_live |
Handle to live image. | |
std::shared_ptr< d4sls > | m_sls |
Handle to SLS instance. | |
std::shared_ptr< d4fimg > | m_background |
Handle to background depth image. | |
std::shared_ptr< d4mesh > | m_scan |
Handle to current scan. | |
std::shared_ptr< d4img > | m_texture |
Handle to current texture. | |
std::vector< std::shared_ptr < d4img > > | m_sequence |
Array of handles to captured images. | |
double | m_scale |
Calibration scale. | |
int | m_noiseReduction |
Temporal noise reduction. | |
ResultFilteringParamsEx | m_resultFilteringParams |
Parameters for result filtering. | |
AcquisitionParams | m_acqParams |
Acquisition parameters. | |
std::map< std::string, double > | m_camPropsForScanning |
Camera properties for scanning mode. | |
std::map< std::string, double > | m_camPropsForTexturing |
Camera properties for texturing mode. | |
double | m_whiteBalance [3] |
White balance correction factors. | |
IShapeFusion * | m_shapeFusion |
Interface to Shape Fusion module. | |
bool | m_externalCapture |
Camera images captured by external acquisition? | |
Additional Inherited Members | |
![]() | |
static void | GetCalibrationError (double &maxDelta, double &rmsError, const std::vector< CalibPoint > &calibPoints) |
Helper function for computing the calibration error given an array of calibration correspondences. More... | |
Implements interface functions of IStructuredLightScanner using DAVID Low Level Library.
Definition at line 23 of file StructuredLightScannerD4Lib.h.
david::StructuredLightScannerD4Lib::StructuredLightScannerD4Lib | ( | IShapeFusion * | shapeFusion) |
Constructor.
[in,out] | shapeFusion | Optional pointer to 'Shape Fusion' module. Needed for AddScanToShapeFusion. |
|
virtual |
Add the current scan to 'Shape Fusion' module.
david::Error_MissingObject | (david::FunctionException) No scan data at hand. |
Implements david::IStructuredLightScanner.
|
virtual |
Trigger automatic calibration of the Structured Light Scanner.
The function returns when calibration is finished or an error occurred.
[in] | scale | Scale of the calibration patterns. Typically in mm. |
david::Error_CameraCalibration | (david::FunctionException) Camera calibration failed. |
david::Error_ProjectorCalibration | (david::FunctionException) Projector calibration failed. |
Implements david::IStructuredLightScanner.
|
protected |
Capture a SLS sequence using the current settings.
The captured images are stored in 'm_sequence'.
|
protected |
Capture a texture using the current settings.
[in] | applyWhiteBalance | Apply white balance to the captured texture image? |
|
virtual |
Change resolution of image format used camera calibration.
[in] | newWidth | New camera image width. |
[in] | newHeight | New camera image height. |
david::Error_NotCalibrated | (david::FunctionException) Camera is not calibrated. |
david::Error_InvalidFormat | (david::FunctionException) Requested image resolution not supported. |
Implements david::IStructuredLightScanner.
|
virtual |
Check state of camera.
Implements david::IStructuredLightScanner.
|
protected |
Display chessboard image for validation of calibration.
|
virtual |
Export the current background as a depth map file (.PFM).
[in] | filename | Filename of the depth map to be exported. |
Implements david::IStructuredLightScanner.
|
virtual |
Export camera and projector calibration to XML files.
[in] | camCalibFilename | Filename of the camera calibration to be exported to. |
[in] | projectorCalibFilename | Filename of the projector calibration to be exported to. |
david::Error_NotCalibrated | (david::FunctionException) Scanner is not calibrated. |
Implements david::IStructuredLightScanner.
|
virtual |
Export the current scan as a triangular mesh.
See documentation of DAVID software for supported file formats.
[in] | filename | Filename of the mesh to be exported. |
david::Error_NoAccess | (david::FunctionException) No access to path. |
david::Error_InvalidPath | (david::FunctionException) Export path invalid. |
david::Error_DirectoryNotFound | (david::FunctionException) Export target directory does not exist. |
david::Error_MissingFilename | (david::FunctionException) Export path misses file name. |
david::Error_InvalidMeshId | (david::FunctionException) Specified meshID does not exist. |
Implements david::IStructuredLightScanner.
|
virtual |
Returns a list of available cameras.
Implements david::IStructuredLightScanner.
|
virtual |
Gets the currently used background scan as depth map.
[out] | depthValues | The depth values, row by row, from top to bottom, each row left to right. |
[out] | width | Number of columns |
[out] | height | Number of rows |
Implements david::IStructuredLightScanner.
|
virtual |
Get the camera property 'propertyName'.
[in] | propertyName | Name of property. |
[in] | camPropsUsage | For which algorithm should the camera property be queried? See david::CamPropsSelect. CamPropsForAll is not allowed here. |
david::Error_DeviceNotAvailable | (david::FunctionException) Selected camera is not available. |
david::Error_InvalidArgument | (david::FunctionException) Invalid property or property is not available. |
Implements david::IStructuredLightScanner.
|
virtual |
Get a list of camera property names.
[in] | onlyAvailable | List only available camera properties? |
Implements david::IStructuredLightScanner.
|
virtual |
Get current SLS params for Coded Light and Phase Shift.
Implements david::IStructuredLightScanner.
|
virtual |
Get the current grayscale live image from the camera.
[out] | pixelValues | 8bit gray scale pixel values are writting into this buffer. |
[out] | width | Width of the image. |
[out] | height | Height of the image. |
david::Error_NoLiveImage | (david::FunctionException) Live image is not available. |
Implements david::IStructuredLightScanner.
|
virtual |
Get the current number of pattern for the complete sequence.
Implements david::IStructuredLightScanner.
|
virtual |
Get the pattern image with the zero based index 'patternIndex'.
[out] | data | Pixel values are written to this buffer. |
[in] | width | Requested width of pattern image. |
[in] | height | Requested height of pattern image. |
[in] | pixelFormat | Supported pixel formats for pattern images. |
[in] | patternIndex | Zero based index of pattern image. See also GetPatternCount. |
Implements david::IStructuredLightScanner.
|
virtual |
Get the result filtering parameters for SL scans.
Implements david::IStructuredLightScanner.
|
virtual |
Import background from a depth map file (.PFM).
[in] | filename | Filename of the depth map to be imported. |
Implements david::IStructuredLightScanner.
|
virtual |
Import camera and projector calibration from XML files.
[in] | camCalibFilename | Filename of the camera calibration to be imported from. |
[in] | projectorCalibFilename | Filename of the projector calibration to be imported from. |
david::Error_CameraCalibration | (david::FunctionException) Could not read camera calibration file. |
david::Error_ProjectorCalibration | (david::FunctionException) Could not read projector calibration file. |
Implements david::IStructuredLightScanner.
|
protectedvirtual |
Is called after successful calibration.
[in] | calibPoints | Array of calibration points. See d4calib_CalibPoint. |
|
virtual |
Trigger a Structured Light Scan.
The function computes a 3D scan from a sequence of captured pattern images. The captured images can be provided in two ways:
The function returns when scanning is finished or an error occurred.
[in] | grabTexture | Also grab a texture with the scan (default: false) |
[in] | setAsBackground | Define this scan as background (for Background Removal in ResultFiltering) (default: false) |
david::Error_NotCalibrated | (david::FunctionException) Cannot scan because scanner is not calibrated. |
Implements david::IStructuredLightScanner.
|
virtual |
Select a new camera.
Example:
[in] | cameraName | Name of the camera. |
[in] | imageFormat | Format of the camera image. |
david::Error_DeviceNotAvailable | (david::FunctionException) Selected camera is not available. |
david::Error_FormatNotAvailable | (david::FunctionException) Selected camera image format is invalid. |
Implements david::IStructuredLightScanner.
|
virtual |
Selects a sequence of image files as "virtual camera".
All images must be located in the same directory. The image file names are chosen automatically:
Image for camera calibration | File name must contain "cam_calib" |
Pattern images | File names must contain "image" and be sorted alphabetically. |
Texture image | File name must contain "texture" |
[in] | directory | Path to the image files. |
david::Error_InvalidPath | (david::FunctionException) Path invalid. |
david::Error_DirectoryNotFound | (david::FunctionException) Directory does not exist. |
Implements david::IStructuredLightScanner.
void david::StructuredLightScannerD4Lib::SetAcquisitionParams | ( | const AcquisitionParams & | params) |
Set StructuredLightScannerD4Lib::AcquisitionParams.
[in] | params | See StructuredLightScannerD4Lib::AcquisitionParams. |
|
virtual |
Sets the background scan, giving a depth map.
The resolution should be identical to the camera resolution.
[in] | depthValues | The depth values, row by row, from top to bottom, each row left to right. |
[in] | width | Number of columns |
[in] | height | Number of rows |
Implements david::IStructuredLightScanner.
|
virtual |
Sets the "background scan" from a given list of planes.
Camera must be calibrated first!
[in] | planes | The list of planes that define the background. |
Implements david::IStructuredLightScanner.
|
virtual |
Set the camera property 'propertyName'.
Here are some important property names:
[in] | propertyName | Name of property. |
[in] | value | New value of the property. |
[in] | camPropsUsage | For which algorithm should the camera property be set? See david::CamPropsSelect. |
david::Error_DeviceNotAvailable | (david::FunctionException) Selected camera is not available. |
david::Error_InvalidArgument | (david::FunctionException) Invalid property or property is not available. |
Implements david::IStructuredLightScanner.
|
virtual |
Set the captured image for given pattern with zero based index 'patternIndex'.
[in] | data | Valid pointer to buffer with pixel values.
|
[in] | width | Width of captured image. |
[in] | height | Height of captured image. |
[in] | pixelFormat | Pixel format of captured image. |
[in] | patternIndex | Zero based index of pattern image. See also GetPatternCount. |
Implements david::IStructuredLightScanner.
|
virtual |
Select scan mode Coded Light + Phase Shift (standard DAVID4 mode) and sets the parameters.
Missing parameters will remain unchanged.
[in] | params | Parameters for this structured light mode. |
Implements david::IStructuredLightScanner.
void david::StructuredLightScannerD4Lib::SetFrequencies | ( | int | frequencies) |
Set number of frequencies (affects number of patterns).
Optimal setting depends on camera/projector resolution and setup.
[in] | frequencies | New value for frequencies. |
|
virtual |
Set the result filtering parameters for SL scans.
[in] | params | Parameters for result filtering. |
Implements david::IStructuredLightScanner.
void david::StructuredLightScannerD4Lib::SetResultFilteringParamsEx | ( | const ResultFilteringParamsEx & | params) |
Set StructuredLightScannerD4Lib::ResultFilteringParamsEx.
[in] | params | See StructuredLightScannerD4Lib::ResultFilteringParamsEx. |
|
virtual |
Set the new screen ID.
The value 0 switches the projection off.
[in] | screenID | ID of the screen used for displaying structured light patterns, or 0 for OFF. |
Implements david::IStructuredLightScanner.
|
virtual |
Set the texture image analog to SetCapturedImage.
[in] | data | Valid pointer to buffer with pixel values. Size of 'data' has to be equal to GetImageSize(width, height, pixelFormat). |
[in] | width | Width of texture image. |
[in] | height | Height of texture image. |
[in] | pixelFormat | Pixel format of captured image. |
Implements david::IStructuredLightScanner.
|
protected |
Switch camera properties.
[in] | usage | Select camera property usage. See CamPropsUsage. |