Mercurial > hg > match-vamp
changeset 122:50712e4b8c89 adaptive_diagonals
If two consecutive pin points have the same coordinate on one axis, drop the first. Also, don't forget to recalculate the opening and closing parts of the path
author | Chris Cannam |
---|---|
date | Fri, 05 Dec 2014 18:06:51 +0000 |
parents | 14a1664d1cfe |
children | d6f22887283e |
files | Makefile.inc src/Finder.cpp |
diffstat | 2 files changed, 36 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/Makefile.inc Fri Dec 05 17:28:53 2014 +0000 +++ b/Makefile.inc Fri Dec 05 18:06:51 2014 +0000 @@ -24,17 +24,27 @@ # DO NOT DELETE src/DistanceMetric.o: src/DistanceMetric.h +src/FeatureConditioner.o: src/FeatureConditioner.h src/Path.o: src/Path.h src/MatchFeatureFeeder.o: src/MatchFeatureFeeder.h src/Matcher.h src/MatchFeatureFeeder.o: src/DistanceMetric.h src/Finder.h src/FeatureExtractor.o: src/FeatureExtractor.h src/Finder.o: src/Finder.h src/Matcher.h src/DistanceMetric.h src/Path.h +src/Finder.o: src/MedianFilter.h src/Matcher.o: src/Matcher.h src/DistanceMetric.h -src/MatchVampPlugin.o: src/MatchVampPlugin.h src/Matcher.h -src/MatchVampPlugin.o: src/DistanceMetric.h src/FeatureExtractor.h -src/MatchVampPlugin.o: src/MatchFeatureFeeder.h src/Finder.h src/Path.h +src/MatchPipeline.o: src/MatchPipeline.h src/Matcher.h src/DistanceMetric.h +src/MatchPipeline.o: src/Finder.h src/FeatureExtractor.h +src/MatchPipeline.o: src/FeatureConditioner.h src/MatchFeatureFeeder.h +src/MatchVampPlugin.o: src/MatchVampPlugin.h src/MatchPipeline.h +src/MatchVampPlugin.o: src/Matcher.h src/DistanceMetric.h src/Finder.h +src/MatchVampPlugin.o: src/FeatureExtractor.h src/FeatureConditioner.h +src/MatchVampPlugin.o: src/MatchFeatureFeeder.h src/MatchFeatureFeeder.o: src/Matcher.h src/DistanceMetric.h src/Finder.h src/Finder.o: src/Matcher.h src/DistanceMetric.h src/Matcher.o: src/DistanceMetric.h -src/MatchVampPlugin.o: src/Matcher.h src/DistanceMetric.h -src/MatchVampPlugin.o: src/FeatureExtractor.h +src/MatchPipeline.o: src/Matcher.h src/DistanceMetric.h src/Finder.h +src/MatchPipeline.o: src/FeatureExtractor.h src/FeatureConditioner.h +src/MatchPipeline.o: src/MatchFeatureFeeder.h +src/MatchVampPlugin.o: src/MatchPipeline.h src/Matcher.h src/DistanceMetric.h +src/MatchVampPlugin.o: src/Finder.h src/FeatureExtractor.h +src/MatchVampPlugin.o: src/FeatureConditioner.h src/MatchFeatureFeeder.h
--- a/src/Finder.cpp Fri Dec 05 17:28:53 2014 +0000 +++ b/src/Finder.cpp Fri Dec 05 18:06:51 2014 +0000 @@ -98,6 +98,9 @@ Finder::recalculatePathCostMatrix(int r1, int c1, int r2, int c2, float diagonalWeight) { + cerr << "recalculatePathCostMatrix: (" << r1 << "," << c1 << ") -> (" + << r2 << "," << c2 << ")" << endl; + int prevRowStart = 0, prevRowStop = 0; for (int r = r1; r <= r2; r++) { @@ -545,28 +548,37 @@ int ex, ey; getEndPoint(ex, ey); - pair<int, int> prev = *pinpoints.begin(); + pair<int, int> prev(0, 0); for (map<int, int>::const_iterator i = pinpoints.begin(); i != pinpoints.end(); ++i) { if (i == pinpoints.begin()) continue; + map<int, int>::const_iterator j = i; + ++j; + if (j != pinpoints.end() && i->second == j->second) { + // skip this one + continue; + } + pair<int, int> curr = *i; if (curr.first > ex || curr.second > ey) { + curr = pair<int, int>(ex, ey); + } - recalculatePathCostMatrix(prev.second, prev.first, - ey, ex, 1.0); - - } else { - - recalculatePathCostMatrix(prev.second, prev.first, - curr.second, curr.first, 1.0); - } + recalculatePathCostMatrix(prev.second, prev.first, + curr.second, curr.first, + 1.0); prev = curr; } + + recalculatePathCostMatrix(prev.second, prev.first, + m_m->getFrameCount() - 1, + m_m->getOtherFrameCount() - 1, + 1.0); }