Mech-Eye API 2.5.1
API reference documentation for Mech-Eye 3D Laser Profiler
Loading...
Searching...
No Matches
ProfilerCalibrationInterfaces.h
Go to the documentation of this file.
1/*******************************************************************************
2 * BSD 3-Clause License
3 *
4 * Copyright (c) 2016-2025, Mech-Mind Robotics Technologies Co., Ltd.
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright notice, this
11 * list of conditions and the following disclaimer.
12 *
13 * 2. Redistributions in binary form must reproduce the above copyright notice,
14 * this list of conditions and the following disclaimer in the documentation
15 * and/or other materials provided with the distribution.
16 *
17 * 3. Neither the name of the copyright holder nor the names of its
18 * contributors may be used to endorse or promote products derived from
19 * this software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 *
32 * Info: https://www.mech-mind.com/
33 *
34 ******************************************************************************/
35
36#pragma once
37#include <memory>
38#include <optional>
39#include <opencv2/core/mat.hpp>
40#include "api_global.h"
43
44namespace mmind {
45namespace eye {
46class MultiProfilerCalibration;
48{
49public:
52
59 bool setCalibCameraModel(const std::string& cameraModel);
60
66 void setMajorDeviceInfo(const DeviceInfo& deviceInfo);
67
73 void setMinorDeviceInfos(const std::vector<DeviceInfo>& deviceInfos);
74
80 void setCalibTargetSize(const TargetSize& targetSize);
81
87 void setCalibTargetPoses(const std::vector<TargetPose>& targetPoses);
88
99 const std::vector<cv::Mat>& minorDepths,
100 std::vector<CalibResult>& calibResults);
101
112 bool saveCalibFiles(bool needSaveAll = true, const std::string& saveFolderName = "") const;
113
129 const ProfilerImage& majorImage, const std::vector<ProfilerImage>& minorImages,
130 const std::vector<CalibResult>& calibResults, MultiStitchResult& stitchResults,
131 const std::optional<MultiStitchParams>& stitchParams = std::nullopt);
132
148 const ProfilerImage& majorImage, const std::vector<ProfilerImage>& minorImages,
149 const std::vector<CalibResult>& calibResults, MultiStitchResultZParallel& stitchResults,
150 const std::optional<MultiStitchParams>& stitchParams = std::nullopt);
151
163 const std::vector<bool>& fusionFlag = {});
164
182 const ProfilerImage& majorStitchImage,
183 const std::vector<MinorStitchResultZParallel>& minorStitchResults,
184 const cv::Point2i& majorBias, FusionResult& fusionResult,
185 const std::vector<bool>& fusionFlag = {});
186
193 bool saveStitchFiles(const std::string& saveFolderName = "") const;
194
202 bool saveStitchFilesForZParallel(const std::string& saveFolderName = "") const;
203
214 MultiProfilerErrorStatus loadCalibProperties(const std::string& loadFolderName = "",
215 bool needLoadAll = false);
220 std::vector<CalibResult> getCurrentCalibResults() const;
221
229
236
242 std::string getCameraModel() const;
243
249 std::vector<DeviceInfo> getMinorDeviceInfos() const;
250
257 std::vector<TargetPose> getTargetPoses() const;
258
272 ProfilerCalibrationInterfaces(const std::string& cameraModel, const DeviceInfo& majorDeviceInfo,
273 const std::vector<DeviceInfo>& minorDeviceInfos,
274 const TargetSize& targetSize,
275 const std::vector<TargetPose>& targetPoses);
276
277private:
278 std::unique_ptr<MultiProfilerCalibration> calibrationInstance;
279};
280
281} // namespace eye
282
283} // namespace mmind
#define MMIND_API_EXPORT
Definition api_global.h:48
Definition MultiProfilerErrorStatus.h:7
Definition ProfilerCalibrationInterfaces.h:48
std::vector< DeviceInfo > getMinorDeviceInfos() const
Gets the minor devices' information. This function retrieves a list of information for all minor devi...
std::vector< TargetPose > getTargetPoses() const
Gets the calibration target poses. This function retrieves the spatial positions and orientations of ...
ProfilerCalibrationInterfaces(const std::string &cameraModel, const DeviceInfo &majorDeviceInfo, const std::vector< DeviceInfo > &minorDeviceInfos, const TargetSize &targetSize, const std::vector< TargetPose > &targetPoses)
Constructs a new ProfilerCalibrationInterfaces object with specified parameters. This constructor ini...
bool setCalibCameraModel(const std::string &cameraModel)
Sets the model of the laser profilers used in the calibration, in the form of a string such as "Mech-...
TargetSize getTargetSize() const
Gets the target size. This function retrieves the size of the calibration target.
MultiProfilerErrorStatus imageFusionForZParallel(const ProfilerImage &majorStitchImage, const std::vector< MinorStitchResultZParallel > &minorStitchResults, const cv::Point2i &majorBias, FusionResult &fusionResult, const std::vector< bool > &fusionFlag={})
Performs fusion based on the stitching results when the laser profilers are arranged in the Wide mode...
void setMinorDeviceInfos(const std::vector< DeviceInfo > &deviceInfos)
Initializes the configuration for the secondary laser profiler(s).
MultiProfilerErrorStatus calculateCalibration(const cv::Mat &majorDepth, const std::vector< cv::Mat > &minorDepths, std::vector< CalibResult > &calibResults)
Calculates the calibration results based on the depth maps acquired by the primary and secondary lase...
std::string getCameraModel() const
Gets the camera model identifier. This function retrieves the model name of the profiler.
MultiProfilerErrorStatus stitchImagesForZParallel(const ProfilerImage &majorImage, const std::vector< ProfilerImage > &minorImages, const std::vector< CalibResult > &calibResults, MultiStitchResultZParallel &stitchResults, const std::optional< MultiStitchParams > &stitchParams=std::nullopt)
Calculates the stitching results when the laser profilers are arranged in the Wide mode (i....
MultiProfilerErrorStatus loadCalibProperties(const std::string &loadFolderName="", bool needLoadAll=false)
Loads the calibration data from the files in the specified path, typically used before stitching star...
bool saveCalibFiles(bool needSaveAll=true, const std::string &saveFolderName="") const
Saves the calibration data to files in the specified path.
MultiProfilerErrorStatus stitchImages(const ProfilerImage &majorImage, const std::vector< ProfilerImage > &minorImages, const std::vector< CalibResult > &calibResults, MultiStitchResult &stitchResults, const std::optional< MultiStitchParams > &stitchParams=std::nullopt)
Calculates the stitching results when the laser profilers are arranged in the Angle mode (i....
bool saveStitchFiles(const std::string &saveFolderName="") const
Saves the stitching results to files in the specified path.
MultiProfilerErrorStatus imageFusionForZParallel(FusionResult &fusionResult, const std::vector< bool > &fusionFlag={})
Performs fusion based on the stitching results when the laser profilers are arranged in the Wide mode...
void setMajorDeviceInfo(const DeviceInfo &deviceInfo)
Initializes the configuration for the primary laser profiler.
void setCalibTargetSize(const TargetSize &targetSize)
Sets the dimensions of the frustums of the calibration target.
DeviceInfo getMajorDeviceInfo() const
Gets the major device information. This function retrieves the information of the primary device used...
void setCalibTargetPoses(const std::vector< TargetPose > &targetPoses)
Defines the relative position of the frustums of the calibration target.
bool saveStitchFilesForZParallel(const std::string &saveFolderName="") const
Saves the stitching results to files in the specified path when the laser profilers are arranged in t...
std::vector< CalibResult > getCurrentCalibResults() const
Gets the current calibration results, which can be used for stitching.
Definition Array2D.h:8
Defines the configuration for each laser profiler.
Definition ProfilerCalibrationTypes.h:74
The fusion results.
Definition ProfilerCalibrationTypes.h:203
Stores the stitching results.
Definition ProfilerCalibrationTypes.h:171
The stitching results when the laser profilers are arranged in the Wide mode (i.e....
Definition ProfilerCalibrationTypes.h:193
Stores the intensity image and depth map acquired by the laser profiler.
Definition ProfilerCalibrationTypes.h:33
Defines the dimensions of the frustums of the calibration target.
Definition ProfilerCalibrationTypes.h:42