|
@@ -26,6 +26,7 @@
|
|
|
#include <QJsonObject>
|
|
|
#include <QJsonArray>
|
|
|
#include <QJsonDocument>
|
|
|
+#include <vector>
|
|
|
|
|
|
#include "SLList.hpp"
|
|
|
|
|
@@ -50,37 +51,39 @@ SLList::SLList (const char* file)
|
|
|
std::pair<double, int> SLList::distance_avg(SLList* sllist, QImage* img) const
|
|
|
{
|
|
|
const SLList *list1 = this, *list2 = sllist;
|
|
|
- if(size() > sllist->size())
|
|
|
- {
|
|
|
- list1 = sllist;
|
|
|
- list2 = this;
|
|
|
- }
|
|
|
+ std::vector<double> mins;
|
|
|
|
|
|
double sum = 0;
|
|
|
double min;
|
|
|
|
|
|
for(unsigned int i = 0 ; i < list1->size(); i++)
|
|
|
{
|
|
|
- // std::cout << "--------------------------------------" << std::endl;
|
|
|
- // std::cout << *(list1->get(i)) << std::endl << std::endl;
|
|
|
min = list1->get(i)->distance(list2->get(0), img->width(), img->height());
|
|
|
- // std::cout << *(list2->get(0)) << " -> " << min << std::endl << "Min : " << min << std::endl;
|
|
|
|
|
|
for(unsigned int j = 1 ; j < list2->size(); j++)
|
|
|
{
|
|
|
double temp = list1->get(i)->distance(list2->get(j), img->width(), img->height());
|
|
|
- // std::cout << *(list2->get(j)) << " -> " << temp << std::endl;
|
|
|
if(temp < min)
|
|
|
min = temp;
|
|
|
- // std::cout << "Min : " << min << std::endl;
|
|
|
}
|
|
|
- sum += min;
|
|
|
- // std::cout << std::endl << "Sum : " << sum << std::endl << std::endl;
|
|
|
+ mins.push_back(min);
|
|
|
}
|
|
|
- return std::make_pair(sum/list1->size(), size()-sllist->size());
|
|
|
-}
|
|
|
|
|
|
+ unsigned int minsize = this->size();
|
|
|
+ if(list2->size() < minsize)
|
|
|
+ minsize = list2->size();
|
|
|
+
|
|
|
+ sort(mins.begin(), mins.end());
|
|
|
+
|
|
|
+ for(unsigned int i = 0 ; i < minsize ; i++)
|
|
|
+ sum+=mins[i];
|
|
|
+
|
|
|
+ sum/=minsize;
|
|
|
+
|
|
|
+ return std::make_pair(sum, size()-sllist->size());
|
|
|
+}
|
|
|
|
|
|
+/*
|
|
|
std::pair<double, int> SLList::distance_hausdorff(SLList* sllist, QImage* img) const
|
|
|
{
|
|
|
const SLList *list1 = this, *list2 = sllist;
|
|
@@ -111,3 +114,4 @@ std::pair<double, int> SLList::distance_hausdorff(SLList* sllist, QImage* img) c
|
|
|
}
|
|
|
return std::make_pair(max, size()-sllist->size());
|
|
|
}
|
|
|
+*/
|