Mercurial > hg > match-vamp
changeset 197:547bea29ad89 re-minimise
Increase noise for compact types
author | Chris Cannam |
---|---|
date | Fri, 27 Feb 2015 09:07:54 +0000 |
parents | fa005e5e0953 |
children | 082ff90f1c82 |
files | src/DistanceMetric.cpp test/TestDistanceMetric.cpp |
diffstat | 2 files changed, 16 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/DistanceMetric.cpp Fri Feb 27 08:55:39 2015 +0000 +++ b/src/DistanceMetric.cpp Fri Feb 27 09:07:54 2015 +0000 @@ -109,6 +109,11 @@ assert(f2.size() == f1.size()); int featureSize = static_cast<int>(f1.size()); + double minNoise = 0.0; +#ifdef USE_COMPACT_TYPES + minNoise = 1.0 / m_params.scale; +#endif + if (m_params.metric == Cosine) { double num = 0, denom1 = 0, denom2 = 0; @@ -122,7 +127,9 @@ d = 1.0 - (num / (eps + sqrt(denom1 * denom2))); if (m_params.noise == AddNoise) { - d += 1e-2; + double noise = 1e-2; + if (noise < minNoise) noise = minNoise; + d += noise; } if (d > 1.0) d = 1.0; @@ -143,8 +150,9 @@ d = sqrt(d); } - double noise = 1e-3 * featureSize; if (m_params.noise == AddNoise) { + double noise = 1e-3 * featureSize; + if (noise < minNoise) noise = minNoise; d += noise; sum += noise; }
--- a/test/TestDistanceMetric.cpp Fri Feb 27 08:55:39 2015 +0000 +++ b/test/TestDistanceMetric.cpp Fri Feb 27 09:07:54 2015 +0000 @@ -68,6 +68,9 @@ e0 = getTestFeature(0); double noise = 1e-3 * 4; +#ifdef USE_COMPACT_TYPES + noise = 1.0 / params.scale; +#endif BOOST_CHECK_EQUAL(dm.calcDistance(e0, e0), dm.scaleValueIntoDistanceRange(0.0 + noise)); BOOST_CHECK_EQUAL(dm.calcDistance(e1, e0), dm.scaleValueIntoDistanceRange(6.0 + noise)); @@ -88,6 +91,9 @@ e0 = getTestFeature(0); double noise = 1e-3 * 4; +#ifdef USE_COMPACT_TYPES + noise = 1.0 / params.scale; +#endif BOOST_CHECK_EQUAL(dm.calcDistance(e0, e0), dm.scaleValueIntoDistanceRange(1.0)); BOOST_CHECK_EQUAL(dm.calcDistance(e1, e0), dm.scaleValueIntoDistanceRange(1.0));