summaryrefslogtreecommitdiff
path: root/geom_matching/wasserstein/include/diagram_reader.h
diff options
context:
space:
mode:
authorGard Spreemann <gard.spreemann@epfl.ch>2018-05-14 17:25:40 +0200
committerGard Spreemann <gard.spreemann@epfl.ch>2018-05-14 17:25:40 +0200
commit0c6aafa07857042e92857fec6969d0caf89e187e (patch)
tree412ee4ec07f6e8d6567ac13851ff89ba9fc3e68e /geom_matching/wasserstein/include/diagram_reader.h
parenta5454ea066a0b148c9f423fc8862e26aae79eefe (diff)
Support for finitization.gspr/finitize
Diffstat (limited to 'geom_matching/wasserstein/include/diagram_reader.h')
-rw-r--r--geom_matching/wasserstein/include/diagram_reader.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/geom_matching/wasserstein/include/diagram_reader.h b/geom_matching/wasserstein/include/diagram_reader.h
index 84bf49c..55228b4 100644
--- a/geom_matching/wasserstein/include/diagram_reader.h
+++ b/geom_matching/wasserstein/include/diagram_reader.h
@@ -324,6 +324,26 @@ void remove_duplicates(ContType& dgm_A, ContType& dgm_B)
}
}
+template<class RealType = double>
+int finitize(RealType finitization, std::vector<std::pair<RealType, RealType> >& diagram)
+{
+ if (finitization == std::numeric_limits<double>::infinity())
+ return 0;
+
+ int altered = 0;
+
+ for (auto it = diagram.begin(); it != diagram.end(); ++it)
+ {
+ if (it->second > finitization)
+ {
+ it->second = finitization;
+ ++altered;
+ }
+ }
+
+ return altered;
+}
+
#ifdef WASSERSTEIN_PURE_GEOM