Different sampling algorithms

This commit is contained in:
2019-03-12 00:43:35 +01:00
parent 8706e241a4
commit 892835b380
+7 -11
View File
@@ -43,8 +43,7 @@ public:
double* CalculateDCT(Image* img) { double* CalculateDCT(Image* img) {
double pi = 3.14159265359; double pi = 3.14159265359;
img->type(GrayscaleType); img->type(GrayscaleType);
img->filterType(LanczosFilter); //fast! img->sample(Geometry("8x8!")); //64 pixels
img->resize(Geometry(8, 8)); //64 pixels
ssize_t n = 8; ssize_t n = 8;
ssize_t m = 8; ssize_t m = 8;
Pixels view(*img); Pixels view(*img);
@@ -159,8 +158,7 @@ public:
bitset<64> feature(Image* img) { bitset<64> feature(Image* img) {
Image* local_image = new Image(*img); Image* local_image = new Image(*img);
local_image->type(GrayscaleType); local_image->type(GrayscaleType);
local_image->filterType(LanczosFilter); //fast resizing, should have minimal impact on accuracy local_image->sample(Geometry("8x8!")); //64 pixels
local_image->resize(Geometry(8, 8, 0, 0)); //64 pixels
ssize_t n = 8; ssize_t n = 8;
ssize_t m = 8; ssize_t m = 8;
Pixels view(*local_image); Pixels view(*local_image);
@@ -263,8 +261,7 @@ public:
bitset<64> feature(Image* img) { bitset<64> feature(Image* img) {
Image* local_image = new Image(*img); Image* local_image = new Image(*img);
local_image->type(GrayscaleType); local_image->type(GrayscaleType);
local_image->filterType(LanczosFilter); //fast! local_image->sample(Geometry("8x8!")); //64 pixels
local_image->resize(Geometry(8, 8)); //64 pixels
ssize_t n = 8; ssize_t n = 8;
ssize_t m = 8; ssize_t m = 8;
Pixels view(*local_image); Pixels view(*local_image);
@@ -293,23 +290,22 @@ public:
if (a[i] != b[i]) biterror++; if (a[i] != b[i]) biterror++;
} }
return biterror; return biterror;
}; }
string ToString() { string ToString() {
return "pearson"; return "pearson";
} }
}; };
//Uses an adaptive thresholding algorithm on an 8*8 //Uses an adaptive thresholding algorithm on an 8*8
//images. Re-calculates the threshold for each 2*2 //images. Re-calculates the threshold for each
//neighbourhood and stores it in a LTR map //neighbourhood and stores it in a LTR map
class threshold : public Descriptor { class threshold : public Descriptor {
public: public:
bitset<64> feature(Image* img) { bitset<64> feature(Image* img) {
Image* local_image = new Image(*img); Image* local_image = new Image(*img);
local_image->type(GrayscaleType); local_image->type(GrayscaleType);
local_image->filterType(LanczosFilter); //fast! local_image->sample(Geometry("8x8!")); //64 pixels
local_image->resize(Geometry(8, 8)); //64 pixels local_image->adaptiveThreshold(3, 3); //Thresholding in a moving neighborhood
local_image->adaptiveThreshold(2, 2); //Thresholding in a moving 2*2 neighborhood
ssize_t n = 8; ssize_t n = 8;
ssize_t m = 8; ssize_t m = 8;
Pixels view(*local_image); Pixels view(*local_image);