Commit 1d6d0144ae4492e025ee2c858773666bdde317d6

Authored by Jordan Cheney
1 parent 7359515b

Documentation and minor fixes

openbr/plugins/cluster/meanshift.cpp
... ... @@ -6,6 +6,15 @@ using namespace cv;
6 6 namespace br
7 7 {
8 8  
  9 +/*!
  10 + * \brief A transform implementing the mean shift clustering algorithm.
  11 + * \author Jordan Cheney \cite JordanCheney
  12 + * \br_property br::Distance* distance The distance used to compute the distance between templates
  13 + * \br_property int kernelBandwidth The size of the kernel used to converge points to a cluster center
  14 + * \br_property float shiftThreshold The cutoff threshold distance for a shifted point. A value lower then this threshold indicates a point has finished shifting to a cluster center.
  15 + * \br_property float distanceThreshold The distance threshold for a point to join a cluster. A point must be at least this close to another point to be included in the same cluster as that point.
  16 + * \br_link http://spin.atomicobject.com/2015/05/26/mean-shift-clustering/
  17 + */
9 18 class MeanShiftClusteringTransform : public TimeVaryingTransform
10 19 {
11 20 Q_OBJECT
... ... @@ -65,11 +74,11 @@ private:
65 74 for (int i = 0; i < original_points.size(); i++)
66 75 distances.at<float>(0, i) = distance->compare(point, original_points[i]);
67 76  
68   - Mat weights = gaussian_kernel(distances, kernelBandwidth);
  77 + Mat weights = gaussianKernel(distances, kernelBandwidth);
69 78 point = (weights * OpenCVUtils::toMat(original_points)) / sum(weights)[0];
70 79 }
71 80  
72   - inline Mat gaussian_kernel(const Mat &distance, const float bandwidth)
  81 + inline Mat gaussianKernel(const Mat &distance, const float bandwidth)
73 82 {
74 83 Mat p, e;
75 84 pow(distance / bandwidth, 2, p);
... ... @@ -89,7 +98,8 @@ private:
89 98 groups.append(group);
90 99 }
91 100  
92   - qDebug("created %d clusters from %d templates", newGroupIdx, points.size());
  101 + if (Globals->verbose)
  102 + qDebug("created %d clusters from %d templates", newGroupIdx, points.size());
93 103  
94 104 return groups;
95 105 }
... ...