#ifndef __OPENCV_SINUSOIDAL_PATTERN_HPP__
#define __OPENCV_SINUSOIDAL_PATTERN_HPP__
#include "opencv2/core.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/structured_light/structured_light.hpp"
#include <opencv2/phase_unwrapping.hpp>
#include <opencv2/calib3d.hpp>
namespace cv {
namespace structured_light {
enum{
FTP = 0,
PSP = 1,
FAPS = 2
};
class CV_EXPORTS_W SinusoidalPattern : public StructuredLightPattern
{
public:
struct CV_EXPORTS Params
{
Params();
int width;
int height;
int nbrOfPeriods;
float shiftValue;
int methodId;
int nbrOfPixelsBetweenMarkers;
bool horizontal;
bool setMarkers;
std::vector<Point2f> markersLocation;
};
static Ptr<SinusoidalPattern> create( const SinusoidalPattern::Params ¶meters =
SinusoidalPattern::Params() );
CV_WRAP
virtual void computePhaseMap( InputArrayOfArrays patternImages,
OutputArray wrappedPhaseMap,
OutputArray shadowMask = noArray(),
InputArray fundamental = noArray()) = 0;
CV_WRAP
virtual void unwrapPhaseMap( InputArrayOfArrays wrappedPhaseMap,
OutputArray unwrappedPhaseMap,
cv::Size camSize,
InputArray shadowMask = noArray() ) = 0;
CV_WRAP
virtual void findProCamMatches( InputArray projUnwrappedPhaseMap, InputArray camUnwrappedPhaseMap,
OutputArrayOfArrays matches ) = 0;
CV_WRAP
virtual void computeDataModulationTerm( InputArrayOfArrays patternImages,
OutputArray dataModulationTerm,
InputArray shadowMask ) = 0;
};
}
}
#endif