mirror of
https://github.com/introlab/rtabmap_ros.git
synced 2026-10-04 16:57:46 +08:00
DepthCalibrationDialog: added distortion model parameters
This commit is contained in:
@@ -42,7 +42,7 @@ namespace clams
|
|||||||
class RTABMAP_EXP DiscreteFrustum
|
class RTABMAP_EXP DiscreteFrustum
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DiscreteFrustum(int smoothing = 1, double bin_depth = 1.0);
|
DiscreteFrustum(int smoothing = 1, double bin_depth = 1.0, double max_dist = 10.0);
|
||||||
//! z value, not distance to origin.
|
//! z value, not distance to origin.
|
||||||
//! thread-safe.
|
//! thread-safe.
|
||||||
void addExample(double ground_truth, double measurement);
|
void addExample(double ground_truth, double measurement);
|
||||||
@@ -88,7 +88,7 @@ namespace clams
|
|||||||
training_samples_(0)
|
training_samples_(0)
|
||||||
{}
|
{}
|
||||||
virtual ~DiscreteDepthDistortionModel();
|
virtual ~DiscreteDepthDistortionModel();
|
||||||
DiscreteDepthDistortionModel(int width, int height, int bin_width = 8, int bin_height = 6, double bin_depth = 2.0, int smoothing = 1);
|
DiscreteDepthDistortionModel(int width, int height, int bin_width = 8, int bin_height = 6, double bin_depth = 2.0, int smoothing = 1, double max_depth = 10.0);
|
||||||
DiscreteDepthDistortionModel(const DiscreteDepthDistortionModel& other);
|
DiscreteDepthDistortionModel(const DiscreteDepthDistortionModel& other);
|
||||||
DiscreteDepthDistortionModel& operator=(const DiscreteDepthDistortionModel& other);
|
DiscreteDepthDistortionModel& operator=(const DiscreteDepthDistortionModel& other);
|
||||||
void undistort(cv::Mat & depth) const;
|
void undistort(cv::Mat & depth) const;
|
||||||
|
|||||||
@@ -40,10 +40,13 @@ using namespace Eigen;
|
|||||||
namespace clams
|
namespace clams
|
||||||
{
|
{
|
||||||
|
|
||||||
DiscreteFrustum::DiscreteFrustum(int smoothing, double bin_depth) :
|
DiscreteFrustum::DiscreteFrustum(int smoothing, double bin_depth, double max_dist) :
|
||||||
max_dist_(10),
|
max_dist_(max_dist),
|
||||||
bin_depth_(bin_depth)
|
bin_depth_(bin_depth)
|
||||||
{
|
{
|
||||||
|
UASSERT(max_dist_ >= bin_depth_);
|
||||||
|
UASSERT(bin_depth_>0.0);
|
||||||
|
UASSERT(smoothing>=1);
|
||||||
num_bins_ = ceil(max_dist_ / bin_depth_);
|
num_bins_ = ceil(max_dist_ / bin_depth_);
|
||||||
counts_ = VectorXf::Ones(num_bins_) * smoothing;
|
counts_ = VectorXf::Ones(num_bins_) * smoothing;
|
||||||
total_numerators_ = VectorXf::Ones(num_bins_) * smoothing;
|
total_numerators_ = VectorXf::Ones(num_bins_) * smoothing;
|
||||||
@@ -231,7 +234,8 @@ namespace clams
|
|||||||
DiscreteDepthDistortionModel::DiscreteDepthDistortionModel(int width, int height,
|
DiscreteDepthDistortionModel::DiscreteDepthDistortionModel(int width, int height,
|
||||||
int bin_width, int bin_height,
|
int bin_width, int bin_height,
|
||||||
double bin_depth,
|
double bin_depth,
|
||||||
int smoothing) :
|
int smoothing,
|
||||||
|
double max_depth) :
|
||||||
width_(width),
|
width_(width),
|
||||||
height_(height),
|
height_(height),
|
||||||
bin_width_(bin_width),
|
bin_width_(bin_width),
|
||||||
@@ -248,7 +252,7 @@ namespace clams
|
|||||||
for(size_t i = 0; i < frustums_.size(); ++i) {
|
for(size_t i = 0; i < frustums_.size(); ++i) {
|
||||||
frustums_[i].resize(num_bins_x_, NULL);
|
frustums_[i].resize(num_bins_x_, NULL);
|
||||||
for(size_t j = 0; j < frustums_[i].size(); ++j)
|
for(size_t j = 0; j < frustums_[i].size(); ++j)
|
||||||
frustums_[i][j] = new DiscreteFrustum(smoothing, bin_depth);
|
frustums_[i][j] = new DiscreteFrustum(smoothing, bin_depth, max_depth);
|
||||||
}
|
}
|
||||||
|
|
||||||
training_samples_ = 0;
|
training_samples_ = 0;
|
||||||
|
|||||||
@@ -74,6 +74,12 @@ DepthCalibrationDialog::DepthCalibrationDialog(QWidget *parent) :
|
|||||||
connect(_ui->doubleSpinBox_coneStdDevThresh, SIGNAL(valueChanged(double)), this, SIGNAL(configChanged()));
|
connect(_ui->doubleSpinBox_coneStdDevThresh, SIGNAL(valueChanged(double)), this, SIGNAL(configChanged()));
|
||||||
connect(_ui->checkBox_laserScan, SIGNAL(stateChanged(int)), this, SIGNAL(configChanged()));
|
connect(_ui->checkBox_laserScan, SIGNAL(stateChanged(int)), this, SIGNAL(configChanged()));
|
||||||
|
|
||||||
|
connect(_ui->spinBox_bin_width, SIGNAL(valueChanged(int)), this, SIGNAL(configChanged()));
|
||||||
|
connect(_ui->spinBox_bin_height, SIGNAL(valueChanged(int)), this, SIGNAL(configChanged()));
|
||||||
|
connect(_ui->doubleSpinBox_bin_depth, SIGNAL(valueChanged(double)), this, SIGNAL(configChanged()));
|
||||||
|
connect(_ui->spinBox_smoothing, SIGNAL(valueChanged(int)), this, SIGNAL(configChanged()));
|
||||||
|
connect(_ui->doubleSpinBox_maxDepthModel, SIGNAL(valueChanged(double)), this, SIGNAL(configChanged()));
|
||||||
|
|
||||||
_ui->buttonBox->button(QDialogButtonBox::Ok)->setFocus();
|
_ui->buttonBox->button(QDialogButtonBox::Ok)->setFocus();
|
||||||
|
|
||||||
_progressDialog = new ProgressDialog(this);
|
_progressDialog = new ProgressDialog(this);
|
||||||
@@ -109,6 +115,12 @@ void DepthCalibrationDialog::saveSettings(QSettings & settings, const QString &
|
|||||||
settings.setValue("cone_stddev_thresh",_ui->doubleSpinBox_coneStdDevThresh->value());
|
settings.setValue("cone_stddev_thresh",_ui->doubleSpinBox_coneStdDevThresh->value());
|
||||||
settings.setValue("laser_scan",_ui->checkBox_laserScan->isChecked());
|
settings.setValue("laser_scan",_ui->checkBox_laserScan->isChecked());
|
||||||
|
|
||||||
|
settings.setValue("bin_width",_ui->spinBox_bin_width->value());
|
||||||
|
settings.setValue("bin_height",_ui->spinBox_bin_height->value());
|
||||||
|
settings.setValue("bin_depth",_ui->doubleSpinBox_bin_depth->value());
|
||||||
|
settings.setValue("smoothing",_ui->spinBox_smoothing->value());
|
||||||
|
settings.setValue("max_model_depth",_ui->doubleSpinBox_maxDepthModel->value());
|
||||||
|
|
||||||
if(!group.isEmpty())
|
if(!group.isEmpty())
|
||||||
{
|
{
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
@@ -130,6 +142,12 @@ void DepthCalibrationDialog::loadSettings(QSettings & settings, const QString &
|
|||||||
_ui->doubleSpinBox_coneStdDevThresh->setValue(settings.value("cone_stddev_thresh", _ui->doubleSpinBox_coneStdDevThresh->value()).toDouble());
|
_ui->doubleSpinBox_coneStdDevThresh->setValue(settings.value("cone_stddev_thresh", _ui->doubleSpinBox_coneStdDevThresh->value()).toDouble());
|
||||||
_ui->checkBox_laserScan->setChecked(settings.value("laser_scan", _ui->checkBox_laserScan->isChecked()).toBool());
|
_ui->checkBox_laserScan->setChecked(settings.value("laser_scan", _ui->checkBox_laserScan->isChecked()).toBool());
|
||||||
|
|
||||||
|
_ui->spinBox_bin_width->setValue(settings.value("bin_width", _ui->spinBox_bin_width->value()).toInt());
|
||||||
|
_ui->spinBox_bin_height->setValue(settings.value("bin_height", _ui->spinBox_bin_height->value()).toInt());
|
||||||
|
_ui->doubleSpinBox_bin_depth->setValue(settings.value("bin_depth", _ui->doubleSpinBox_bin_depth->value()).toDouble());
|
||||||
|
_ui->spinBox_smoothing->setValue(settings.value("smoothing", _ui->spinBox_smoothing->value()).toInt());
|
||||||
|
_ui->doubleSpinBox_maxDepthModel->setValue(settings.value("max_model_depth", _ui->doubleSpinBox_maxDepthModel->value()).toDouble());
|
||||||
|
|
||||||
if(!group.isEmpty())
|
if(!group.isEmpty())
|
||||||
{
|
{
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
@@ -146,6 +164,19 @@ void DepthCalibrationDialog::restoreDefaults()
|
|||||||
_ui->doubleSpinBox_coneStdDevThresh->setValue(0.1); // 0.03
|
_ui->doubleSpinBox_coneStdDevThresh->setValue(0.1); // 0.03
|
||||||
_ui->checkBox_laserScan->setChecked(false);
|
_ui->checkBox_laserScan->setChecked(false);
|
||||||
_ui->checkBox_resetModel->setChecked(true);
|
_ui->checkBox_resetModel->setChecked(true);
|
||||||
|
|
||||||
|
_ui->spinBox_bin_width->setValue(8);
|
||||||
|
_ui->spinBox_bin_height->setValue(6);
|
||||||
|
if(_imageSize.width > 0 && _imageSize.height > 0)
|
||||||
|
{
|
||||||
|
size_t bin_width, bin_height;
|
||||||
|
clams::DiscreteDepthDistortionModel::getBinSize(_imageSize.width, _imageSize.height, bin_width, bin_height);
|
||||||
|
_ui->spinBox_bin_width->setValue(bin_width);
|
||||||
|
_ui->spinBox_bin_height->setValue(bin_height);
|
||||||
|
}
|
||||||
|
_ui->doubleSpinBox_bin_depth->setValue(2.0),
|
||||||
|
_ui->spinBox_smoothing->setValue(1);
|
||||||
|
_ui->doubleSpinBox_maxDepthModel->setValue(10.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DepthCalibrationDialog::saveModel()
|
void DepthCalibrationDialog::saveModel()
|
||||||
@@ -192,6 +223,31 @@ void DepthCalibrationDialog::calibrate(
|
|||||||
{
|
{
|
||||||
_ui->label_trainingSamples->setNum((int)_model->getTrainingSamples());
|
_ui->label_trainingSamples->setNum((int)_model->getTrainingSamples());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_ui->label_width->setText("NA");
|
||||||
|
_ui->label_height->setText("NA");
|
||||||
|
_imageSize = cv::Size();
|
||||||
|
if(cachedSignatures.size())
|
||||||
|
{
|
||||||
|
const Signature & s = cachedSignatures.begin().value();
|
||||||
|
const SensorData & data = s.sensorData();
|
||||||
|
if(data.cameraModels().size() == 1 && data.cameraModels()[0].isValidForReprojection())
|
||||||
|
{
|
||||||
|
_imageSize = data.cameraModels()[0].imageSize();
|
||||||
|
_ui->label_width->setNum(data.cameraModels()[0].imageWidth());
|
||||||
|
_ui->label_height->setNum(data.cameraModels()[0].imageHeight());
|
||||||
|
|
||||||
|
if(data.cameraModels()[0].imageWidth() % _ui->spinBox_bin_width->value() != 0 ||
|
||||||
|
data.cameraModels()[0].imageHeight() % _ui->spinBox_bin_height->value() != 0)
|
||||||
|
{
|
||||||
|
size_t bin_width, bin_height;
|
||||||
|
clams::DiscreteDepthDistortionModel::getBinSize(data.cameraModels()[0].imageWidth(), data.cameraModels()[0].imageHeight(), bin_width, bin_height);
|
||||||
|
_ui->spinBox_bin_width->setValue(bin_width);
|
||||||
|
_ui->spinBox_bin_height->setValue(bin_height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(this->exec() == QDialog::Accepted)
|
if(this->exec() == QDialog::Accepted)
|
||||||
{
|
{
|
||||||
if(_model && _ui->checkBox_resetModel->isChecked())
|
if(_model && _ui->checkBox_resetModel->isChecked())
|
||||||
@@ -200,6 +256,12 @@ void DepthCalibrationDialog::calibrate(
|
|||||||
_model = 0;
|
_model = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(_ui->doubleSpinBox_maxDepthModel->value() < _ui->doubleSpinBox_bin_depth->value())
|
||||||
|
{
|
||||||
|
QMessageBox::warning(this, tr("Wrong parameter"), tr("Maximum model depth should be higher than bin depth, setting to bin depth x5."));
|
||||||
|
_ui->doubleSpinBox_maxDepthModel->setValue(_ui->doubleSpinBox_bin_depth->value() * 5.0);
|
||||||
|
}
|
||||||
|
|
||||||
_progressDialog->setMaximumSteps(poses.size()*2 + 3);
|
_progressDialog->setMaximumSteps(poses.size()*2 + 3);
|
||||||
if(_ui->doubleSpinBox_voxelSize->value() > 0.0)
|
if(_ui->doubleSpinBox_voxelSize->value() > 0.0)
|
||||||
{
|
{
|
||||||
@@ -391,9 +453,24 @@ void DepthCalibrationDialog::calibrate(
|
|||||||
const cv::Size & imageSize = sequence.begin()->second.cameraModels()[0].imageSize();
|
const cv::Size & imageSize = sequence.begin()->second.cameraModels()[0].imageSize();
|
||||||
if(_model == 0)
|
if(_model == 0)
|
||||||
{
|
{
|
||||||
size_t bin_width, bin_height;
|
size_t bin_width = _ui->spinBox_bin_width->value();
|
||||||
clams::DiscreteDepthDistortionModel::getBinSize(imageSize.width, imageSize.height, bin_width, bin_height);
|
size_t bin_height = _ui->spinBox_bin_height->value();
|
||||||
_model = new clams::DiscreteDepthDistortionModel(imageSize.width, imageSize.height, bin_width, bin_height);
|
if(imageSize.width % _ui->spinBox_bin_width->value() != 0 ||
|
||||||
|
imageSize.height % _ui->spinBox_bin_height->value() != 0)
|
||||||
|
{
|
||||||
|
size_t bin_width, bin_height;
|
||||||
|
clams::DiscreteDepthDistortionModel::getBinSize(imageSize.width, imageSize.height, bin_width, bin_height);
|
||||||
|
_ui->spinBox_bin_width->setValue(bin_width);
|
||||||
|
_ui->spinBox_bin_height->setValue(bin_height);
|
||||||
|
}
|
||||||
|
_model = new clams::DiscreteDepthDistortionModel(
|
||||||
|
imageSize.width,
|
||||||
|
imageSize.height,
|
||||||
|
bin_width,
|
||||||
|
bin_height,
|
||||||
|
_ui->doubleSpinBox_bin_depth->value(),
|
||||||
|
_ui->spinBox_smoothing->value(),
|
||||||
|
_ui->doubleSpinBox_maxDepthModel->value());
|
||||||
}
|
}
|
||||||
UASSERT(_model->getWidth() == imageSize.width && _model->getHeight() == imageSize.height);
|
UASSERT(_model->getWidth() == imageSize.width && _model->getHeight() == imageSize.height);
|
||||||
|
|
||||||
|
|||||||
@@ -76,6 +76,7 @@ private:
|
|||||||
bool _canceled;
|
bool _canceled;
|
||||||
clams::DiscreteDepthDistortionModel * _model;
|
clams::DiscreteDepthDistortionModel * _model;
|
||||||
QString _workingDirectory;
|
QString _workingDirectory;
|
||||||
|
cv::Size _imageSize;
|
||||||
};
|
};
|
||||||
|
|
||||||
} /* namespace rtabmap */
|
} /* namespace rtabmap */
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>524</width>
|
<width>523</width>
|
||||||
<height>449</height>
|
<height>781</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@@ -27,57 +27,375 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox_2">
|
||||||
|
<property name="title">
|
||||||
|
<string>Map generation</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_3" columnstretch="0,1">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QCheckBox" name="checkBox_laserScan">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QLabel" name="label_110">
|
||||||
|
<property name="text">
|
||||||
|
<string>Use 3D laser scans for 3D map.</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QSpinBox" name="spinBox_decimation">
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>32</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLabel" name="label_108">
|
||||||
|
<property name="text">
|
||||||
|
<string>Decimation (1-2-4-8-...).</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QDoubleSpinBox" name="doubleSpinBox_maxDepth">
|
||||||
|
<property name="suffix">
|
||||||
|
<string> m</string>
|
||||||
|
</property>
|
||||||
|
<property name="decimals">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<double>100.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<double>0.100000000000000</double>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<double>4.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QLabel" name="label_132">
|
||||||
|
<property name="text">
|
||||||
|
<string>Maximum depth (0 means no limit).</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QDoubleSpinBox" name="doubleSpinBox_minDepth">
|
||||||
|
<property name="suffix">
|
||||||
|
<string> m</string>
|
||||||
|
</property>
|
||||||
|
<property name="decimals">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<double>100.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<double>0.100000000000000</double>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<double>0.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="QLabel" name="label_133">
|
||||||
|
<property name="text">
|
||||||
|
<string>Minimum depth.</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0">
|
||||||
|
<widget class="QDoubleSpinBox" name="doubleSpinBox_voxelSize">
|
||||||
|
<property name="suffix">
|
||||||
|
<string> m</string>
|
||||||
|
</property>
|
||||||
|
<property name="decimals">
|
||||||
|
<number>3</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<double>1.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<double>0.010000000000000</double>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<double>0.010000000000000</double>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="1">
|
||||||
|
<widget class="QLabel" name="label_voxel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Voxel size. Set 0 to disable.</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox">
|
||||||
|
<property name="title">
|
||||||
|
<string>Distortion Model</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_2" columnstretch="0,1">
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QSpinBox" name="spinBox_bin_width">
|
||||||
|
<property name="suffix">
|
||||||
|
<string> pix</string>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>999</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>8</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="0">
|
||||||
|
<widget class="QSpinBox" name="spinBox_smoothing">
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>32</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QLabel" name="label_113">
|
||||||
|
<property name="text">
|
||||||
|
<string>Bin width. Should be a multiple of image width.</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="1">
|
||||||
|
<widget class="QLabel" name="label_117">
|
||||||
|
<property name="text">
|
||||||
|
<string>Bin depth.</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLabel" name="label_120">
|
||||||
|
<property name="text">
|
||||||
|
<string>Image height.</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="QLabel" name="label_116">
|
||||||
|
<property name="text">
|
||||||
|
<string>Bin height. Should be a multiple of image height.</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QSpinBox" name="spinBox_bin_height">
|
||||||
|
<property name="suffix">
|
||||||
|
<string> pix</string>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>999</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="1">
|
||||||
|
<widget class="QLabel" name="label_118">
|
||||||
|
<property name="text">
|
||||||
|
<string>Maximum depth.</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="1">
|
||||||
|
<widget class="QLabel" name="label_115">
|
||||||
|
<property name="text">
|
||||||
|
<string>Smoothing.</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QLabel" name="label_119">
|
||||||
|
<property name="text">
|
||||||
|
<string>Image width.</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label_width">
|
||||||
|
<property name="text">
|
||||||
|
<string>NA</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="label_height">
|
||||||
|
<property name="text">
|
||||||
|
<string>NA</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0">
|
||||||
|
<widget class="QDoubleSpinBox" name="doubleSpinBox_bin_depth">
|
||||||
|
<property name="suffix">
|
||||||
|
<string> m</string>
|
||||||
|
</property>
|
||||||
|
<property name="decimals">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<double>0.100000000000000</double>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<double>10.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<double>1.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<double>2.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="0">
|
||||||
|
<widget class="QDoubleSpinBox" name="doubleSpinBox_maxDepthModel">
|
||||||
|
<property name="suffix">
|
||||||
|
<string> m</string>
|
||||||
|
</property>
|
||||||
|
<property name="decimals">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<double>1.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<double>100.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<double>1.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<double>10.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QGridLayout" name="gridLayout" columnstretch="0,1">
|
<layout class="QGridLayout" name="gridLayout" columnstretch="0,1">
|
||||||
<item row="5" column="0">
|
<item row="2" column="0">
|
||||||
<widget class="QDoubleSpinBox" name="doubleSpinBox_minDepth">
|
|
||||||
<property name="suffix">
|
|
||||||
<string> m</string>
|
|
||||||
</property>
|
|
||||||
<property name="decimals">
|
|
||||||
<number>1</number>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<double>100.000000000000000</double>
|
|
||||||
</property>
|
|
||||||
<property name="singleStep">
|
|
||||||
<double>0.100000000000000</double>
|
|
||||||
</property>
|
|
||||||
<property name="value">
|
|
||||||
<double>0.000000000000000</double>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="6" column="1">
|
|
||||||
<widget class="QLabel" name="label_voxel">
|
|
||||||
<property name="text">
|
|
||||||
<string>Voxel size. Set 0 to disable.</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="6" column="0">
|
|
||||||
<widget class="QDoubleSpinBox" name="doubleSpinBox_voxelSize">
|
|
||||||
<property name="suffix">
|
|
||||||
<string> m</string>
|
|
||||||
</property>
|
|
||||||
<property name="decimals">
|
|
||||||
<number>3</number>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<double>1.000000000000000</double>
|
|
||||||
</property>
|
|
||||||
<property name="singleStep">
|
|
||||||
<double>0.010000000000000</double>
|
|
||||||
</property>
|
|
||||||
<property name="value">
|
|
||||||
<double>0.010000000000000</double>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="7" column="0">
|
|
||||||
<widget class="QDoubleSpinBox" name="doubleSpinBox_coneRadius">
|
<widget class="QDoubleSpinBox" name="doubleSpinBox_coneRadius">
|
||||||
<property name="suffix">
|
<property name="suffix">
|
||||||
<string> m</string>
|
<string> m</string>
|
||||||
@@ -99,73 +417,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0">
|
<item row="3" column="0">
|
||||||
<widget class="QCheckBox" name="checkBox_laserScan">
|
|
||||||
<property name="text">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="4" column="1">
|
|
||||||
<widget class="QLabel" name="label_132">
|
|
||||||
<property name="text">
|
|
||||||
<string>Maximum depth (0 means no limit).</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="4" column="0">
|
|
||||||
<widget class="QDoubleSpinBox" name="doubleSpinBox_maxDepth">
|
|
||||||
<property name="suffix">
|
|
||||||
<string> m</string>
|
|
||||||
</property>
|
|
||||||
<property name="decimals">
|
|
||||||
<number>1</number>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<double>100.000000000000000</double>
|
|
||||||
</property>
|
|
||||||
<property name="singleStep">
|
|
||||||
<double>0.100000000000000</double>
|
|
||||||
</property>
|
|
||||||
<property name="value">
|
|
||||||
<double>4.000000000000000</double>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="5" column="1">
|
|
||||||
<widget class="QLabel" name="label_133">
|
|
||||||
<property name="text">
|
|
||||||
<string>Minimum depth.</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="7" column="1">
|
|
||||||
<widget class="QLabel" name="label_voxel_2">
|
|
||||||
<property name="text">
|
|
||||||
<string>Cone radius.</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="8" column="1">
|
|
||||||
<widget class="QLabel" name="label_voxel_3">
|
|
||||||
<property name="text">
|
|
||||||
<string>Cone standard deviation threshold.</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="8" column="0">
|
|
||||||
<widget class="QDoubleSpinBox" name="doubleSpinBox_coneStdDevThresh">
|
<widget class="QDoubleSpinBox" name="doubleSpinBox_coneStdDevThresh">
|
||||||
<property name="suffix">
|
<property name="suffix">
|
||||||
<string> m</string>
|
<string> m</string>
|
||||||
@@ -187,24 +439,33 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="2" column="1">
|
||||||
<widget class="QCheckBox" name="checkBox_resetModel">
|
<widget class="QLabel" name="label_voxel_2">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string>Cone radius.</string>
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QLabel" name="label_110">
|
|
||||||
<property name="text">
|
|
||||||
<string>Use 3D laser scans for 3D map.</string>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="wordWrap">
|
<property name="wordWrap">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
<item row="3" column="1">
|
||||||
|
<widget class="QLabel" name="label_voxel_3">
|
||||||
|
<property name="text">
|
||||||
|
<string>Cone standard deviation threshold.</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="1">
|
||||||
<widget class="QLabel" name="label_109">
|
<widget class="QLabel" name="label_109">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Reset previous model.</string>
|
<string>Reset previous model.</string>
|
||||||
@@ -212,28 +473,15 @@
|
|||||||
<property name="wordWrap">
|
<property name="wordWrap">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="1">
|
<item row="4" column="0">
|
||||||
<widget class="QLabel" name="label_108">
|
<widget class="QCheckBox" name="checkBox_resetModel">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Decimation (1-2-4-8-...).</string>
|
<string/>
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="0">
|
|
||||||
<widget class="QSpinBox" name="spinBox_decimation">
|
|
||||||
<property name="minimum">
|
|
||||||
<number>1</number>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<number>32</number>
|
|
||||||
</property>
|
|
||||||
<property name="value">
|
|
||||||
<number>1</number>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -249,6 +497,9 @@
|
|||||||
<property name="wordWrap">
|
<property name="wordWrap">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
@@ -259,6 +510,9 @@
|
|||||||
<property name="wordWrap">
|
<property name="wordWrap">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
@@ -269,6 +523,9 @@
|
|||||||
<property name="wordWrap">
|
<property name="wordWrap">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
|
|||||||
Reference in New Issue
Block a user