diff --git a/main.cpp b/main.cpp index a42782b..f2a69b2 100644 --- a/main.cpp +++ b/main.cpp @@ -17,32 +17,32 @@ using namespace cimg_library; /* -double min(std::vector vect) { - double min = (*vect.begin()).getDistance(); - std::vector::iterator it; + double min(std::vector vect) { + double min = (*vect.begin()).getDistance(); + std::vector::iterator it; - for (it = vect.begin() + 1; it != vect.end(); it++) { - if ((*it).getDistance() < min) { - min = (*it).getDistance(); - } - } + for (it = vect.begin() + 1; it != vect.end(); it++) { + if ((*it).getDistance() < min) { + min = (*it).getDistance(); + } + } - return min; -} + return min; + } -double max(std::vector vect) { - double max = (*vect.begin()).getDistance(); - std::vector::iterator it; + double max(std::vector vect) { + double max = (*vect.begin()).getDistance(); + std::vector::iterator it; - for (it = vect.begin() + 1; it != vect.end(); it++) { - if ((*it).getDistance() > max) { - max = (*it).getDistance(); - } - } + for (it = vect.begin() + 1; it != vect.end(); it++) { + if ((*it).getDistance() > max) { + max = (*it).getDistance(); + } + } - return max; -} -*/ + return max; + } + */ /******************************************************************************* Main @@ -54,7 +54,7 @@ int main() CImgDisplay dispBase(imgLena,"Image de base"); std::vector vectEMax, vectEMin; - std::vector w; + std::vector w; /////////////////////////////////////////////////////////////////////////////// // Part 1: Finding minimas and maximas // @@ -152,20 +152,46 @@ int main() } } - // Calculate the windows sizes - for(unsigned int i=0; i imgSource = imgLena.channel(0); // Order filters with source image + std::vector vectFilterMax, vectFilterMin; + + for(unsigned int i = 0; i < vectEMax.size(); i++) { + unsigned char max = 0; + for (int k = vectEMax[i].getX() - ((w[i] - 1) / 2); k < vectEMax[i].getX() + ((w[i] + 1) / 2); k++) { + for (int l = vectEMax[i].getY() - ((w[i] - 1) / 2); l < vectEMax[i].getY() + ((w[i] + 1) / 2); l++) { + if (imgSource(k, l) > max) { + max = imgSource(k, l); + } + } + } + vectFilterMax.push_back(max); + } + + for(unsigned int i = 0; i < vectEMin.size(); i++) { + unsigned char min = 10000000; + for (int k = vectEMin[i].getX() - ((w[i] - 1) / 2); k < vectEMin[i].getX() + ((w[i] + 1) / 2); k++) { + for (int l = vectEMin[i].getY() - ((w[i] - 1) / 2); l < vectEMin[i].getY() + ((w[i] + 1) / 2); l++) { + if (imgSource(k, l) < min) { + min = imgSource(k, l); + } + } + } + vectFilterMin.push_back(min); + } // Calculate the upper envelope