diff --git a/source/RobotAPI/libraries/armem/server/ltm/detail/MemoryBase.h b/source/RobotAPI/libraries/armem/server/ltm/detail/MemoryBase.h
index aa6678e39cde6b12c5469d3bfbc207d9932661d0..e56aa6d1e4d93b52b9f3e52dfa93721f428c94a6 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/detail/MemoryBase.h
+++ b/source/RobotAPI/libraries/armem/server/ltm/detail/MemoryBase.h
@@ -191,7 +191,7 @@ namespace armarx::armem::server::ltm::detail
         {
             disable();
             //This can hold information abut the filter statistics, if the LTM recording is properly ended
-            getFilterStatistics();
+            //getFilterStatistics();
         }
 
         bool
diff --git a/source/RobotAPI/libraries/armem/server/ltm/processors/filter/Filter.h b/source/RobotAPI/libraries/armem/server/ltm/processors/filter/Filter.h
index 33498ffc0192e73774822456eae9eefc478f870b..10c0361ffa99084a84be4876bd225912dfc8b9be 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/processors/filter/Filter.h
+++ b/source/RobotAPI/libraries/armem/server/ltm/processors/filter/Filter.h
@@ -40,6 +40,7 @@ namespace armarx::armem::server::ltm::processor
             aron::similarity::NDArraySimilarity::Type similarity_type;
             std::chrono::high_resolution_clock::time_point start_time;
             std::chrono::high_resolution_clock::time_point end_time;
+            int number_of_compared_objects = 2;
         } stats;
 
         virtual FilterStatistics getFilterStatistics();
diff --git a/source/RobotAPI/libraries/armem/server/ltm/processors/filter/equalityFilter/EqualityFilter.cpp b/source/RobotAPI/libraries/armem/server/ltm/processors/filter/equalityFilter/EqualityFilter.cpp
index 5d0abcf4dab0771e0b2ac49237d55cd04b2cadcb..91ed667f213b926b06a77900f51eb7b9d83b83d1 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/processors/filter/equalityFilter/EqualityFilter.cpp
+++ b/source/RobotAPI/libraries/armem/server/ltm/processors/filter/equalityFilter/EqualityFilter.cpp
@@ -35,10 +35,21 @@ namespace armarx::armem::server::ltm::processor::filter
         }
 
         if(images.size() > 1){
-            similarity = aron::similarity::NDArraySimilarity::calculate_similarity(
-                        images.at(images.size() - 2), images.at(images.size() - 1),
-                        this->similarity_type);
-            ARMARX_INFO << "Similarity: " << similarity << " from type: " << similarity_type;
+            if(max_images > 2 && images.size() >= max_images){
+                std::vector<aron::data::NDArrayPtr> images_to_compare;
+                for(int i = 1; i < max_images; i++){
+                    //adding the images that we want to compare to the last image
+                    images_to_compare.insert(images_to_compare.end(), images.at(images.size() - 1 - i));
+                }
+                similarity = aron::similarity::NDArraySimilarity::calculate_similarity_multi
+                        (images_to_compare, images.at(images.size() - 1), this->similarity_type);
+                ARMARX_INFO << "Similarity: " << similarity << " from type: " << similarity_type << " with " << max_images << " images compared";
+            } else {
+                similarity = aron::similarity::NDArraySimilarity::calculate_similarity(
+                            images.at(images.size() - 2), images.at(images.size() - 1),
+                            this->similarity_type);
+                ARMARX_INFO << "Similarity: " << similarity << " from type: " << similarity_type;
+            }
         }else{
             //if we have not accepted at least one image yet, accept it
             stats.accepted += 1;
@@ -90,6 +101,13 @@ namespace armarx::armem::server::ltm::processor::filter
                 ARMARX_WARNING << "Undefined similarity measure detected in JSON file";
             }
         }
+        if(json.find(PARAM_MAX_OBJECTS) != json.end()){
+            max_images = json.at(PARAM_MAX_OBJECTS);
+            ARMARX_INFO << VAROUT(max_images);
+            //stats.additional_info += "max objects to compare: ";
+            //stats.additional_info += std::to_string(max_images);
+            stats.number_of_compared_objects = max_images;
+        }
 
         stats.start_time = std::chrono::high_resolution_clock::now();
     }
diff --git a/source/RobotAPI/libraries/armem/server/ltm/processors/filter/equalityFilter/EqualityFilter.h b/source/RobotAPI/libraries/armem/server/ltm/processors/filter/equalityFilter/EqualityFilter.h
index 5d666eeb833cade391d5f95f6c5c4dd7d086fdd8..19aefedfe051d7a8910a3beaff7ea0e95a5c6b6e 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/processors/filter/equalityFilter/EqualityFilter.h
+++ b/source/RobotAPI/libraries/armem/server/ltm/processors/filter/equalityFilter/EqualityFilter.h
@@ -20,6 +20,7 @@ namespace armarx::armem::server::ltm::processor::filter
         static const constexpr char* NAME = "SnapshotSimilarityFilter";
         static const constexpr char* PARAM_THRESHOLD = "Threshold";
         static const constexpr char* PARAM_SIM_MEASURE = "SimilarityMeasure";
+        static const constexpr char* PARAM_MAX_OBJECTS = "NumberOfObjectsToCompare";
 
         SnapshotSimilarityFilter() = default;
 
@@ -36,7 +37,7 @@ namespace armarx::armem::server::ltm::processor::filter
         std::double_t threshold;
         FilterStatistics stats;
         int max_images = 2;
-        aron::similarity::NDArraySimilarity::Type similarity_type = aron::similarity::NDArraySimilarity::Type::MSE;
+        aron::similarity::NDArraySimilarity::Type similarity_type;
 
     };
 } // namespace armarx::armem::server::ltm::processor::filter
diff --git a/source/RobotAPI/libraries/armem/server/plugins/Plugin.cpp b/source/RobotAPI/libraries/armem/server/plugins/Plugin.cpp
index ba678a33476511f006c77c693f7f798d405001d9..1390209ac53286177ff93f1ff81d6c3271646c69 100644
--- a/source/RobotAPI/libraries/armem/server/plugins/Plugin.cpp
+++ b/source/RobotAPI/libraries/armem/server/plugins/Plugin.cpp
@@ -93,7 +93,7 @@ namespace armarx::armem::server::plugins
     void
     Plugin::preOnDisconnectComponent()
     {
-        //longtermMemory.getFilterStatistics(); does not work correctly at the moment
+        longtermMemory.getFilterStatistics(); //does not work correctly at the moment
 
 
         if (clientPlugin->isMemoryNameSystemEnabled() and clientPlugin->getMemoryNameSystemClient())
diff --git a/source/RobotAPI/libraries/armem/server/test/ForgettingExperiments.cpp b/source/RobotAPI/libraries/armem/server/test/ForgettingExperiments.cpp
index bf617e4431cba4303fb4252667f63e6b93dd4743..7b46adc9fdb6e6aee433d513937cffb6f0da0e96 100644
--- a/source/RobotAPI/libraries/armem/server/test/ForgettingExperiments.cpp
+++ b/source/RobotAPI/libraries/armem/server/test/ForgettingExperiments.cpp
@@ -21,9 +21,16 @@ void save_statistics(std::map<std::string, ltm::processor::SnapshotFilter::Filte
     }
     nlohmann::json jsonData;
     bool ended_without_recording = false;
+
+    auto now = std::chrono::high_resolution_clock::now();
+    auto now_time = std::chrono::high_resolution_clock::to_time_t(now);
+    auto time = localtime(&now_time);
+
+
     for(const auto& pair: stats){
         if(pair.second.accepted + pair.second.rejected < 1){
             ended_without_recording = true;
+            ARMARX_INFO << "Trying to not add JSON file because accepted + rejected < 1";
         }
         std::map<std::string, std::string> information;
         information["additional time needed: "] = (std::to_string(pair.second.additional_time.count()) + " sec");
@@ -31,6 +38,7 @@ void save_statistics(std::map<std::string, ltm::processor::SnapshotFilter::Filte
         information["number of rejected elements: "] = std::to_string(pair.second.rejected);
         information["Additional information: "] = pair.second.additional_info;
         information["Similarity-Type: "] = std::to_string(pair.second.similarity_type);
+        information["Number of objects compared each time: "] = std::to_string((pair.second.number_of_compared_objects));
         auto time = std::chrono::high_resolution_clock::to_time_t(pair.second.start_time);
         auto t = localtime(&time);
         std::stringstream ss;
@@ -50,9 +58,7 @@ void save_statistics(std::map<std::string, ltm::processor::SnapshotFilter::Filte
         return;
     }
 
-    auto now = std::chrono::high_resolution_clock::now();
-    auto now_time = std::chrono::high_resolution_clock::to_time_t(now);
-    auto time = localtime(&now_time);
+
     std::stringstream ss;
     ss << std::put_time(time, "%Y-%m-%d %H:%M:%S");
     std::string timeString = ss.str();
diff --git a/source/RobotAPI/libraries/aron/similarity/data/image/NDArraySimilarity.cpp b/source/RobotAPI/libraries/aron/similarity/data/image/NDArraySimilarity.cpp
index 6cefda533d76f7a3f4f9b2f9d923b0b221279aa9..d8a6316cd0412e3641060f9e1870145b6158bd11 100644
--- a/source/RobotAPI/libraries/aron/similarity/data/image/NDArraySimilarity.cpp
+++ b/source/RobotAPI/libraries/aron/similarity/data/image/NDArraySimilarity.cpp
@@ -37,4 +37,13 @@ namespace armarx::aron::similarity{
         }
     }
 
+    double NDArraySimilarity::calculate_similarity_multi(std::vector<data::NDArrayPtr>& images, armarx::aron::data::NDArrayPtr& p, Type type)
+    {
+        double sim = 0;
+        for(auto& image: images){
+            sim += calculate_similarity(image, p, type);
+        }
+        return sim;
+    }
+
 }
diff --git a/source/RobotAPI/libraries/aron/similarity/data/image/NDArraySimilarity.h b/source/RobotAPI/libraries/aron/similarity/data/image/NDArraySimilarity.h
index d7f37b6cb62d3475c115f3abfeb67e900553bbdc..862b574d2cf39b774b63e02c9a49bf9ec742e224 100644
--- a/source/RobotAPI/libraries/aron/similarity/data/image/NDArraySimilarity.h
+++ b/source/RobotAPI/libraries/aron/similarity/data/image/NDArraySimilarity.h
@@ -15,4 +15,13 @@ namespace armarx::aron::similarity::NDArraySimilarity{
 
     double calculate_similarity(armarx::aron::data::NDArrayPtr& p1, armarx::aron::data::NDArrayPtr& p2, Type type);
 
+    /**
+     * @brief calculate_similarity_multi compares the image p with all images from the images vector, the dissimilarity values are simply summed up
+     * @param images vector of images that are compared to p
+     * @param p main image that you want to know the dissimilarity from
+     * @param type Type of dissimilarity measure used
+     * @return dissimilarity
+     */
+    double calculate_similarity_multi(std::vector<armarx::aron::data::NDArrayPtr>& images, armarx::aron::data::NDArrayPtr& p, Type type);
+
 }
diff --git a/source/RobotAPI/libraries/aron/similarity/data/image/mse.h b/source/RobotAPI/libraries/aron/similarity/data/image/mse.h
index 461768d99d4624a5a5d92d82ed749845ceef94f1..7908aca0eb7d92af52db8044281078fa812fea5d 100644
--- a/source/RobotAPI/libraries/aron/similarity/data/image/mse.h
+++ b/source/RobotAPI/libraries/aron/similarity/data/image/mse.h
@@ -30,4 +30,5 @@
 namespace armarx::aron::similarity::mse
 {
     double compute_similarity(const aron::data::NDArrayPtr& p1, const aron::data::NDArrayPtr& p2);
+
 }