24 const std::vector<ccPointCloud*>& allClouds,
26 : QDialog(parent, Qt::Tool),
36 referenceComboBox->addItem(cloud->getName(), cloud->getUniqueID());
49 if (previousRadius == 0) {
52 previousRadius =
std::max(radius, previousRadius);
56 featureRadiusDoubleSpinBox->setValue(previousRadius);
59 connect(autoRadiusToolButton, &QToolButton::clicked,
this,
61 connect(referenceComboBox, qOverload<int>(&QComboBox::currentIndexChanged),
68 cloud->enableTempColor(
false);
69 cloud->setForceRedraw(
true);
88 return featureRadiusDoubleSpinBox->value();
92 if (
clouds.size() < 2)
return;
95 if (!referenceCloud) {
102 int referenceCloudIndex = -1;
104 for (
size_t i = 0; i <
clouds.size(); ++i) {
107 alignedCloud = cloud;
112 referenceCloudIndex =
static_cast<int>(i);
115 alignedLineEdit->setText(
117 : tr(
"%1 other clouds").arg(
clouds.size() - 1));
124 referenceComboBox->blockSignals(
true);
125 referenceComboBox->setCurrentIndex(referenceCloudIndex);
126 referenceComboBox->blockSignals(
false);
140 params.aimedPopulationPerCell = 64;
141 params.aimedPopulationRange = 16;
142 params.minCellPopulation = 48;
143 params.minAboveMinRatio = 0.97;
151 CVLog::Error(tr(
"Failed to estimate the radius for cloud %1")
152 .arg(cloud->getName()));
155 largestRadius =
std::max(largestRadius, radius);
158 featureRadiusDoubleSpinBox->setValue(largestRadius);
float PointCoordinateType
Type of the coordinates of a (N-D) point.
static double s_featureRadius
cmdLineReadable * params[]
static bool Error(const char *format,...)
Display an error dialog with formatted message.
Fast Global Registration dialog.
double getFeatureRadius() const
Returns the feature descritor comptation radius.
void referenceEntityChanged(int index)
unsigned referencesCloudUinqueID
Reference cloud unique ID.
FastGlobalRegistrationDialog(const std::vector< ccPointCloud * > &allClouds, QWidget *parent=nullptr)
Default constructor.
std::vector< ccPointCloud * > clouds
All clouds (input)
void saveParameters() const
Saves parameters for next call.
void autoEstimateRadius()
~FastGlobalRegistrationDialog() override
Default destructor.
ccPointCloud * getReferenceCloud()
Returns the 'reference' cloud.
virtual void setTempColor(const ecvColor::Rgb &col, bool autoActivate=true)
Sets current temporary (unique)
virtual void setVisible(bool state)
Sets entity visibility.
virtual void setForceRedraw(bool state)
Sets force redraw.
virtual QString getName() const
Returns object name.
virtual unsigned getUniqueID() const
Returns object unique ID.
static PointCoordinateType GuessBestRadiusAutoComputeOctree(ccGenericPointCloud *cloud, const BestRadiusParams ¶ms, QWidget *parentWidget=nullptr)
static PointCoordinateType GuessNaiveRadius(ccGenericPointCloud *cloud)
Tries to guess a very naive 'local radius' for octree-based computation.
A 3D cloud and its associated features (color, normals, scalar fields, etc.)
static void SetButtonColor(QAbstractButton *button, const QColor &col)
Sets a button background color.
constexpr Rgb red(MAX, 0, 0)
constexpr Rgb yellow(MAX, MAX, 0)
Parameters for the GuessBestRadius method.