GUI: ask for MLS when saving or viewing high res clouds (added parameter values in progress dialog)

Source: added focalLength parameter for RGBD camera (if not null, it will override the value from the camera)

git-svn-id: http://rtabmap.googlecode.com/svn/trunk/rtabmap@1557 f169173b-cf89-36c8-b27e-44dbe73f0c83
This commit is contained in:
matlabbe
2014-07-14 01:25:28 +00:00
parent bcc9469c91
commit 7cfb985478
7 changed files with 277 additions and 124 deletions

View File

@@ -69,10 +69,12 @@ public:
//getters
float getImageRate() const {return _imageRate;}
const Transform & getLocalTransform() const {return _localTransform;}
float getFocalLength() const {return _focalLength;}
//setters
void setImageRate(float imageRate) {_imageRate = imageRate;}
void setLocalTransform(const Transform & localTransform) {_localTransform= localTransform;}
void setFocalLength(float focalLength) {_focalLength = focalLength;}
protected:
/**
@@ -81,7 +83,8 @@ protected:
* @param imageRate : image/second , 0 for fast as the camera can
*/
CameraRGBD(float imageRate = 0,
const Transform & localTransform = Transform::getIdentity());
const Transform & localTransform = Transform::getIdentity(),
float focalLength = 0.0f);
virtual void captureImage(cv::Mat & rgb, cv::Mat & depth, float & depthConstant) = 0;
@@ -89,6 +92,7 @@ private:
float _imageRate;
Transform _localTransform;
UTimer * _frameRateTimer;
float _focalLength;
};
/////////////////////////
@@ -104,7 +108,8 @@ public:
// default local transform z in, x right, y down));
CameraOpenni(const std::string & deviceId="",
float imageRate = 0,
const Transform & localTransform = Transform::getIdentity());
const Transform & localTransform = Transform::getIdentity(),
float focalLength = 0.0f);
virtual ~CameraOpenni();
void image_cb (
@@ -141,7 +146,8 @@ public:
public:
CameraOpenNICV(bool asus = false,
float imageRate = 0,
const Transform & localTransform = Transform::getIdentity());
const Transform & localTransform = Transform::getIdentity(),
float focalLength = 0.0f);
virtual ~CameraOpenNICV();
virtual bool init();
@@ -167,7 +173,8 @@ public:
public:
CameraOpenNI2(float imageRate = 0,
const Transform & localTransform = Transform::getIdentity());
const Transform & localTransform = Transform::getIdentity(),
float focalLength = 0.0f);
virtual ~CameraOpenNI2();
virtual bool init();
@@ -198,7 +205,8 @@ public:
// default local transform z in, x right, y down));
CameraFreenect(int deviceId= 0,
float imageRate=0.0f,
const Transform & localTransform = Transform::getIdentity());
const Transform & localTransform = Transform::getIdentity(),
float focalLength = 0.0f);
virtual ~CameraFreenect();
bool init();

View File

@@ -50,10 +50,11 @@
namespace rtabmap
{
CameraRGBD::CameraRGBD(float imageRate, const Transform & localTransform) :
CameraRGBD::CameraRGBD(float imageRate, const Transform & localTransform, float focalLength) :
_imageRate(imageRate),
_localTransform(localTransform),
_frameRateTimer(new UTimer())
_frameRateTimer(new UTimer()),
_focalLength(focalLength)
{
}
@@ -89,14 +90,18 @@ void CameraRGBD::takeImage(cv::Mat & rgb, cv::Mat & depth, float & depthConstant
UTimer timer;
this->captureImage(rgb, depth, depthConstant);
if(_focalLength)
{
depthConstant = 1.0f/_focalLength; // override if set
}
UDEBUG("Time capturing image = %fs", timer.ticks());
}
/////////////////////////
// CameraOpenNIPCL
/////////////////////////
CameraOpenni::CameraOpenni(const std::string & deviceId, float imageRate, const Transform & localTransform) :
CameraRGBD(imageRate, localTransform),
CameraOpenni::CameraOpenni(const std::string & deviceId, float imageRate, const Transform & localTransform, float focalLength) :
CameraRGBD(imageRate, localTransform, focalLength),
interface_(0),
deviceId_(deviceId),
depthConstant_(0.0f)
@@ -205,8 +210,8 @@ bool CameraOpenNICV::available()
return cv::getBuildInformation().find("OpenNI: YES") != std::string::npos;
}
CameraOpenNICV::CameraOpenNICV(bool asus, float imageRate, const rtabmap::Transform & localTransform) :
CameraRGBD(imageRate, localTransform),
CameraOpenNICV::CameraOpenNICV(bool asus, float imageRate, const rtabmap::Transform & localTransform, float focalLength) :
CameraRGBD(imageRate, localTransform, focalLength),
_asus(asus),
_depthFocal(0.0f)
{
@@ -299,8 +304,8 @@ bool CameraOpenNI2::available()
#endif
}
CameraOpenNI2::CameraOpenNI2(float imageRate, const rtabmap::Transform & localTransform) :
CameraRGBD(imageRate, localTransform),
CameraOpenNI2::CameraOpenNI2(float imageRate, const rtabmap::Transform & localTransform, float focalLength) :
CameraRGBD(imageRate, localTransform, focalLength),
#ifdef WITH_OPENNI2
_device(new openni::Device()),
_color(new openni::VideoStream()),
@@ -685,8 +690,8 @@ bool CameraFreenect::available()
#endif
}
CameraFreenect::CameraFreenect(int deviceId, float imageRate, const Transform & localTransform) :
CameraRGBD(imageRate, localTransform),
CameraFreenect::CameraFreenect(int deviceId, float imageRate, const Transform & localTransform, float focalLength) :
CameraRGBD(imageRate, localTransform, focalLength),
deviceId_(deviceId),
ctx_(0),
freenectDevice_(0)