Commit ed2a8f7b758fc97e71c31d15afa15db2d03d8a66

Authored by Josh Klontz
1 parent bd31789d

remove majorityvoting

openbr/plugins/metadata/majorityvoting.cpp deleted
1 -  
2 -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
3 - * Copyright 2015 Rank One Computing Corporation *  
4 - * *  
5 - * Licensed under the Apache License, Version 2.0 (the "License"); *  
6 - * you may not use this file except in compliance with the License. *  
7 - * You may obtain a copy of the License at *  
8 - * *  
9 - * http://www.apache.org/licenses/LICENSE-2.0 *  
10 - * *  
11 - * Unless required by applicable law or agreed to in writing, software *  
12 - * distributed under the License is distributed on an "AS IS" BASIS, *  
13 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *  
14 - * See the License for the specific language governing permissions and *  
15 - * limitations under the License. *  
16 - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */  
17 -  
18 -#include <openbr/plugins/openbr_internal.h>  
19 -  
20 -namespace br  
21 -{  
22 -  
23 -/*!  
24 - * \ingroup transforms  
25 - * \brief Performs majority voting from a single metadata key or multiple keys and sets the result in the specified key.  
26 - * \br_property QString keys The meta-data key(s) used for Majority Voting.  
27 - * \br_property int numClasses The number of possible classes.  
28 - * \br_property QString outputKey The output metadata key which stores the a list with the index of the winning class set to 1.  
29 - * \br_property float thresh Allows users to specify a threshold for the first class, if exceeded the first class wins else class 2 wins.  
30 - * \author Keyur Patel \cite kpatel  
31 - */  
32 -class MajorityVotingTransform : public UntrainableMetadataTransform  
33 -{  
34 - Q_OBJECT  
35 - Q_PROPERTY(QStringList keys READ get_keys WRITE set_keys RESET reset_keys STORED false)  
36 - Q_PROPERTY(int numClasses READ get_numClasses WRITE set_numClasses RESET reset_numClasses STORED false)  
37 - Q_PROPERTY(QString outputKey READ get_outputKey WRITE set_outputKey RESET reset_outputKey STORED false)  
38 - Q_PROPERTY(float thresh READ get_thresh WRITE set_thresh RESET reset_thresh STORED false)  
39 -  
40 - BR_PROPERTY(QStringList, keys, QStringList())  
41 - BR_PROPERTY(int, numClasses, 2)  
42 - BR_PROPERTY(QString, outputKey, "MajorityVoting")  
43 - BR_PROPERTY(float, thresh, -1)  
44 -  
45 - void projectMetadata(const File &src, File &dst) const  
46 - {  
47 - dst = src;  
48 -  
49 - QList<float> scores = QList<float>();  
50 - foreach (QString key, keys){  
51 - if (src.contains(key)){  
52 - QList<float> templateScores = src.getList<float>(key);  
53 - scores.append(templateScores);  
54 - } else {  
55 - dst.fte = true;  
56 - return;  
57 - }  
58 - }  
59 - QVector<int> classCount(numClasses, 0);  
60 - for (int c = 0; c < scores.size(); c+= numClasses){  
61 - if ((numClasses == 2) && (thresh != -1)){  
62 - if (scores[c] > thresh)  
63 - classCount[0]++;  
64 - else  
65 - classCount[1]++;  
66 - } else {  
67 - int highestScoringClass = 0;  
68 - float highestScore = scores[c];  
69 - for (int b = 1; b < numClasses; b++){  
70 - if (scores[c+b] > highestScore){  
71 - highestScore = scores[c+b];  
72 - highestScoringClass = b;  
73 - }  
74 - }  
75 - classCount[highestScoringClass]++;  
76 - }  
77 - }  
78 - int largestIndex = getIndexOfLargestElement(classCount);  
79 -  
80 - QList<int> output = QList<int>();  
81 - for(int i=0; i <numClasses; i++){  
82 - if(i == largestIndex) output.append(1);  
83 - else output.append(0);  
84 - }  
85 - dst.setList(outputKey,output);  
86 - }  
87 -  
88 - int getIndexOfLargestElement(const QVector<int> &arr) const {  
89 - int largestIndex = 0;  
90 - for (int i = largestIndex; i < arr.size(); i++) {  
91 - if (arr[largestIndex] <= arr[i]) {  
92 - largestIndex = i;  
93 - }  
94 - }  
95 - return largestIndex;  
96 - }  
97 -};  
98 -  
99 -BR_REGISTER(Transform, MajorityVotingTransform)  
100 -  
101 -} // namespace br  
102 -  
103 -#include "metadata/majorityvoting.moc"  
104 -