Commit 543fb2f4c6dda8d7f1cede6d84e1ab50dfe4f660

Authored by Josh Klontz
1 parent ab191399

removed permute distance

openbr/plugins/distance/permute.cpp deleted
1   -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2   - * Copyright 2012 The MITRE Corporation *
3   - * *
4   - * Licensed under the Apache License, Version 2.0 (the "License"); *
5   - * you may not use this file except in compliance with the License. *
6   - * You may obtain a copy of the License at *
7   - * *
8   - * http://www.apache.org/licenses/LICENSE-2.0 *
9   - * *
10   - * Unless required by applicable law or agreed to in writing, software *
11   - * distributed under the License is distributed on an "AS IS" BASIS, *
12   - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13   - * See the License for the specific language governing permissions and *
14   - * limitations under the License. *
15   - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
16   -
17   -#include <numeric>
18   -#include <algorithm>
19   -
20   -#include <openbr/plugins/openbr_internal.h>
21   -
22   -#include <QtConcurrent>
23   -
24   -using namespace std;
25   -
26   -namespace br
27   -{
28   -
29   -/*!
30   - * \ingroup distances
31   - * \brief Compares all permutations of matrices from one template to the other, and fuses the scores via the operation specified.
32   - * \author Scott Klum \cite sklum
33   - * \note Operation: Mean, sum, min, max are supported.
34   - */
35   -class PermuteDistance : public Distance
36   -{
37   - Q_OBJECT
38   - Q_ENUMS(Operation)
39   - Q_PROPERTY(br::Distance* distance READ get_distance WRITE set_distance RESET reset_distance STORED false)
40   - Q_PROPERTY(Operation operation READ get_operation WRITE set_operation RESET reset_operation STORED false)
41   -public:
42   - /*!< */
43   - enum Operation {Mean, Sum, Max, Min};
44   -
45   -private:
46   - BR_PROPERTY(br::Distance*, distance, NULL)
47   - BR_PROPERTY(Operation, operation, Mean)
48   -
49   - void train(const TemplateList &src)
50   - {
51   - distance->train(src);
52   - }
53   -
54   - float compare(const Template &a, const Template &b) const
55   - {
56   - QList<int> indices;
57   - for (int i=0; i<a.size(); i++)
58   - indices << i;
59   -
60   - QList<float> scores;
61   - do {
62   - QList<float> permScores;
63   - for (int i=0; i<a.size(); i++)
64   - permScores.append(distance->compare(Template(a.file, a[indices[i]]),Template(b.file, b[i])));
65   - scores.append(std::accumulate(permScores.begin(),permScores.end(),0.0));
66   - } while ( next_permutation(indices.begin(),indices.end()) );
67   -
68   - switch (operation) {
69   - case Mean:
70   - return std::accumulate(scores.begin(),scores.end(),0.0)/(float)scores.size();
71   - break;
72   - case Sum:
73   - return std::accumulate(scores.begin(),scores.end(),0.0);
74   - break;
75   - case Min:
76   - return *std::min_element(scores.begin(),scores.end());
77   - break;
78   - case Max:
79   - return *std::max_element(scores.begin(),scores.end());
80   - break;
81   - default:
82   - qFatal("Invalid operation.");
83   - }
84   - return 0;
85   - }
86   -};
87   -
88   -BR_REGISTER(Distance, PermuteDistance)
89   -
90   -} // namespace br
91   -
92   -#include "distance/permute.moc"
93   -