Changed Detector_descriptor group name to Feature2D group name
Added BRISK and FREAK features git-svn-id: http://find-object.googlecode.com/svn/trunk/find_object@179 620bd6b2-0a58-f614-fd9a-1bd335dccda9
This commit is contained in:
parent
c9e52fdbae
commit
72bdae12b0
@ -69,6 +69,7 @@ int main(int argc, char * argv[])
|
|||||||
cv::FeatureDetector * detector = new cv::SIFT();
|
cv::FeatureDetector * detector = new cv::SIFT();
|
||||||
// cv::FeatureDetector * detector = new cv::StarFeatureDetector();
|
// cv::FeatureDetector * detector = new cv::StarFeatureDetector();
|
||||||
// cv::FeatureDetector * detector = new cv::SURF(600.0);
|
// cv::FeatureDetector * detector = new cv::SURF(600.0);
|
||||||
|
// cv::FeatureDetector * detector = new cv::BRISK();
|
||||||
detector->detect(objectImg, objectKeypoints);
|
detector->detect(objectImg, objectKeypoints);
|
||||||
printf("Object: %d keypoints detected in %d ms\n", (int)objectKeypoints.size(), time.restart());
|
printf("Object: %d keypoints detected in %d ms\n", (int)objectKeypoints.size(), time.restart());
|
||||||
detector->detect(sceneImg, sceneKeypoints);
|
detector->detect(sceneImg, sceneKeypoints);
|
||||||
@ -82,6 +83,8 @@ int main(int argc, char * argv[])
|
|||||||
// cv::DescriptorExtractor * extractor = new cv::ORB();
|
// cv::DescriptorExtractor * extractor = new cv::ORB();
|
||||||
cv::DescriptorExtractor * extractor = new cv::SIFT();
|
cv::DescriptorExtractor * extractor = new cv::SIFT();
|
||||||
// cv::DescriptorExtractor * extractor = new cv::SURF(600.0);
|
// cv::DescriptorExtractor * extractor = new cv::SURF(600.0);
|
||||||
|
// cv::DescriptorExtractor * extractor = new cv::BRISK();
|
||||||
|
// cv::DescriptorExtractor * extractor = new cv::FREAK();
|
||||||
extractor->compute(objectImg, objectKeypoints, objectDescriptors);
|
extractor->compute(objectImg, objectKeypoints, objectDescriptors);
|
||||||
printf("Object: %d descriptors extracted in %d ms\n", objectDescriptors.rows, time.restart());
|
printf("Object: %d descriptors extracted in %d ms\n", objectDescriptors.rows, time.restart());
|
||||||
extractor->compute(sceneImg, sceneKeypoints, sceneDescriptors);
|
extractor->compute(sceneImg, sceneKeypoints, sceneDescriptors);
|
||||||
@ -98,8 +101,8 @@ int main(int argc, char * argv[])
|
|||||||
// Binary descriptors detected (from ORB or Brief)
|
// Binary descriptors detected (from ORB or Brief)
|
||||||
|
|
||||||
// Create Flann LSH index
|
// Create Flann LSH index
|
||||||
cv::flann::Index flannIndex(sceneDescriptors, cv::flann::LshIndexParams(12, 20, 2));
|
cv::flann::Index flannIndex(sceneDescriptors, cv::flann::LshIndexParams(12, 20, 2), cvflann::FLANN_DIST_HAMMING);
|
||||||
printf("Time creating FLANN index = %d ms\n", time.restart());
|
printf("Time creating FLANN LSH index = %d ms\n", time.restart());
|
||||||
results = cv::Mat(objectDescriptors.rows, k, CV_32SC1); // Results index
|
results = cv::Mat(objectDescriptors.rows, k, CV_32SC1); // Results index
|
||||||
dists = cv::Mat(objectDescriptors.rows, k, CV_32FC1); // Distance results are CV_32FC1 ?!?!? NOTE OpenCV doc is not clear about that...
|
dists = cv::Mat(objectDescriptors.rows, k, CV_32FC1); // Distance results are CV_32FC1 ?!?!? NOTE OpenCV doc is not clear about that...
|
||||||
|
|
||||||
@ -112,8 +115,8 @@ int main(int argc, char * argv[])
|
|||||||
// assume it is CV_32F
|
// assume it is CV_32F
|
||||||
|
|
||||||
// Create Flann KDTree index
|
// Create Flann KDTree index
|
||||||
cv::flann::Index flannIndex(sceneDescriptors, cv::flann::KDTreeIndexParams());
|
cv::flann::Index flannIndex(sceneDescriptors, cv::flann::KDTreeIndexParams(), cvflann::FLANN_DIST_EUCLIDEAN);
|
||||||
printf("Time creating FLANN index = %d ms\n", time.restart());
|
printf("Time creating FLANN KDTree index = %d ms\n", time.restart());
|
||||||
results = cv::Mat(objectDescriptors.rows, k, CV_32SC1); // Results index
|
results = cv::Mat(objectDescriptors.rows, k, CV_32SC1); // Results index
|
||||||
dists = cv::Mat(objectDescriptors.rows, k, CV_32FC1); // Distance results are CV_32FC1
|
dists = cv::Mat(objectDescriptors.rows, k, CV_32FC1); // Distance results are CV_32FC1
|
||||||
|
|
||||||
|
|||||||
@ -1163,8 +1163,8 @@ void MainWindow::notifyParametersChanged(const QStringList & paramChanged)
|
|||||||
if(!detectorDescriptorParamsChanged &&
|
if(!detectorDescriptorParamsChanged &&
|
||||||
( iter->contains(currentDetectorType) ||
|
( iter->contains(currentDetectorType) ||
|
||||||
iter->contains(currentDescriptorType) ||
|
iter->contains(currentDescriptorType) ||
|
||||||
iter->compare(Settings::kDetector_Descriptor_1Detector()) == 0 ||
|
iter->compare(Settings::kFeature2D_1Detector()) == 0 ||
|
||||||
iter->compare(Settings::kDetector_Descriptor_2Descriptor()) == 0 ))
|
iter->compare(Settings::kFeature2D_2Descriptor()) == 0 ))
|
||||||
{
|
{
|
||||||
detectorDescriptorParamsChanged = true;
|
detectorDescriptorParamsChanged = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -364,12 +364,15 @@ void ParametersToolBox::changeParameter(const int & value)
|
|||||||
{
|
{
|
||||||
bool nnStrategyChanged = false;
|
bool nnStrategyChanged = false;
|
||||||
//verify binary issue with nearest neighbor strategy
|
//verify binary issue with nearest neighbor strategy
|
||||||
if(comboBox->objectName().compare(Settings::kDetector_Descriptor_2Descriptor()) == 0 ||
|
if(comboBox->objectName().compare(Settings::kFeature2D_2Descriptor()) == 0 ||
|
||||||
comboBox->objectName().compare(Settings::kNearestNeighbor_1Strategy()) == 0)
|
comboBox->objectName().compare(Settings::kNearestNeighbor_1Strategy()) == 0)
|
||||||
{
|
{
|
||||||
QComboBox * descriptorBox = (QComboBox*)this->getParameterWidget(Settings::kDetector_Descriptor_2Descriptor());
|
QComboBox * descriptorBox = (QComboBox*)this->getParameterWidget(Settings::kFeature2D_2Descriptor());
|
||||||
QComboBox * nnBox = (QComboBox*)this->getParameterWidget(Settings::kNearestNeighbor_1Strategy());
|
QComboBox * nnBox = (QComboBox*)this->getParameterWidget(Settings::kNearestNeighbor_1Strategy());
|
||||||
bool isBinaryDescriptor = descriptorBox->currentText().compare("ORB") == 0 || descriptorBox->currentText().compare("Brief") == 0;
|
bool isBinaryDescriptor = descriptorBox->currentText().compare("ORB") == 0 ||
|
||||||
|
descriptorBox->currentText().compare("Brief") == 0 ||
|
||||||
|
descriptorBox->currentText().compare("BRISK") == 0 ||
|
||||||
|
descriptorBox->currentText().compare("FREAK") == 0;
|
||||||
if(isBinaryDescriptor && nnBox->currentText().compare("Lsh") != 0)
|
if(isBinaryDescriptor && nnBox->currentText().compare("Lsh") != 0)
|
||||||
{
|
{
|
||||||
QMessageBox::warning(this,
|
QMessageBox::warning(this,
|
||||||
|
|||||||
190
src/Settings.cpp
190
src/Settings.cpp
@ -49,6 +49,17 @@ void Settings::loadSettings(const QString & fileName, QByteArray * windowGeometr
|
|||||||
QVariant value = ini.value(key, QVariant());
|
QVariant value = ini.value(key, QVariant());
|
||||||
if(value.isValid())
|
if(value.isValid())
|
||||||
{
|
{
|
||||||
|
QString str = value.toString();
|
||||||
|
if(str.contains(";") && str.size() != getParameter(key).toString().size())
|
||||||
|
{
|
||||||
|
// If a string list is modified, update the value
|
||||||
|
// (assuming that index < 10... one character for index)
|
||||||
|
QChar index = str.at(0);
|
||||||
|
str = getParameter(key).toString();
|
||||||
|
str[0] = index.toAscii();
|
||||||
|
value = QVariant(str);
|
||||||
|
printf("Updated list of parameter \"%s\"\n", key.toStdString().c_str());
|
||||||
|
}
|
||||||
setParameter(key, value);
|
setParameter(key, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -107,7 +118,7 @@ void Settings::saveSettings(const QString & fileName, const QByteArray & windowG
|
|||||||
cv::FeatureDetector * Settings::createFeaturesDetector()
|
cv::FeatureDetector * Settings::createFeaturesDetector()
|
||||||
{
|
{
|
||||||
cv::FeatureDetector * detector = 0;
|
cv::FeatureDetector * detector = 0;
|
||||||
QString str = getDetector_Descriptor_1Detector();
|
QString str = getFeature2D_1Detector();
|
||||||
QStringList split = str.split(':');
|
QStringList split = str.split(':');
|
||||||
if(split.size()==2)
|
if(split.size()==2)
|
||||||
{
|
{
|
||||||
@ -116,7 +127,7 @@ cv::FeatureDetector * Settings::createFeaturesDetector()
|
|||||||
if(ok)
|
if(ok)
|
||||||
{
|
{
|
||||||
QStringList strategies = split.last().split(';');
|
QStringList strategies = split.last().split(';');
|
||||||
if(strategies.size() == 8 && index>=0 && index<8)
|
if(strategies.size() == 9 && index>=0 && index<9)
|
||||||
{
|
{
|
||||||
switch(index)
|
switch(index)
|
||||||
{
|
{
|
||||||
@ -124,13 +135,13 @@ cv::FeatureDetector * Settings::createFeaturesDetector()
|
|||||||
if(strategies.at(index).compare("Dense") == 0)
|
if(strategies.at(index).compare("Dense") == 0)
|
||||||
{
|
{
|
||||||
detector = new cv::DenseFeatureDetector(
|
detector = new cv::DenseFeatureDetector(
|
||||||
getDetector_Descriptor_Dense_initFeatureScale(),
|
getFeature2D_Dense_initFeatureScale(),
|
||||||
getDetector_Descriptor_Dense_featureScaleLevels(),
|
getFeature2D_Dense_featureScaleLevels(),
|
||||||
getDetector_Descriptor_Dense_featureScaleMul(),
|
getFeature2D_Dense_featureScaleMul(),
|
||||||
getDetector_Descriptor_Dense_initXyStep(),
|
getFeature2D_Dense_initXyStep(),
|
||||||
getDetector_Descriptor_Dense_initImgBound(),
|
getFeature2D_Dense_initImgBound(),
|
||||||
getDetector_Descriptor_Dense_varyXyStepWithScale(),
|
getFeature2D_Dense_varyXyStepWithScale(),
|
||||||
getDetector_Descriptor_Dense_varyImgBoundWithScale());
|
getFeature2D_Dense_varyImgBoundWithScale());
|
||||||
if(VERBOSE)printf("Settings::createFeaturesDetector() type=%s\n", "Dense");
|
if(VERBOSE)printf("Settings::createFeaturesDetector() type=%s\n", "Dense");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -138,8 +149,8 @@ cv::FeatureDetector * Settings::createFeaturesDetector()
|
|||||||
if(strategies.at(index).compare("Fast") == 0)
|
if(strategies.at(index).compare("Fast") == 0)
|
||||||
{
|
{
|
||||||
detector = new cv::FastFeatureDetector(
|
detector = new cv::FastFeatureDetector(
|
||||||
getDetector_Descriptor_Fast_threshold(),
|
getFeature2D_Fast_threshold(),
|
||||||
getDetector_Descriptor_Fast_nonmaxSuppression());
|
getFeature2D_Fast_nonmaxSuppression());
|
||||||
if(VERBOSE)printf("Settings::createFeaturesDetector() type=%s\n", "Fast");
|
if(VERBOSE)printf("Settings::createFeaturesDetector() type=%s\n", "Fast");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -147,12 +158,12 @@ cv::FeatureDetector * Settings::createFeaturesDetector()
|
|||||||
if(strategies.at(index).compare("GFTT") == 0)
|
if(strategies.at(index).compare("GFTT") == 0)
|
||||||
{
|
{
|
||||||
detector = new cv::GFTTDetector(
|
detector = new cv::GFTTDetector(
|
||||||
getDetector_Descriptor_GFTT_maxCorners(),
|
getFeature2D_GFTT_maxCorners(),
|
||||||
getDetector_Descriptor_GFTT_qualityLevel(),
|
getFeature2D_GFTT_qualityLevel(),
|
||||||
getDetector_Descriptor_GFTT_minDistance(),
|
getFeature2D_GFTT_minDistance(),
|
||||||
getDetector_Descriptor_GFTT_blockSize(),
|
getFeature2D_GFTT_blockSize(),
|
||||||
getDetector_Descriptor_GFTT_useHarrisDetector(),
|
getFeature2D_GFTT_useHarrisDetector(),
|
||||||
getDetector_Descriptor_GFTT_k());
|
getFeature2D_GFTT_k());
|
||||||
if(VERBOSE)printf("Settings::createFeaturesDetector() type=%s\n", "GFTT");
|
if(VERBOSE)printf("Settings::createFeaturesDetector() type=%s\n", "GFTT");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -160,15 +171,15 @@ cv::FeatureDetector * Settings::createFeaturesDetector()
|
|||||||
if(strategies.at(index).compare("MSER") == 0)
|
if(strategies.at(index).compare("MSER") == 0)
|
||||||
{
|
{
|
||||||
detector = new cv::MSER(
|
detector = new cv::MSER(
|
||||||
getDetector_Descriptor_MSER_delta(),
|
getFeature2D_MSER_delta(),
|
||||||
getDetector_Descriptor_MSER_minArea(),
|
getFeature2D_MSER_minArea(),
|
||||||
getDetector_Descriptor_MSER_maxArea(),
|
getFeature2D_MSER_maxArea(),
|
||||||
getDetector_Descriptor_MSER_maxVariation(),
|
getFeature2D_MSER_maxVariation(),
|
||||||
getDetector_Descriptor_MSER_minDiversity(),
|
getFeature2D_MSER_minDiversity(),
|
||||||
getDetector_Descriptor_MSER_maxEvolution(),
|
getFeature2D_MSER_maxEvolution(),
|
||||||
getDetector_Descriptor_MSER_areaThreshold(),
|
getFeature2D_MSER_areaThreshold(),
|
||||||
getDetector_Descriptor_MSER_minMargin(),
|
getFeature2D_MSER_minMargin(),
|
||||||
getDetector_Descriptor_MSER_edgeBlurSize());
|
getFeature2D_MSER_edgeBlurSize());
|
||||||
if(VERBOSE)printf("Settings::createFeaturesDetector() type=%s\n", "MSER");
|
if(VERBOSE)printf("Settings::createFeaturesDetector() type=%s\n", "MSER");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -176,14 +187,14 @@ cv::FeatureDetector * Settings::createFeaturesDetector()
|
|||||||
if(strategies.at(index).compare("ORB") == 0)
|
if(strategies.at(index).compare("ORB") == 0)
|
||||||
{
|
{
|
||||||
detector = new cv::ORB(
|
detector = new cv::ORB(
|
||||||
getDetector_Descriptor_ORB_nFeatures(),
|
getFeature2D_ORB_nFeatures(),
|
||||||
getDetector_Descriptor_ORB_scaleFactor(),
|
getFeature2D_ORB_scaleFactor(),
|
||||||
getDetector_Descriptor_ORB_nLevels(),
|
getFeature2D_ORB_nLevels(),
|
||||||
getDetector_Descriptor_ORB_edgeThreshold(),
|
getFeature2D_ORB_edgeThreshold(),
|
||||||
getDetector_Descriptor_ORB_firstLevel(),
|
getFeature2D_ORB_firstLevel(),
|
||||||
getDetector_Descriptor_ORB_WTA_K(),
|
getFeature2D_ORB_WTA_K(),
|
||||||
getDetector_Descriptor_ORB_scoreType(),
|
getFeature2D_ORB_scoreType(),
|
||||||
getDetector_Descriptor_ORB_patchSize());
|
getFeature2D_ORB_patchSize());
|
||||||
if(VERBOSE)printf("Settings::createFeaturesDetector() type=%s\n", "ORB");
|
if(VERBOSE)printf("Settings::createFeaturesDetector() type=%s\n", "ORB");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -191,11 +202,11 @@ cv::FeatureDetector * Settings::createFeaturesDetector()
|
|||||||
if(strategies.at(index).compare("SIFT") == 0)
|
if(strategies.at(index).compare("SIFT") == 0)
|
||||||
{
|
{
|
||||||
detector = new cv::SIFT(
|
detector = new cv::SIFT(
|
||||||
getDetector_Descriptor_SIFT_nfeatures(),
|
getFeature2D_SIFT_nfeatures(),
|
||||||
getDetector_Descriptor_SIFT_nOctaveLayers(),
|
getFeature2D_SIFT_nOctaveLayers(),
|
||||||
getDetector_Descriptor_SIFT_contrastThreshold(),
|
getFeature2D_SIFT_contrastThreshold(),
|
||||||
getDetector_Descriptor_SIFT_edgeThreshold(),
|
getFeature2D_SIFT_edgeThreshold(),
|
||||||
getDetector_Descriptor_SIFT_sigma());
|
getFeature2D_SIFT_sigma());
|
||||||
if(VERBOSE)printf("Settings::createFeaturesDetector() type=%s\n", "SIFT");
|
if(VERBOSE)printf("Settings::createFeaturesDetector() type=%s\n", "SIFT");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -203,11 +214,11 @@ cv::FeatureDetector * Settings::createFeaturesDetector()
|
|||||||
if(strategies.at(index).compare("Star") == 0)
|
if(strategies.at(index).compare("Star") == 0)
|
||||||
{
|
{
|
||||||
detector = new cv::StarFeatureDetector(
|
detector = new cv::StarFeatureDetector(
|
||||||
getDetector_Descriptor_Star_maxSize(),
|
getFeature2D_Star_maxSize(),
|
||||||
getDetector_Descriptor_Star_responseThreshold(),
|
getFeature2D_Star_responseThreshold(),
|
||||||
getDetector_Descriptor_Star_lineThresholdProjected(),
|
getFeature2D_Star_lineThresholdProjected(),
|
||||||
getDetector_Descriptor_Star_lineThresholdBinarized(),
|
getFeature2D_Star_lineThresholdBinarized(),
|
||||||
getDetector_Descriptor_Star_suppressNonmaxSize());
|
getFeature2D_Star_suppressNonmaxSize());
|
||||||
if(VERBOSE)printf("Settings::createFeaturesDetector() type=%s\n", "Star");
|
if(VERBOSE)printf("Settings::createFeaturesDetector() type=%s\n", "Star");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -215,14 +226,24 @@ cv::FeatureDetector * Settings::createFeaturesDetector()
|
|||||||
if(strategies.at(index).compare("SURF") == 0)
|
if(strategies.at(index).compare("SURF") == 0)
|
||||||
{
|
{
|
||||||
detector = new cv::SURF(
|
detector = new cv::SURF(
|
||||||
getDetector_Descriptor_SURF_hessianThreshold(),
|
getFeature2D_SURF_hessianThreshold(),
|
||||||
getDetector_Descriptor_SURF_nOctaves(),
|
getFeature2D_SURF_nOctaves(),
|
||||||
getDetector_Descriptor_SURF_nOctaveLayers(),
|
getFeature2D_SURF_nOctaveLayers(),
|
||||||
getDetector_Descriptor_SURF_extended(),
|
getFeature2D_SURF_extended(),
|
||||||
getDetector_Descriptor_SURF_upright());
|
getFeature2D_SURF_upright());
|
||||||
if(VERBOSE)printf("Settings::createFeaturesDetector() type=%s\n", "SURF");
|
if(VERBOSE)printf("Settings::createFeaturesDetector() type=%s\n", "SURF");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 8:
|
||||||
|
if(strategies.at(index).compare("BRISK") == 0)
|
||||||
|
{
|
||||||
|
detector = new cv::BRISK(
|
||||||
|
getFeature2D_BRISK_thresh(),
|
||||||
|
getFeature2D_BRISK_octaves(),
|
||||||
|
getFeature2D_BRISK_patternScale());
|
||||||
|
if(VERBOSE)printf("Settings::createFeaturesDetector() type=%s\n", "BRISK");
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -240,7 +261,7 @@ cv::FeatureDetector * Settings::createFeaturesDetector()
|
|||||||
cv::DescriptorExtractor * Settings::createDescriptorsExtractor()
|
cv::DescriptorExtractor * Settings::createDescriptorsExtractor()
|
||||||
{
|
{
|
||||||
cv::DescriptorExtractor * extractor = 0;
|
cv::DescriptorExtractor * extractor = 0;
|
||||||
QString str = getDetector_Descriptor_2Descriptor();
|
QString str = getFeature2D_2Descriptor();
|
||||||
QStringList split = str.split(':');
|
QStringList split = str.split(':');
|
||||||
if(split.size()==2)
|
if(split.size()==2)
|
||||||
{
|
{
|
||||||
@ -249,7 +270,7 @@ cv::DescriptorExtractor * Settings::createDescriptorsExtractor()
|
|||||||
if(ok)
|
if(ok)
|
||||||
{
|
{
|
||||||
QStringList strategies = split.last().split(';');
|
QStringList strategies = split.last().split(';');
|
||||||
if(strategies.size() == 4 && index>=0 && index<4)
|
if(strategies.size() == 6 && index>=0 && index<6)
|
||||||
{
|
{
|
||||||
switch(index)
|
switch(index)
|
||||||
{
|
{
|
||||||
@ -257,7 +278,7 @@ cv::DescriptorExtractor * Settings::createDescriptorsExtractor()
|
|||||||
if(strategies.at(index).compare("Brief") == 0)
|
if(strategies.at(index).compare("Brief") == 0)
|
||||||
{
|
{
|
||||||
extractor = new cv::BriefDescriptorExtractor(
|
extractor = new cv::BriefDescriptorExtractor(
|
||||||
getDetector_Descriptor_Brief_bytes());
|
getFeature2D_Brief_bytes());
|
||||||
if(VERBOSE)printf("Settings::createDescriptorsExtractor() type=%s\n", "Brief");
|
if(VERBOSE)printf("Settings::createDescriptorsExtractor() type=%s\n", "Brief");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -265,14 +286,14 @@ cv::DescriptorExtractor * Settings::createDescriptorsExtractor()
|
|||||||
if(strategies.at(index).compare("ORB") == 0)
|
if(strategies.at(index).compare("ORB") == 0)
|
||||||
{
|
{
|
||||||
extractor = new cv::ORB(
|
extractor = new cv::ORB(
|
||||||
getDetector_Descriptor_ORB_nFeatures(),
|
getFeature2D_ORB_nFeatures(),
|
||||||
getDetector_Descriptor_ORB_scaleFactor(),
|
getFeature2D_ORB_scaleFactor(),
|
||||||
getDetector_Descriptor_ORB_nLevels(),
|
getFeature2D_ORB_nLevels(),
|
||||||
getDetector_Descriptor_ORB_edgeThreshold(),
|
getFeature2D_ORB_edgeThreshold(),
|
||||||
getDetector_Descriptor_ORB_firstLevel(),
|
getFeature2D_ORB_firstLevel(),
|
||||||
getDetector_Descriptor_ORB_WTA_K(),
|
getFeature2D_ORB_WTA_K(),
|
||||||
getDetector_Descriptor_ORB_scoreType(),
|
getFeature2D_ORB_scoreType(),
|
||||||
getDetector_Descriptor_ORB_patchSize());
|
getFeature2D_ORB_patchSize());
|
||||||
if(VERBOSE)printf("Settings::createDescriptorsExtractor() type=%s\n", "ORB");
|
if(VERBOSE)printf("Settings::createDescriptorsExtractor() type=%s\n", "ORB");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -280,11 +301,11 @@ cv::DescriptorExtractor * Settings::createDescriptorsExtractor()
|
|||||||
if(strategies.at(index).compare("SIFT") == 0)
|
if(strategies.at(index).compare("SIFT") == 0)
|
||||||
{
|
{
|
||||||
extractor = new cv::SIFT(
|
extractor = new cv::SIFT(
|
||||||
getDetector_Descriptor_SIFT_nfeatures(),
|
getFeature2D_SIFT_nfeatures(),
|
||||||
getDetector_Descriptor_SIFT_nOctaveLayers(),
|
getFeature2D_SIFT_nOctaveLayers(),
|
||||||
getDetector_Descriptor_SIFT_contrastThreshold(),
|
getFeature2D_SIFT_contrastThreshold(),
|
||||||
getDetector_Descriptor_SIFT_edgeThreshold(),
|
getFeature2D_SIFT_edgeThreshold(),
|
||||||
getDetector_Descriptor_SIFT_sigma());
|
getFeature2D_SIFT_sigma());
|
||||||
if(VERBOSE)printf("Settings::createDescriptorsExtractor() type=%s\n", "SIFT");
|
if(VERBOSE)printf("Settings::createDescriptorsExtractor() type=%s\n", "SIFT");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -292,14 +313,35 @@ cv::DescriptorExtractor * Settings::createDescriptorsExtractor()
|
|||||||
if(strategies.at(index).compare("SURF") == 0)
|
if(strategies.at(index).compare("SURF") == 0)
|
||||||
{
|
{
|
||||||
extractor = new cv::SURF(
|
extractor = new cv::SURF(
|
||||||
getDetector_Descriptor_SURF_hessianThreshold(),
|
getFeature2D_SURF_hessianThreshold(),
|
||||||
getDetector_Descriptor_SURF_nOctaves(),
|
getFeature2D_SURF_nOctaves(),
|
||||||
getDetector_Descriptor_SURF_nOctaveLayers(),
|
getFeature2D_SURF_nOctaveLayers(),
|
||||||
getDetector_Descriptor_SURF_extended(),
|
getFeature2D_SURF_extended(),
|
||||||
getDetector_Descriptor_SURF_upright());
|
getFeature2D_SURF_upright());
|
||||||
if(VERBOSE)printf("Settings::createDescriptorsExtractor() type=%s\n", "SURF");
|
if(VERBOSE)printf("Settings::createDescriptorsExtractor() type=%s\n", "SURF");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 4:
|
||||||
|
if(strategies.at(index).compare("BRISK") == 0)
|
||||||
|
{
|
||||||
|
extractor = new cv::BRISK(
|
||||||
|
getFeature2D_BRISK_thresh(),
|
||||||
|
getFeature2D_BRISK_octaves(),
|
||||||
|
getFeature2D_BRISK_patternScale());
|
||||||
|
if(VERBOSE)printf("Settings::createDescriptorsExtractor() type=%s\n", "BRISK");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
if(strategies.at(index).compare("FREAK") == 0)
|
||||||
|
{
|
||||||
|
extractor = new cv::FREAK(
|
||||||
|
getFeature2D_FREAK_orientationNormalized(),
|
||||||
|
getFeature2D_FREAK_scaleNormalized(),
|
||||||
|
getFeature2D_FREAK_patternScale(),
|
||||||
|
getFeature2D_FREAK_nOctaves());
|
||||||
|
if(VERBOSE)printf("Settings::createDescriptorsExtractor() type=%s\n", "FREAK");
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -316,14 +358,14 @@ cv::DescriptorExtractor * Settings::createDescriptorsExtractor()
|
|||||||
|
|
||||||
QString Settings::currentDetectorType()
|
QString Settings::currentDetectorType()
|
||||||
{
|
{
|
||||||
int index = getDetector_Descriptor_1Detector().split(':').first().toInt();
|
int index = getFeature2D_1Detector().split(':').first().toInt();
|
||||||
return getDetector_Descriptor_1Detector().split(':').last().split(';').at(index);
|
return getFeature2D_1Detector().split(':').last().split(';').at(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString Settings::currentDescriptorType()
|
QString Settings::currentDescriptorType()
|
||||||
{
|
{
|
||||||
int index = getDetector_Descriptor_2Descriptor().split(':').first().toInt();
|
int index = getFeature2D_2Descriptor().split(':').first().toInt();
|
||||||
return getDetector_Descriptor_2Descriptor().split(':').last().split(';').at(index);
|
return getFeature2D_2Descriptor().split(':').last().split(';').at(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString Settings::currentNearestNeighborType()
|
QString Settings::currentNearestNeighborType()
|
||||||
|
|||||||
111
src/Settings.h
111
src/Settings.h
@ -59,68 +59,77 @@ class Settings
|
|||||||
PARAMETER(Camera, 5mediaPath, QString, "");
|
PARAMETER(Camera, 5mediaPath, QString, "");
|
||||||
|
|
||||||
//List format : [Index:item0;item1;item3;...]
|
//List format : [Index:item0;item1;item3;...]
|
||||||
PARAMETER(Detector_Descriptor, 1Detector, QString, "7:Dense;Fast;GFTT;MSER;ORB;SIFT;Star;SURF");
|
PARAMETER(Feature2D, 1Detector, QString, "7:Dense;Fast;GFTT;MSER;ORB;SIFT;Star;SURF;BRISK");
|
||||||
PARAMETER(Detector_Descriptor, 2Descriptor, QString, "3:Brief;ORB;SIFT;SURF");
|
PARAMETER(Feature2D, 2Descriptor, QString, "3:Brief;ORB;SIFT;SURF;BRISK;FREAK");
|
||||||
|
|
||||||
PARAMETER(Detector_Descriptor, Brief_bytes, int, 32);
|
PARAMETER(Feature2D, Brief_bytes, int, 32);
|
||||||
|
|
||||||
PARAMETER(Detector_Descriptor, Dense_initFeatureScale, float, 1.f);
|
PARAMETER(Feature2D, Dense_initFeatureScale, float, 1.f);
|
||||||
PARAMETER(Detector_Descriptor, Dense_featureScaleLevels, int, 1);
|
PARAMETER(Feature2D, Dense_featureScaleLevels, int, 1);
|
||||||
PARAMETER(Detector_Descriptor, Dense_featureScaleMul, float, 0.1f);
|
PARAMETER(Feature2D, Dense_featureScaleMul, float, 0.1f);
|
||||||
PARAMETER(Detector_Descriptor, Dense_initXyStep, int, 6);
|
PARAMETER(Feature2D, Dense_initXyStep, int, 6);
|
||||||
PARAMETER(Detector_Descriptor, Dense_initImgBound, int, 0);
|
PARAMETER(Feature2D, Dense_initImgBound, int, 0);
|
||||||
PARAMETER(Detector_Descriptor, Dense_varyXyStepWithScale, bool, true);
|
PARAMETER(Feature2D, Dense_varyXyStepWithScale, bool, true);
|
||||||
PARAMETER(Detector_Descriptor, Dense_varyImgBoundWithScale, bool, false);
|
PARAMETER(Feature2D, Dense_varyImgBoundWithScale, bool, false);
|
||||||
|
|
||||||
PARAMETER(Detector_Descriptor, Fast_threshold, int, 10);
|
PARAMETER(Feature2D, Fast_threshold, int, 10);
|
||||||
PARAMETER(Detector_Descriptor, Fast_nonmaxSuppression, bool, true);
|
PARAMETER(Feature2D, Fast_nonmaxSuppression, bool, true);
|
||||||
|
|
||||||
PARAMETER(Detector_Descriptor, GFTT_maxCorners, int, 1000);
|
PARAMETER(Feature2D, GFTT_maxCorners, int, 1000);
|
||||||
PARAMETER(Detector_Descriptor, GFTT_qualityLevel, double, 0.01);
|
PARAMETER(Feature2D, GFTT_qualityLevel, double, 0.01);
|
||||||
PARAMETER(Detector_Descriptor, GFTT_minDistance, double, 1);
|
PARAMETER(Feature2D, GFTT_minDistance, double, 1);
|
||||||
PARAMETER(Detector_Descriptor, GFTT_blockSize, int, 3);
|
PARAMETER(Feature2D, GFTT_blockSize, int, 3);
|
||||||
PARAMETER(Detector_Descriptor, GFTT_useHarrisDetector, bool, false);
|
PARAMETER(Feature2D, GFTT_useHarrisDetector, bool, false);
|
||||||
PARAMETER(Detector_Descriptor, GFTT_k, double, 0.04);
|
PARAMETER(Feature2D, GFTT_k, double, 0.04);
|
||||||
|
|
||||||
PARAMETER(Detector_Descriptor, ORB_nFeatures, int, 500);
|
PARAMETER(Feature2D, ORB_nFeatures, int, 500);
|
||||||
PARAMETER(Detector_Descriptor, ORB_scaleFactor, float, 1.2f);
|
PARAMETER(Feature2D, ORB_scaleFactor, float, 1.2f);
|
||||||
PARAMETER(Detector_Descriptor, ORB_nLevels, int, 8);
|
PARAMETER(Feature2D, ORB_nLevels, int, 8);
|
||||||
PARAMETER(Detector_Descriptor, ORB_edgeThreshold, int, 31);
|
PARAMETER(Feature2D, ORB_edgeThreshold, int, 31);
|
||||||
PARAMETER(Detector_Descriptor, ORB_firstLevel, int, 0);
|
PARAMETER(Feature2D, ORB_firstLevel, int, 0);
|
||||||
PARAMETER(Detector_Descriptor, ORB_WTA_K, int, 2);
|
PARAMETER(Feature2D, ORB_WTA_K, int, 2);
|
||||||
PARAMETER(Detector_Descriptor, ORB_scoreType, int, 0);
|
PARAMETER(Feature2D, ORB_scoreType, int, 0);
|
||||||
PARAMETER(Detector_Descriptor, ORB_patchSize, int, 31);
|
PARAMETER(Feature2D, ORB_patchSize, int, 31);
|
||||||
|
|
||||||
PARAMETER(Detector_Descriptor, MSER_delta, int, 5);
|
PARAMETER(Feature2D, MSER_delta, int, 5);
|
||||||
PARAMETER(Detector_Descriptor, MSER_minArea, int, 60);
|
PARAMETER(Feature2D, MSER_minArea, int, 60);
|
||||||
PARAMETER(Detector_Descriptor, MSER_maxArea, int, 14400);
|
PARAMETER(Feature2D, MSER_maxArea, int, 14400);
|
||||||
PARAMETER(Detector_Descriptor, MSER_maxVariation, double, 0.25);
|
PARAMETER(Feature2D, MSER_maxVariation, double, 0.25);
|
||||||
PARAMETER(Detector_Descriptor, MSER_minDiversity, double, 0.2);
|
PARAMETER(Feature2D, MSER_minDiversity, double, 0.2);
|
||||||
PARAMETER(Detector_Descriptor, MSER_maxEvolution, int, 200);
|
PARAMETER(Feature2D, MSER_maxEvolution, int, 200);
|
||||||
PARAMETER(Detector_Descriptor, MSER_areaThreshold, double, 1.01);
|
PARAMETER(Feature2D, MSER_areaThreshold, double, 1.01);
|
||||||
PARAMETER(Detector_Descriptor, MSER_minMargin, double, 0.003);
|
PARAMETER(Feature2D, MSER_minMargin, double, 0.003);
|
||||||
PARAMETER(Detector_Descriptor, MSER_edgeBlurSize, int, 5);
|
PARAMETER(Feature2D, MSER_edgeBlurSize, int, 5);
|
||||||
|
|
||||||
PARAMETER(Detector_Descriptor, SIFT_nfeatures, int, 0);
|
PARAMETER(Feature2D, SIFT_nfeatures, int, 0);
|
||||||
PARAMETER(Detector_Descriptor, SIFT_nOctaveLayers, int, 3);
|
PARAMETER(Feature2D, SIFT_nOctaveLayers, int, 3);
|
||||||
PARAMETER(Detector_Descriptor, SIFT_contrastThreshold, double, 0.04);
|
PARAMETER(Feature2D, SIFT_contrastThreshold, double, 0.04);
|
||||||
PARAMETER(Detector_Descriptor, SIFT_edgeThreshold, double, 10);
|
PARAMETER(Feature2D, SIFT_edgeThreshold, double, 10);
|
||||||
PARAMETER(Detector_Descriptor, SIFT_sigma, double, 1.6);
|
PARAMETER(Feature2D, SIFT_sigma, double, 1.6);
|
||||||
|
|
||||||
PARAMETER(Detector_Descriptor, Star_maxSize, int, 45);
|
PARAMETER(Feature2D, Star_maxSize, int, 45);
|
||||||
PARAMETER(Detector_Descriptor, Star_responseThreshold, int, 30);
|
PARAMETER(Feature2D, Star_responseThreshold, int, 30);
|
||||||
PARAMETER(Detector_Descriptor, Star_lineThresholdProjected, int, 10);
|
PARAMETER(Feature2D, Star_lineThresholdProjected, int, 10);
|
||||||
PARAMETER(Detector_Descriptor, Star_lineThresholdBinarized, int, 8);
|
PARAMETER(Feature2D, Star_lineThresholdBinarized, int, 8);
|
||||||
PARAMETER(Detector_Descriptor, Star_suppressNonmaxSize, int, 5);
|
PARAMETER(Feature2D, Star_suppressNonmaxSize, int, 5);
|
||||||
|
|
||||||
PARAMETER(Detector_Descriptor, SURF_hessianThreshold, double, 600.0);
|
PARAMETER(Feature2D, SURF_hessianThreshold, double, 600.0);
|
||||||
PARAMETER(Detector_Descriptor, SURF_nOctaves, int, 4);
|
PARAMETER(Feature2D, SURF_nOctaves, int, 4);
|
||||||
PARAMETER(Detector_Descriptor, SURF_nOctaveLayers, int, 2);
|
PARAMETER(Feature2D, SURF_nOctaveLayers, int, 2);
|
||||||
PARAMETER(Detector_Descriptor, SURF_extended, bool, true);
|
PARAMETER(Feature2D, SURF_extended, bool, true);
|
||||||
PARAMETER(Detector_Descriptor, SURF_upright, bool, false);
|
PARAMETER(Feature2D, SURF_upright, bool, false);
|
||||||
|
|
||||||
|
PARAMETER(Feature2D, BRISK_thresh, int, 30);
|
||||||
|
PARAMETER(Feature2D, BRISK_octaves, int, 3);
|
||||||
|
PARAMETER(Feature2D, BRISK_patternScale, float, 1.0f);
|
||||||
|
|
||||||
|
PARAMETER(Feature2D, FREAK_orientationNormalized, bool, true);
|
||||||
|
PARAMETER(Feature2D, FREAK_scaleNormalized, bool, true);
|
||||||
|
PARAMETER(Feature2D, FREAK_patternScale, float, 22.0f);
|
||||||
|
PARAMETER(Feature2D, FREAK_nOctaves, int, 4);
|
||||||
|
|
||||||
PARAMETER(NearestNeighbor, 1Strategy, QString, "1:Linear;KDTree;KMeans;Composite;Autotuned;Lsh");
|
PARAMETER(NearestNeighbor, 1Strategy, QString, "1:Linear;KDTree;KMeans;Composite;Autotuned;Lsh");
|
||||||
PARAMETER(NearestNeighbor, 2Distance_type, QString, "0:EUCLIDEAN_L2;MANHATTAN_L1;MINKOWSKI;MAX;HIST_INTERSECT;HELLINGER;CHI_SQUARE_CS;KULLBACK_LEIBLER_KL");
|
PARAMETER(NearestNeighbor, 2Distance_type, QString, "0:EUCLIDEAN_L2;MANHATTAN_L1;MINKOWSKI;MAX;HIST_INTERSECT;HELLINGER;CHI_SQUARE_CS;KULLBACK_LEIBLER_KL;HAMMING");
|
||||||
PARAMETER(NearestNeighbor, 3nndrRatioUsed, bool, true);
|
PARAMETER(NearestNeighbor, 3nndrRatioUsed, bool, true);
|
||||||
PARAMETER(NearestNeighbor, 4nndrRatio, float, 0.8f);
|
PARAMETER(NearestNeighbor, 4nndrRatio, float, 0.8f);
|
||||||
PARAMETER(NearestNeighbor, 5minDistanceUsed, bool, false);
|
PARAMETER(NearestNeighbor, 5minDistanceUsed, bool, false);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user