31#include <rtabmap/core/rtabmap_core_export.h>
33#include <opencv2/core/core.hpp>
34#include <rtabmap/core/Transform.h>
35#include <rtabmap/core/Parameters.h>
36#include <rtabmap/core/CameraModel.h>
66float RTABMAP_CORE_EXPORT
ssd(
const cv::Mat & windowLeft,
const cv::Mat & windowRight);
86float RTABMAP_CORE_EXPORT
sad(
const cv::Mat & windowLeft,
const cv::Mat & windowRight);
121 const cv::Mat & leftImage,
122 const cv::Mat & rightImage,
123 const std::vector<cv::Point2f> & leftCorners,
124 std::vector<unsigned char> & status,
125 cv::Size winSize = cv::Size(6,3),
128 float minDisparity = 0.0f,
129 float maxDisparity = 64.0f,
130 bool ssdApproach =
true);
172 cv::InputArray _prevPts, cv::InputOutputArray _nextPts,
173 cv::OutputArray _status, cv::OutputArray _err,
174 cv::Size winSize = cv::Size(15,3),
int maxLevel = 3,
175 cv::TermCriteria criteria = cv::TermCriteria(cv::TermCriteria::COUNT+cv::TermCriteria::EPS, 30, 0.01),
176 int flags = 0,
double minEigThreshold = 1e-4 );
208 const cv::Mat & leftImage,
209 const cv::Mat & rightImage,
210 const ParametersMap & parameters = ParametersMap());
233 float fx,
float baseline,
234 int type = CV_32FC1);
259 const cv::Mat & leftImage,
260 const cv::Mat & rightImage,
261 const std::vector<cv::Point2f> & leftCorners,
265 int flowMaxLevel = 4,
266 int flowIterations = 20,
267 double flowEps = 0.02);
294 const cv::Size & disparitySize,
295 const std::vector<cv::Point2f> & leftCorners,
296 const std::vector<cv::Point2f> & rightCorners,
297 const std::vector<unsigned char> & mask);
322 const cv::Mat & leftImage,
323 const std::vector<cv::Point2f> & leftCorners,
324 const std::vector<cv::Point2f> & rightCorners,
325 const std::vector<unsigned char> & mask,
326 float fx,
float baseline);
396 const cv::Mat & depthImage,
399 float depthErrorRatio = 0.02f,
400 bool estWithNeighborsIfNull =
false);
418cv::Rect RTABMAP_CORE_EXPORT
computeRoi(
const cv::Mat & image,
const std::string & roiRatios);
428cv::Rect RTABMAP_CORE_EXPORT
computeRoi(
const cv::Size & imageSize,
const std::string & roiRatios);
438cv::Rect RTABMAP_CORE_EXPORT
computeRoi(
const cv::Mat & image,
const std::vector<float> & roiRatios);
449cv::Rect RTABMAP_CORE_EXPORT
computeRoi(
const cv::Size & imageSize,
const std::vector<float> & roiRatios);
467cv::Mat RTABMAP_CORE_EXPORT
decimate(
const cv::Mat & image,
int d);
485cv::Mat RTABMAP_CORE_EXPORT
interpolate(
const cv::Mat & image,
int factor,
float depthErrorRatio = 0.02f);
511 const cv::Mat & depth,
512 const cv::Mat & depthK,
513 const cv::Size & colorSize,
514 const cv::Mat & colorK,
517 const cv::Mat & depth,
518 const cv::Mat & confidence,
519 const cv::Mat & depthK,
520 const cv::Size & colorSize,
521 const cv::Mat & colorK,
523 cv::Mat & registeredConfidence);
543 const cv::Mat & depth,
544 int maximumHoleSize = 1,
545 float errorRatio = 0.02f);
575 cv::Mat & depthRegistered,
578 bool fillDoubleHoles =
false);
604 const cv::Mat & depth,
605 float sigmaS = 15.0f,
606 float sigmaR = 0.05f,
607 bool earlyDivision =
false);
626 float maxDepthError);
651 const cv::Mat & mask,
652 float clipLowHistPercent=0,
653 float clipHighHistPercent=0,
654 float * alphaOut = 0,
655 float * betaOut = 0);
676 const std::vector<cv::Mat> & images);
696void RTABMAP_CORE_EXPORT
HSVtoRGB(
float *r,
float *g,
float *b,
float h,
float s,
float v );
717void RTABMAP_CORE_EXPORT
NMS(
718 const std::vector<cv::KeyPoint> & ptsIn,
719 const cv::Mat & descriptorsIn,
720 std::vector<cv::KeyPoint> & ptsOut,
721 cv::Mat & descriptorsOut,
722 int dist_thresh,
int img_width,
int img_height);
752std::vector<int> RTABMAP_CORE_EXPORT
SSC(
753 const std::vector<cv::KeyPoint> & keypoints,
758 const std::vector<int> & indx = {});
Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...
cv::Rect RTABMAP_CORE_EXPORT computeRoi(const cv::Mat &image, const std::string &roiRatios)
Computes a region of interest (ROI) in the image using string-defined ratios.
cv::Mat RTABMAP_CORE_EXPORT fastBilateralFiltering(const cv::Mat &depth, float sigmaS=15.0f, float sigmaR=0.05f, bool earlyDivision=false)
Applies a 2D fast bilateral filter to a depth image.
cv::Mat RTABMAP_CORE_EXPORT decimate(const cv::Mat &image, int d)
Downsamples an image by a given decimation factor.
cv::Mat RTABMAP_CORE_EXPORT cvtDepthToFloat(const cv::Mat &depth16U)
Converts a 16-bit unsigned depth image (in millimeters) to a 32-bit float depth image (in meters).
cv::Mat RTABMAP_CORE_EXPORT depthFromDisparity(const cv::Mat &disparity, float fx, float baseline, int type=CV_32FC1)
Converts a disparity map to a depth map using stereo camera parameters.
bool RTABMAP_CORE_EXPORT rotateImagesUpsideUpIfNecessary(CameraModel &model, cv::Mat &rgb, cv::Mat &depth)
Rotates the input RGB and depth images to make them appear upright based on the camera's roll angle.
float RTABMAP_CORE_EXPORT ssd(const cv::Mat &windowLeft, const cv::Mat &windowRight)
Computes the Sum of Squared Differences (SSD) between two image patches.
void RTABMAP_CORE_EXPORT calcOpticalFlowPyrLKStereo(cv::InputArray _prevImg, cv::InputArray _nextImg, cv::InputArray _prevPts, cv::InputOutputArray _nextPts, cv::OutputArray _status, cv::OutputArray _err, cv::Size winSize=cv::Size(15, 3), int maxLevel=3, cv::TermCriteria criteria=cv::TermCriteria(cv::TermCriteria::COUNT+cv::TermCriteria::EPS, 30, 0.01), int flags=0, double minEigThreshold=1e-4)
Computes sparse optical flow using a pyramidal Lucas-Kanade method constrained to the x-axis.
cv::Mat RTABMAP_CORE_EXPORT registerDepth(const cv::Mat &depth, const cv::Mat &depthK, const cv::Size &colorSize, const cv::Mat &colorK, const rtabmap::Transform &transform)
Registers a depth image to a different camera frame (typically RGB).
float RTABMAP_CORE_EXPORT getDepth(const cv::Mat &depthImage, float x, float y, bool smoothing, float depthErrorRatio=0.02f, bool estWithNeighborsIfNull=false)
Retrieves a depth value from a depth image at a subpixel coordinate.
float RTABMAP_CORE_EXPORT sad(const cv::Mat &windowLeft, const cv::Mat &windowRight)
Computes the Sum of Absolute Differences (SAD) between two image patches.
cv::Mat RTABMAP_CORE_EXPORT disparityFromStereoCorrespondences(const cv::Size &disparitySize, const std::vector< cv::Point2f > &leftCorners, const std::vector< cv::Point2f > &rightCorners, const std::vector< unsigned char > &mask)
Computes a disparity map from stereo correspondences between two images.
std::vector< cv::Point2f > RTABMAP_CORE_EXPORT calcStereoCorrespondences(const cv::Mat &leftImage, const cv::Mat &rightImage, const std::vector< cv::Point2f > &leftCorners, std::vector< unsigned char > &status, cv::Size winSize=cv::Size(6, 3), int maxLevel=3, int iterations=5, float minDisparity=0.0f, float maxDisparity=64.0f, bool ssdApproach=true)
Computes stereo correspondences between left and right images using a pyramidal window-based matching...
cv::Mat RTABMAP_CORE_EXPORT cvtDepthFromFloat(const cv::Mat &depth32F)
Converts a 32-bit float depth image (in meters) to a 16-bit unsigned depth image (in millimeters).
void RTABMAP_CORE_EXPORT depthBleedingFiltering(cv::Mat &depth, float maxDepthError)
Filters out depth bleeding artifacts in a depth image.
cv::Mat RTABMAP_CORE_EXPORT brightnessAndContrastAuto(const cv::Mat &src, const cv::Mat &mask, float clipLowHistPercent=0, float clipHighHistPercent=0, float *alphaOut=0, float *betaOut=0)
Automatic brightness and contrast optimization with optional histogram clipping.
std::vector< int > RTABMAP_CORE_EXPORT SSC(const std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, float tolerance, int cols, int rows, const std::vector< int > &indx={})
Applies the SSC (Suppression via Square Covering) algorithm to spatially select keypoints.
cv::Mat RTABMAP_CORE_EXPORT depthFromStereoImages(const cv::Mat &leftImage, const cv::Mat &rightImage, const std::vector< cv::Point2f > &leftCorners, float fx, float baseline, int flowWinSize=9, int flowMaxLevel=4, int flowIterations=20, double flowEps=0.02)
Computes a depth map from stereo image pairs using optical flow tracking.
void RTABMAP_CORE_EXPORT NMS(const std::vector< cv::KeyPoint > &ptsIn, const cv::Mat &descriptorsIn, std::vector< cv::KeyPoint > &ptsOut, cv::Mat &descriptorsOut, int dist_thresh, int img_width, int img_height)
Applies Non-Maximum Suppression (NMS) to a set of keypoints.
void RTABMAP_CORE_EXPORT HSVtoRGB(float *r, float *g, float *b, float h, float s, float v)
Converts a color from HSV (Hue, Saturation, Value) to RGB.
cv::Mat RTABMAP_CORE_EXPORT exposureFusion(const std::vector< cv::Mat > &images)
Performs exposure fusion on a set of input images.
cv::Mat RTABMAP_CORE_EXPORT disparityFromStereoImages(const cv::Mat &leftImage, const cv::Mat &rightImage, const ParametersMap ¶meters=ParametersMap())
Computes the disparity map from a pair of stereo images.
cv::Mat RTABMAP_CORE_EXPORT depthFromStereoCorrespondences(const cv::Mat &leftImage, const std::vector< cv::Point2f > &leftCorners, const std::vector< cv::Point2f > &rightCorners, const std::vector< unsigned char > &mask, float fx, float baseline)
Computes a sparse depth map from corresponding stereo feature points.
cv::Mat RTABMAP_CORE_EXPORT fillDepthHoles(const cv::Mat &depth, int maximumHoleSize=1, float errorRatio=0.02f)
Fills holes in the depth image using linear interpolation.
cv::Mat RTABMAP_CORE_EXPORT interpolate(const cv::Mat &image, int factor, float depthErrorRatio=0.02f)
Upsamples a depth image using bilinear interpolation with depth consistency check.
void RTABMAP_CORE_EXPORT fillRegisteredDepthHoles(cv::Mat &depthRegistered, bool vertical, bool horizontal, bool fillDoubleHoles=false)
Fill holes in a registered depth image using linear interpolation.