diff --git a/Classify3DMASCDialog.ui b/Classify3DMASCDialog.ui
index 9a6a8a2..7b147d2 100644
--- a/Classify3DMASCDialog.ui
+++ b/Classify3DMASCDialog.ui
@@ -7,7 +7,7 @@
0
0
700
- 393
+ 359
@@ -185,26 +185,6 @@
- -
-
-
- Use existing attributes
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 23
-
-
-
-
-
diff --git a/FeaturesInterface.cpp b/FeaturesInterface.cpp
index 912caad..b71bf90 100644
--- a/FeaturesInterface.cpp
+++ b/FeaturesInterface.cpp
@@ -73,11 +73,10 @@ CCCoreLib::ScalarField* Feature::PrepareSF(ccPointCloud* cloud, const char* resu
}
resultSF = newSF;
-
+ resultSF->fill(CCCoreLib::NAN_VALUE);
}
assert(resultSF);
- resultSF->fill(CCCoreLib::NAN_VALUE);
return resultSF;
}
diff --git a/PointFeature.cpp b/PointFeature.cpp
index b33c601..8a027d5 100644
--- a/PointFeature.cpp
+++ b/PointFeature.cpp
@@ -596,7 +596,7 @@ bool PointFeature::prepare( const CorePoints& corePoints,
if (field2 && op != Feature::NO_OPERATION && !statSF1WasAlreadyExisting) // nothing to do if statSF1 was already there
{
- QString resultSFName2 = field2->getName() + QString("_") + Feature::StatToString(stat) + "_" + cloud2Label + "@" + QString::number(scale);
+ QString resultSFName2 = field2->getName() + QString("_") + cloud2Label + "_" + Feature::StatToString(stat) + "@" + QString::number(scale);
//keepStatSF2 = (corePoints.cloud->getScalarFieldIndexByName(qPrintable(resultSFName2)) >= 0); //we remember that the scalar field was already existing!
assert(!statSF2);
diff --git a/confusionmatrix.cpp b/confusionmatrix.cpp
index ccb82ae..befaf73 100644
--- a/confusionmatrix.cpp
+++ b/confusionmatrix.cpp
@@ -32,7 +32,7 @@ QColor getColor(double value, double r1, double g1, double b1)
return QColor(r, g, b);
}
-ConfusionMatrix::ConfusionMatrix(std::vector &actual, std::vector &predicted, QWidget *parent) :
+ConfusionMatrix::ConfusionMatrix(const std::vector &actual, const std::vector &predicted, QWidget *parent) :
QWidget(parent),
ui(new Ui::ConfusionMatrix)
{
@@ -46,7 +46,7 @@ ConfusionMatrix::ConfusionMatrix(std::vector &actual, std::vectorui->tableWidget->setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents);
QSize tableSize = this->ui->tableWidget->sizeHint();
QSize labelSize = this->ui->label->sizeHint();
- QSize widgetSize = QSize(tableSize.width() + 10, tableSize.height() + 50);
+ QSize widgetSize = QSize(tableSize.width() + 20, tableSize.height() + 50);
this->setMinimumSize(widgetSize);
}
@@ -141,7 +141,7 @@ float ConfusionMatrix::computeOverallAccuracy(cv::Mat& matrix)
return m_overallAccuracy;
}
-void ConfusionMatrix::compute(std::vector& actual, std::vector& predicted)
+void ConfusionMatrix::compute(const std::vector& actual, const std::vector& predicted)
{
int idxActual;
int idxPredicted;
diff --git a/confusionmatrix.h b/confusionmatrix.h
index 514c41d..bd3f85f 100644
--- a/confusionmatrix.h
+++ b/confusionmatrix.h
@@ -24,12 +24,12 @@ public:
F1_SCORE = 2
};
- explicit ConfusionMatrix(std::vector& actual, std::vector& predicted, QWidget *parent = nullptr);
+ explicit ConfusionMatrix(const std::vector& actual, const std::vector& predicted, QWidget *parent = nullptr);
~ConfusionMatrix();
void computePrecisionRecallF1Score(cv::Mat& matrix, cv::Mat& precisionRecallF1Score, cv::Mat &vec_TP_FN);
float computeOverallAccuracy(cv::Mat& matrix);
- void compute(std::vector& actual, std::vector& predicted);
+ void compute(const std::vector &actual, const std::vector &predicted);
void setSessionRun(QString session, int run);
float m_overallAccuracy;
bool save(QString filePath);
diff --git a/q3DMASC.cpp b/q3DMASC.cpp
index c82736e..d1a1da0 100644
--- a/q3DMASC.cpp
+++ b/q3DMASC.cpp
@@ -293,7 +293,6 @@ void q3DMASCPlugin::doTrainAction()
classifDlg.label_trainOrClassify->setText("The classifier will be trained on " + corePointsLabel);
classifDlg.classifierFileLineEdit->setText(inputFilename);
classifDlg.keepAttributesCheckBox->hide(); // this parameter is set in the trainDlg dialog
- classifDlg.checkBox_useExistingScalarFields->hide(); // this parameter is set in the trainDlg dialog
if (!classifDlg.exec())
{
//process cancelled by the user
diff --git a/q3DMASCClassifier.cpp b/q3DMASCClassifier.cpp
index d793492..b210192 100644
--- a/q3DMASCClassifier.cpp
+++ b/q3DMASCClassifier.cpp
@@ -129,8 +129,7 @@ bool Classifier::classify( const Feature::Source::Set& featureSources,
int cvConfidenceIdx = cloud->getScalarFieldIndexByName("Classification_confidence");
if (cvConfidenceIdx > 0) // if the scalar field exists, delete it
cloud->deleteScalarField(cvConfidenceIdx);
- else
- cvConfidenceIdx = cloud->addScalarField("Classification_confidence");
+ cvConfidenceIdx = cloud->addScalarField("Classification_confidence");
CCCoreLib::ScalarField* cvConfidenceSF = cloud->getScalarField(cvConfidenceIdx);
ccScalarField* classifSFBackup = nullptr;
@@ -259,6 +258,7 @@ bool Classifier::classify( const Feature::Source::Set& featureSources,
break;
}
}
+
classificationSF->computeMinAndMax();
cvConfidenceSF->computeMinAndMax();
diff --git a/q3DMASCTools.cpp b/q3DMASCTools.cpp
index 4543343..6cd94a6 100644
--- a/q3DMASCTools.cpp
+++ b/q3DMASCTools.cpp
@@ -1038,7 +1038,7 @@ struct FeaturesAndScales
};
bool Tools::PrepareFeatures(const CorePoints& corePoints, Feature::Set& features, QString& errorStr,
- CCCoreLib::GenericProgressCallback* progressCb/*=nullptr*/, SFCollector* generatedScalarFields/*=nullptr*/)
+ CCCoreLib::GenericProgressCallback* progressCb/*=nullptr*/, SFCollector* generatedScalarFields/*=nullptr*/)
{
if (features.empty() || !corePoints.origin)
{
@@ -1377,7 +1377,6 @@ bool Tools::PrepareFeatures(const CorePoints& corePoints, Feature::Set& features
for (const Feature::Shared& feature : features)
{
- std::cout << feature->toString().toStdString() << std::endl;
//we have to 'finish' the process for scaled features
if (feature->scaled() && !feature->finish(corePoints, errorStr))
{
diff --git a/qClassify3DMASCDialog.cpp b/qClassify3DMASCDialog.cpp
index 5858027..7d47026 100644
--- a/qClassify3DMASCDialog.cpp
+++ b/qClassify3DMASCDialog.cpp
@@ -124,8 +124,6 @@ void Classify3DMASCDialog::readSettings()
settings.beginGroup("3DMASC");
bool keepAttributes = settings.value("keepAttributes", false).toBool();
this->keepAttributesCheckBox->setChecked(keepAttributes);
- bool useExistingScalarFields = settings.value("useExistingScalarFields", false).toBool();
- this->checkBox_useExistingScalarFields->setChecked(useExistingScalarFields);
}
void Classify3DMASCDialog::writeSettings()
@@ -133,7 +131,6 @@ void Classify3DMASCDialog::writeSettings()
QSettings settings;
settings.beginGroup("3DMASC");
settings.setValue("keepAttributes", keepAttributesCheckBox->isChecked());
- settings.setValue("useExistingScalarFields", checkBox_useExistingScalarFields->isChecked());
}
void Classify3DMASCDialog::setCloudRoles(const QList& roles, QString corePointsLabel)