Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #include <pcl/correspondence.h>
00038 #include <algorithm>
00039 #include <iterator>
00040
00042 void
00043 pcl::getRejectedQueryIndices (const pcl::Correspondences &correspondences_before,
00044 const pcl::Correspondences &correspondences_after,
00045 std::vector<int>& indices,
00046 bool presorting_required)
00047 {
00048 indices.clear();
00049
00050 const int nr_correspondences_before = static_cast<int> (correspondences_before.size ());
00051 const int nr_correspondences_after = static_cast<int> (correspondences_after.size ());
00052
00053 if (nr_correspondences_before == 0)
00054 return;
00055 else if (nr_correspondences_after == 0)
00056 {
00057 indices.resize(nr_correspondences_before);
00058 for (int i = 0; i < nr_correspondences_before; ++i)
00059 indices[i] = correspondences_before[i].index_query;
00060 return;
00061 }
00062
00063 std::vector<int> indices_before (nr_correspondences_before);
00064 for (int i = 0; i < nr_correspondences_before; ++i)
00065 indices_before[i] = correspondences_before[i].index_query;
00066
00067 std::vector<int> indices_after (nr_correspondences_after);
00068 for (int i = 0; i < nr_correspondences_after; ++i)
00069 indices_after[i] = correspondences_after[i].index_query;
00070
00071 if (presorting_required)
00072 {
00073 std::sort (indices_before.begin (), indices_before.end ());
00074 std::sort (indices_after.begin (), indices_after.end ());
00075 }
00076
00077 set_difference (
00078 indices_before.begin (), indices_before.end (),
00079 indices_after.begin (), indices_after.end (),
00080 inserter (indices, indices.begin ()));
00081 }