Adds DCTMedian

Probably DCT Average would work better..
This commit is contained in:
Mark Hoekveen
2018-06-30 15:36:07 +02:00
parent dba94c125e
commit 8b4035eed1
3 changed files with 34 additions and 2 deletions
+31
View File
@@ -360,4 +360,35 @@ public:
string ToString() {
return "Discrete Cosine Transform - Pearson Code";
}
};
class DCTMedian : public Descriptor {
public:
bitset<64> feature(Image* img) {
double* converted = CalculateDCT(img);
double bullshit[64];
for (ssize_t i = 0; i < 64; i++) {
bullshit[i] = converted[i];
}
sort(bullshit, bullshit + 64);
float median = (float)(bullshit[31] + bullshit[32]) / 2;
bitset<64> retval(0);
for (ssize_t i = 0; i < 64; i++) {
retval <<= 1;
if (converted[i] > median)
retval |= bitset<64>(1);
}
return retval;
}
unsigned long long distance(bitset<64> a, bitset<64> b) {
int biterror = 0;
for (int i = 0; i < 64; i++) {
if (a[i] != b[i]) biterror++;
}
return biterror;
};
string ToString() {
return "Discrete Cosine Transform - Median Code";
}
};