Commit 8e526dc5 authored by Ilya Lysenkov's avatar Ilya Lysenkov

Added One Way Descriptor to detectors and descriptros evaluation

parent fe489687
......@@ -1462,6 +1462,9 @@ const string KEYPOINTS_FILENAME = "keypointsFilename";
const string PROJECT_KEYPOINTS_FROM_1IMAGE = "projectKeypointsFrom1Image";
const string MATCH_FILTER = "matchFilter";
const string ONE_WAY_TRAIN_DIR = "detectors_descriptors_evaluation/one_way_train_images/";
const string ONE_WAY_IMAGES_LIST = "one_way_train_images.txt";
class DescriptorQualityTest : public BaseQualityTest
{
public:
......@@ -1787,3 +1790,70 @@ void SurfDescriptorQualityTest::setDefaultDatasetRunParams( int datasetIdx )
}
SurfDescriptorQualityTest surfDescriptorQuality;
//--------------------------------- One Way descriptor test --------------------------------------------
class OneWayDescriptorQualityTest : public DescriptorQualityTest
{
public:
OneWayDescriptorQualityTest() :
DescriptorQualityTest("one_way", "quality-descriptor-one-way")
{
runParams.resize(DATASETS_COUNT);
}
protected:
virtual GenericDescriptorMatch* createDescriptorMatch(int datasetIdx);
virtual void readDatasetRunParams(FileNode& fn, int datasetIdx);
virtual void writeDatasetRunParams(FileStorage& fs, int datasetIdx) const;
virtual void setDefaultDatasetRunParams(int datasetIdx);
typedef OneWayDescriptorMatch::Params RunParams;
vector<RunParams> runParams;
};
GenericDescriptorMatch* OneWayDescriptorQualityTest::createDescriptorMatch(int datasetIdx)
{
GenericDescriptorMatch* genericDescriptorMatch = new OneWayDescriptorMatch(runParams[datasetIdx]);
return genericDescriptorMatch;
}
void OneWayDescriptorQualityTest::readDatasetRunParams(FileNode& fn, int datasetIdx)
{
DescriptorQualityTest::readDatasetRunParams(fn, datasetIdx);
runParams[datasetIdx].poseCount = fn["poseCount"];
int patchWidth = fn["patchWidth"];
int patchHeight = fn["patchHeight"];
runParams[datasetIdx].patchSize = Size(patchWidth, patchHeight);
runParams[datasetIdx].pcaFilename = string(ts->get_data_path()) + (string)fn["pcaFilename"];
runParams[datasetIdx].trainPath = string(ts->get_data_path()) + (string)fn["trainPath"];
runParams[datasetIdx].trainImagesList = (string)fn["trainImagesList"];
runParams[datasetIdx].minScale = fn["minScale"];
runParams[datasetIdx].maxScale = fn["maxScale"];
runParams[datasetIdx].stepScale = fn["stepScale"];
}
void OneWayDescriptorQualityTest::writeDatasetRunParams(FileStorage& fs, int datasetIdx) const
{
DescriptorQualityTest::writeDatasetRunParams(fs, datasetIdx);
fs << "poseCount" << runParams[datasetIdx].poseCount;
fs << "patchWidth" << runParams[datasetIdx].patchSize.width;
fs << "patchHeight" << runParams[datasetIdx].patchSize.height;
fs << "pcaFilename" << runParams[datasetIdx].pcaFilename;
fs << "trainPath" << runParams[datasetIdx].trainPath;
fs << "trainImagesList" << runParams[datasetIdx].trainImagesList;
fs << "minScale" << runParams[datasetIdx].minScale;
fs << "maxScale" << runParams[datasetIdx].maxScale;
fs << "stepScale" << runParams[datasetIdx].stepScale;
}
void OneWayDescriptorQualityTest::setDefaultDatasetRunParams(int datasetIdx)
{
DescriptorQualityTest::setDefaultDatasetRunParams(datasetIdx);
runParams[datasetIdx] = OneWayDescriptorMatch::Params();
runParams[datasetIdx].pcaFilename = string(ts->get_data_path()) + ONE_WAY_TRAIN_DIR + OneWayDescriptorBase::GetPCAFilename();
runParams[datasetIdx].trainPath = string(ts->get_data_path()) + ONE_WAY_TRAIN_DIR;
runParams[datasetIdx].trainImagesList = ONE_WAY_IMAGES_LIST;
}
OneWayDescriptorQualityTest oneWayDescriptorQuality;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment