27 #include "../../../common/STLUtils.h"
28 #include "../../../geometry/GTFactory.h"
29 #include "../../../geometry/GTParameters.h"
31 #include "ui_TiePointLocatorParametersWidgetForm.h"
34 #include <QMessageBox>
38 m_ui(new Ui::TiePointLocatorParametersWidgetForm)
56 m_ui->m_glLabel->setVisible(
false);
57 m_ui->m_enableGeometryFilterCheckBox->setVisible(
false);
59 m_ui->m_mtLabel->setVisible(
false);
60 m_ui->m_enableMultiThreadCheckBox->setVisible(
false);
62 m_ui->m_gtLabel->setVisible(
false);
63 m_ui->m_geomTransfNameComboBox->setVisible(
false);
65 m_ui->m_interLabel->setVisible(
false);
66 m_ui->m_interpMethodComboBox->setVisible(
false);
71 m_ui->m_rescaleFactorLineEdit->setText(QString::number(value));
76 return m_ui->m_geomTransfNameComboBox->currentText().toStdString();
81 updateAdvancedOptions();
83 return m_inputParameters;
88 m_ui->m_enableGeometryFilterCheckBox->setChecked(m_inputParameters.m_enableGeometryFilter);
89 m_ui->m_enableMultiThreadCheckBox->setChecked(m_inputParameters.m_enableMultiThread);
91 switch( m_inputParameters.m_interesPointsLocationStrategy )
95 int idx = m_ui->m_interesPointsLocationStrategyComboBox->findText(
"Surf");
96 m_ui->m_interesPointsLocationStrategyComboBox->setCurrentIndex(idx);
101 int idx = m_ui->m_interesPointsLocationStrategyComboBox->findText(
"Moravec");
102 m_ui->m_interesPointsLocationStrategyComboBox->setCurrentIndex(idx);
109 while( gtItB != gtItE )
111 m_ui->m_geomTransfNameComboBox->addItem(QString(gtItB->first.c_str()));
115 int idx = m_ui->m_geomTransfNameComboBox->findText(m_inputParameters.m_geomTransfName.c_str());
116 m_ui->m_geomTransfNameComboBox->setCurrentIndex(idx);
118 m_ui->m_geometryFilterAssuranceLineEdit->setText(QString::number(m_inputParameters.m_geometryFilterAssurance));
120 m_ui->m_geomTransfMaxErrorLineEdit->setText(QString::number(m_inputParameters.m_geomTransfMaxError));
122 switch(m_inputParameters.m_interpMethod)
126 int idx = m_ui->m_interpMethodComboBox->findText(
"Bilinear");
127 m_ui->m_interpMethodComboBox->setCurrentIndex(idx);
132 int idx = m_ui->m_interpMethodComboBox->findText(
"Bicubic");
133 m_ui->m_interpMethodComboBox->setCurrentIndex(idx);
138 int idx = m_ui->m_interpMethodComboBox->findText(
"NearestNeighbor");
139 m_ui->m_interpMethodComboBox->setCurrentIndex(idx);
143 m_ui->m_maxTiePointsLineEdit->setText(QString::number(m_inputParameters.m_maxTiePoints));
145 m_ui->m_correlationWindowWidthLineEdit->setText(QString::number(m_inputParameters.m_moravecCorrelationWindowWidth));
147 m_ui->m_gaussianFilterIterationsLineEdit->setText(QString::number(m_inputParameters.m_moravecNoiseFilterIterations));
149 m_ui->m_minAbsCorrelationLineEdit->setText(QString::number(m_inputParameters.m_moravecMinAbsCorrelation));
151 m_ui->m_moravecWindowWidthLineEdit->setText(QString::number(m_inputParameters.m_moravecWindowWidth));
153 m_ui->m_maxNormEuclideanDistLineEdit->setText(QString::number(m_inputParameters.m_surfMaxNormEuclideanDist));
155 m_ui->m_octavesNumberLineEdit->setText(QString::number(m_inputParameters.m_surfOctavesNumber));
157 m_ui->m_scalesNumberLineEdit->setText(QString::number(m_inputParameters.m_surfScalesNumber));
159 m_ui->m_rescaleFactorLineEdit->setText(QString::number(m_inputParameters.m_subSampleOptimizationRescaleFactor));
164 m_inputParameters.m_enableGeometryFilter = m_ui->m_enableGeometryFilterCheckBox->isChecked();
166 m_inputParameters.m_enableMultiThread = m_ui->m_enableMultiThreadCheckBox->isChecked();
168 if(m_ui->m_interesPointsLocationStrategyComboBox->currentText() ==
"Surf")
173 m_inputParameters.m_geomTransfName = m_ui->m_geomTransfNameComboBox->currentText().toStdString();
175 if(m_ui->m_geometryFilterAssuranceLineEdit->text().isEmpty())
177 QMessageBox::warning(
this, tr(
"Warning"), tr(
"Geometry assurance not defined."));
180 m_inputParameters.m_geometryFilterAssurance = m_ui->m_geometryFilterAssuranceLineEdit->text().toDouble();
182 if(m_ui->m_geomTransfMaxErrorLineEdit->text().isEmpty())
184 QMessageBox::warning(
this, tr(
"Warning"), tr(
"Transformation error not defined."));
187 m_inputParameters.m_geomTransfMaxError = m_ui->m_geomTransfMaxErrorLineEdit->text().toDouble();
189 if(m_ui->m_interpMethodComboBox->currentText() ==
"Bilinear")
191 else if(m_ui->m_interpMethodComboBox->currentText() ==
"Bicubic")
196 if(m_ui->m_maxTiePointsLineEdit->text().isEmpty())
198 QMessageBox::warning(
this, tr(
"Warning"), tr(
"Maximum number of tie-points not defined."));
201 m_inputParameters.m_maxTiePoints = m_ui->m_maxTiePointsLineEdit->text().toUInt();
203 if(m_ui->m_rescaleFactorLineEdit->text().isEmpty())
205 QMessageBox::warning(
this, tr(
"Warning"), tr(
"Sub-sampled search rescale factor not defined."));
208 m_inputParameters.m_subSampleOptimizationRescaleFactor = m_ui->m_rescaleFactorLineEdit->text().toDouble();
210 if(m_ui->m_interesPointsLocationStrategyComboBox->currentText() ==
"Surf")
212 if(m_ui->m_maxNormEuclideanDistLineEdit->text().isEmpty())
214 QMessageBox::warning(
this, tr(
"Warning"), tr(
"Maximum euclidean distance not defined."));
217 m_inputParameters.m_surfMaxNormEuclideanDist = m_ui->m_maxNormEuclideanDistLineEdit->text().toDouble();
219 if(m_ui->m_octavesNumberLineEdit->text().isEmpty())
221 QMessageBox::warning(
this, tr(
"Warning"), tr(
"Octaves number not defined."));
224 m_inputParameters.m_surfOctavesNumber = m_ui->m_octavesNumberLineEdit->text().toUInt();
226 if(m_ui->m_scalesNumberLineEdit->text().isEmpty())
228 QMessageBox::warning(
this, tr(
"Warning"), tr(
"Scales number not defined."));
231 m_inputParameters.m_surfScalesNumber = m_ui->m_scalesNumberLineEdit->text().toUInt();
235 if(m_ui->m_correlationWindowWidthLineEdit->text().isEmpty())
237 QMessageBox::warning(
this, tr(
"Warning"), tr(
"Correlation window width not defined."));
240 m_inputParameters.m_moravecCorrelationWindowWidth = m_ui->m_correlationWindowWidthLineEdit->text().toUInt();
242 if(m_ui->m_gaussianFilterIterationsLineEdit->text().isEmpty())
244 QMessageBox::warning(
this, tr(
"Warning"), tr(
"Gaussian filter iterations not defined."));
247 m_inputParameters.m_moravecNoiseFilterIterations = m_ui->m_gaussianFilterIterationsLineEdit->text().toUInt();
249 if(m_ui->m_minAbsCorrelationLineEdit->text().isEmpty())
251 QMessageBox::warning(
this, tr(
"Warning"), tr(
"Minimum correlation value not defined."));
254 m_inputParameters.m_moravecMinAbsCorrelation = m_ui->m_minAbsCorrelationLineEdit->text().toDouble();
256 if(m_ui->m_moravecWindowWidthLineEdit->text().isEmpty())
258 QMessageBox::warning(
this, tr(
"Warning"), tr(
"Moravec window width not defined."));
261 m_inputParameters.m_moravecWindowWidth = m_ui->m_moravecWindowWidthLineEdit->text().toUInt();
Near neighborhood interpolation method.
static dictionary_type & getDictionary()
It returns a reference to the internal dictionary of concrete factories.
std::map< TFACTORYKEY, TFACTORY *, TKEYCOMPARE >::const_iterator const_iterator
std::map< TFACTORYKEY, TFACTORY *, TKEYCOMPARE >::const_iterator end() const
It returns an iterator to the end of the container.
Bicubic interpolation method.
std::map< TFACTORYKEY, TFACTORY *, TKEYCOMPARE >::const_iterator begin() const
It returns an iterator to the first stored factory.
Bilinear interpolation method.