diff --git a/meanshift.cpp b/meanshift.cpp index 45e8293fac33a8844a95becfeb7049e16a3bb8ac..eef50eb37432365724ab10b68c0e3d5871cb3110 100644 --- a/meanshift.cpp +++ b/meanshift.cpp @@ -58,7 +58,7 @@ void Grouper::readCoordinates(py::array_t<cdt> array, py::array_t<cdt> farray){ } -static double euclid_distance(std::pair<cdt, cdt> coordinate1, std::pair<cdt,cdt> coordinate2){ +static double euclid_distance(const std::pair<cdt, cdt> &coordinate1, const std::pair<cdt,cdt> &coordinate2){ // Euclidian distance between two points double result = 0.0; double distx = coordinate1.first - coordinate2.first; @@ -66,7 +66,7 @@ static double euclid_distance(std::pair<cdt, cdt> coordinate1, std::pair<cdt,cdt return sqrt(distx * distx + disty * disty); } -static std::vector<unsigned> neighbourhood_points(std::pair<cdt,cdt> centroid, ctype coordinates, double max_distance){ +static std::vector<unsigned> neighbourhood_points(const std::pair<cdt,cdt>& centroid, const ctype& coordinates, double max_distance){ std::vector<unsigned> result; for (unsigned n=0; n<coordinates.size(); ++n){ double distance = euclid_distance(centroid, coordinates[n]); @@ -95,8 +95,8 @@ void Grouper::run(){ ctype newcoords = _coordinates; for (unsigned it = 0; it < _numberOfIterations; ++it){ - py::print("starting iteration ", it); -#pragma omp parallel + py::print("starting iteration ", it); +#pragma omp parallel for (unsigned n=0; n<_coordinates.size(); ++n){ std::vector<unsigned> idx_neighbours = neighbourhood_points(_coordinates[n], _coordinates, _lookDistance); double denominator = 0.0; @@ -114,7 +114,7 @@ void Grouper::run(){ } double maxdiff = 0.0; unsigned n=0; - for (auto coordinate : _coordinates){ + for (auto &coordinate : _coordinates){ double diff = euclid_distance(coordinate, newcoords[n]); if (diff > maxdiff){ maxdiff = diff;