#include #include #include "vislearning/features/localfeatures/sift.h" #include "vislearning/features/localfeatures/LocalFeatureOpponnentSift.h" using namespace OBJREC; using namespace std; using namespace NICE; LocalFeatureOpponnentSift::LocalFeatureOpponnentSift( const Config *conf ):LocalFeatureRGBSift(conf) { } LocalFeatureOpponnentSift::~LocalFeatureOpponnentSift() { } int LocalFeatureOpponnentSift::getDescriptors ( const NICE::ColorImage & cimg, VVector & positions, VVector & descriptors ) const { NICE::ColorImage opimg(cimg.width(), cimg.height()); for(int y = 0; y < (int)cimg.height(); y++) { for(int x = 0; x < (int)cimg.width(); x++) { // Farbkanaele auslesen int r = cimg.getPixel(x,y,0); int g = cimg.getPixel(x,y,1); int b = cimg.getPixel(x,y,2); // Transformation in den Opponent Farbraum nach Van de Sande int o1 = (int)(((double)(r-g)+255.0)/2.0); int o2 = (int)(((double)(r+g-b)+510.0)/4.0); int o3 = (int)((double)(r+g+b)/3.0); opimg.setPixel(x,y,o1,o2,o3); } } return LocalFeatureRGBSift::getDescriptors(opimg, positions, descriptors); }